dedlfix: Datenbankabfrage richtig sortieren - WAS dann WOHIN schreiben??

Beitrag lesen

echo $begrüßung;

$query_Recordset3 = "SELECT * FROM Download WHERE PNr=".$_GET["selectedNr"] ;
Aha. Und wenn ich Deinem Skript nun "0; DROP TABLE Download;" als GET-Parameter "selectedNr" mitgebe?

Dann beschwert sich mysql_query() nur über die Syntax. Pro mysql_query()-Aufruf kann nur genau ein SQL-Statement abgearbeitet werden. Dein Beispiel einer SQL-Injection funktioniert so nicht.

Merke: "ALL INPUT IS EVIL!" - behandle Benutzereingaben IMMER mit Vorsicht und maskiere Variablen IMMER kontextsensitiv:
$query_Recordset3 = "SELECT * FROM Download WHERE PNr='".mysql_real_escape_string($_GET['selectedNr'])."'";

Auch wenn das DROP-Beispiel nicht funktioniert ist die Behandlung von Eingabewerten gemäß Kontext vorzunehmen, denn es gibt noch genügend Möglichkeiten, wie man ein einzelnes SQL-Statement per SQL-Injection etwas anderes ausführen lassen kann als vom Programmierer vorgesehen. Bestenfalls führt es nur zu einem Syntax-Error:

SELECT * FROM table WHERE name='O'Brien' <- nach dem O' hört der String auf.

echo "$verabschiedung $name";