Frage

Ich war in einem vorherige Frage gesagt , dass meine Frage ist anfällig für SQL-Injections.

get_stats = mysql_query("SELECT * 
                               FROM visitors 
                              WHERE site='$_GET[site]' 
                                AND date BETWEEN '$start_date' AND '$end_date' ");

Was wäre der einfachste Weg, um dieses Problem zu nähern? Und haben Sie einige weitere zum Thema Injektionen zu lesen? (Etwas, das ich auf Google verpassen könnte). Dank!

War es hilfreich?

Lösung

Verwenden Sie Prepared Statements .

In den meisten Fällen Prepared Statements die Arbeit macht Ihre Abfrage mit Parametern zu kombinieren, in einer sicheren Weise.

Andere Tipps

$ _ GET [ ‚site‘] ist ein Wert, der gerade von der URL im Browser kommt, die ein Anwender bedeutet einfach, diesen Wert zu etwas ändern könnten sie wollen, sollten Sie / Check diesen Wert sanieren, alle Werte tatsächlich vor dem Senden in einer Datenbank.

So etwas wäre ein Anfang, noch mehr Arbeit nutzen könnte, und es gibt viele Möglichkeiten, es zu tun, und ich habe eine benutzerdefinierte Funktion / Klasse erstellen, um einfach alle Variablen durch Site-weiten Pass, kann einfach wiederholende Sachen wie diese

$site = mysql_real_escape_string($_GET['site']);
$start_date = mysql_real_escape_string($start_date);
$end_date = mysql_real_escape_string($end_date);

get_stats = mysql_query("SELECT * FROM visitors WHERE site='$site' AND date >= '$start_date' AND date <= '$end_date' ");

mysql_real_escape_string ist die grundlegendste und einfachste Form der Sicherheit hier.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top