echo $begrüßung;
- Kritische Zeichen verhindern wie z.B.: "<"
Sven sprach es ja schon an: Wenn du Daten in einen bestimmten Kontext bringen möchtes musst du sie dem Kontext entsprechend behandeln. Bringst du Daten in den HTML-Kontext - sprich: gibst du sie in ein HTML-Dokument aus - musst du die HTML-eigenen Zeichen beachten. Für eine URL gelten wieder andere Regeln, für SQL-Statement ebenfalls, noch dazu für jedes Datenbank-System eigene, usw. usf. PHP bietet für die gängigsten Fälle bereits Funktionen an, die du nur noch nutzen musst: htmlspecialchars(), url_encode(), mysql_real_escape_string(), usw.
Schwierig für einen Anfänger ist nur, den Kontextwechsel zu erkennen. Dagegen hilft nur, Erfahrung zu sammeln.
- Zwangsumwandlung von Variablentypen durch eine php-Funktion (was
immer das heißen mag)
Wenn du in einem Eingabefeld einen Zahlenwert erwartest, dann prüfe dies, bevor du die Eingabe an andere Prozesse weitergibst. Eingabefelder, bzw. $_GET und $_POST, liefern nämlich generell Strings aus. Mit Zwangsumwandlung sind hier sicher Funktionen wie intval() oder eine Typumwandlung (Typecast) gemeint.
- Nicht direkt inkluden, sondern:
<?php if($var == "bla") include("bla.php");
Oder allgemein gesagt, prüfe deine Eingabewerte gegen eine List der erlaubten und erwarteten Werte, bevor du damit weiterarbeitest.
Beliebt sind auch Zeilenumbrüche in ansonsten einzeiligen Eingabefeldern.
Nichts hindert einen Angreifer, völlig beliebige und unerwartete Daten an deine Scripte zu schicken. Versuche dies im Hinterkopf zu behalten. In der Testphase sollte man versuchen, seine eigenen Script zu Fehlverhalten zu bringen. Teste nicht nur den Gutfall, spiele auch mal Fehler durch. Z.B.: Gib alle möglichen und unmöglichen Sonderzeichen in deine Eingabefelder ein und teste, ob dein Script so robust ist, sich davon nicht irritieren zu lassen. Wenn du das nicht machst, macht es garantiert früher oder später jemand anderes.
echo "$verabschiedung $name";