Wie die Flucht Ausgabe in PHP
Ich bin ein newbie, nur klar zu sein. Ich höre viel über die Flucht von Daten XSS-Angriffe zu vermeiden. Wie kann ich eigentlich tun?
Dies ist, was ich Tue, derzeit
$s = mysqli_real_escape_string($connect,$_POST['name']));
Ist dies genug? Dank
- Sie müssen uns sagen, was Sie mit den Daten macht. Sind Sie auf einfügen in eine Datenbank? Oder Ausgabe auf einer web-site? Alles, was du mit den Daten machen, erfordert eine andere form der Abwasserentsorgung.
- sowohl....in einer Datei, die ich akzeptieren und einfügen...die anderen...ich Ausgang.
- Bedenkt, dass jetzt werde ich legen Sie die $s in der Datenbank. Ist es sicher genug?
- Es hängt davon ab. Sehen Sie einige der code, den Sie verwenden zum einfügen der Daten in die Datenbank
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie die Ausgabe der Daten in html, die Sie verwenden sollten htmlspecialchars()
sonst, wenn Sie die Speicherung der Daten in einer Datenbank sollten Sie die Flucht strings mit mysqli_real_escape_string() und cast zahlen (oder verwenden Sie vorbereitete Anweisungen, die für beide)
und schützen Bezeichner/Betreiber von whitelist-basiertes filtern whem.
Diese beiden Methoden sind alles, was Sie brauchen, wenn Sie Sie verwenden die richtige Art und Weise.
Sollten Sie verwenden htmlspecialchars für die Ausgabe eher als mysqli_real_escape_string.
<?=
oder etwas anderes.mysqli_real_escape_string($something)
oder$pdo->quote($something)
oder prepared statements. Wenn Sie eine Ausgabe nicht Vertrauenswürdige Daten an den Benutzer per echo etwas in die html-Seite, die er/Sie erhält, die Sie verwendenhtmlspecialchars($something, ENT_QUOTES);
Wenn Sie gerade erst anfangen, um das code gegen Angriffe (im Sinne SQL-Injection-Angriffe), Sie wird besser sein, zu überprüfen, out parametrisierte Abfragen. Was Sie im Grunde tun, ist Ihre separate Inhalte (Eingabe) der Kommandos (sql), so können Sie nie haben, Sie zu verwechseln mit einem möglichen mallicious Benutzer eingegebenen information, wie den Namen.
Können Sie versuchen, beginnend mit der
PDO
Klasse:Sie können beginnen, Lesen Sie die
PDO
Handbuch hier: http://php.net/manual/en/book.pdo.php und diese Seite hat ein schönes Beispiel: http://php.net/manual/en/pdo.prepared-statements.phpJedoch, Sie brauchen nicht zu verwenden
PDO
verwenden, können Siemysqli
auch, siehe http://php.net/manual/en/mysqli.prepare.phpWeil der name ist eine separate Wert ist, kann es nie einen SQL-Befehl, so dass Sie sicher sein automatisch.