Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Muss ich mich vor SQL-Injection schützen, wenn ich eine Dropdown-Liste verwendet habe?

Ja, davor müssen Sie sich schützen.

Lassen Sie mich Ihnen anhand der Entwicklerkonsole von Firefox zeigen, warum:

Wenn Sie diese Daten nicht bereinigen, wird Ihre Datenbank zerstört. (Dies ist möglicherweise keine vollständig gültige SQL-Anweisung, aber ich hoffe, ich habe meinen Punkt rübergebracht.)

Nur weil Sie die verfügbaren Optionen in Ihrem Dropdown-Menü eingeschränkt haben, heißt das nicht Sie haben die Daten begrenzt, die ich an Ihren Server senden kann.

Wenn Sie versucht haben, dieses Nutzungsverhalten auf Ihrer Seite weiter einzuschränken, bestehen meine Optionen darin, dieses Verhalten zu deaktivieren oder einfach eine benutzerdefinierte HTTP-Anforderung an Ihren Server zu schreiben, die diese Formularübermittlung trotzdem imitiert. Es gibt ein Tool namens curl genau dafür verwendet, und ich glaube Der Befehl, diese SQL-Injektion trotzdem zu übermitteln, würde etwa so aussehen:

curl --data "size=%27%29%3B%20DROP%20TABLE%20*%3B%20--"  http://www.example.com/profile/save

(Dies ist möglicherweise kein vollständig gültiger Curl-Befehl, aber ich hoffe, ich habe meinen Standpunkt klar rübergebracht.)

Also, ich wiederhole:

Vertraue NIEMALS Benutzereingaben. Schützen Sie sich IMMER.

Gehen Sie nicht davon aus, dass Benutzereingaben jemals sicher sind. Es ist potenziell unsicher, selbst wenn es auf andere Weise als über ein Formular ankommt. Nichts davon ist jemals vertrauenswürdig genug, um darauf zu verzichten, sich vor SQL-Injection zu schützen.