Logo Wissenstransfer Gerhard at CichnaDotCom

>> Wissensdatenbank / PHP

Parameter

Parameter am Backend auslesen

var_dump($_GET);
Die Parameter werden über die URL übermittelt:
index.php?id=hallo-welt
index.php?id=hallo-welt&name=Max

Query-String bauen

Backendseitig mittels Query-Builder

$query = http_build_query(['name' => 'Max & Moritz!']);

Frontendseitig mittels Formular per $_GET

<form action="05-formulare.php" method="GET">
  <input type="text" name="firstname" value="<?php if (!empty($_GET['firstname'])) echo $_GET['firstname']?>" /> /* Achtung Sicherheitslücke!! */
  <input type="submit" value="Abschicken!" />
</form>

Übertragene Daten werden in der URL angezeigt!

Frontendseitig mittels Formular per $_POST

<form action="05-formulare.php" method="POST">
  <input type="text" name="firstname" value="<?php if (!empty($_POST['firstname'])) echo $_POST['firstname']?>" /> /* Achtung Sicherheitslücke!! */
  <input type="submit" value="Abschicken!" />
</form>

Übertragene Daten werden in der URL nicht angezeigt!

Am Backend wird nun mittels $_POST zugegriffen.

Cross-Site-Scripting (XSS)-Attacke

Über die URL wird als Parameter ausführbarer Code an den Backend geschickt bzw. auf eine andere Seite weitergeleitet.

Behebungsmöglichkeiten

echo strip_tags($_GET['name']);
strip_tags entfernt sämtliche HTML-Tags aus dem Parameter.

function e($html) {
  return htmlspecialchars($html, ENT_QUOTES, 'UTF-8', true);
}
Alle Klammern und Sonderzeichen werden codiert und somit ist die Eingabe nicht mehr ausführbar!