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

Sind Drop-down-Auswahlfelder anfällig für jede Art von Injektion

Jedes einzelne Element einer Website kann von einem böswilligen Benutzer geändert werden (versteckte Felder, Divs, Stile, Ajax-Aufrufe, was auch immer...).

Wenn Sie jedoch bereits vorbereitete Anweisungen verwenden, sollten Sie sich nicht zu viele Gedanken über die SQL-Injektion machen, da mysql bereits weiß, welche Anweisungen ausgeführt werden.

Stattdessen sollten Sie die gesamte Ausgabe bereinigen, die auf einer Website gerendert wird.

Nehmen wir an, Sie fragen in Ihrem Formular, in welchem ​​Land ich so lebe:

 <select name="country">
     <option value="Mexico">Mexico</option>
     <option value="USA">USA</option>
     <option value="Canada">Canada</option>
 </select>

aber ich bin ein böswilliger Benutzer, und ich verwende den Code-Inspektor von Chrome, um Ihren HTML-Code zu ändern, und ich wähle Mexiko aus, ändere aber seinen Wert in

<script type="text/javascript">alert("Hello World");</script>

und wenn Sie diesen Wert auf einer anderen Seite auf diese Weise ausgeben:

 Your country is: <?=$country?>

Dann schreibst du:

 Your country is:
 <script type="text/javascript">alert("Hello World")</script>

und es erscheint ein Warnfeld mit dem Text „Hello World“

Was kann ich damit anrichten, fragen Sie sich vielleicht...

Nun, ich kann damit machen, was ich will, ich kann Cookies stehlen oder wenn dieser Wert öffentlich ist (sagen Sie, dass Sie diesen Wert auf Ihrer Startseite anzeigen), dann könnte ich Ihre Benutzer auf eine andere Website umleiten, den Inhalt Ihrer Website ändern. .was ich will.

Um die Ausgabe Ihrer Benutzer zu bereinigen, können Sie

verwenden

htmlentities

Das konvertiert zum Beispiel den &lt; > Symbole zum jeweiligen Code:&lt; und &gt