Ich weiß, dass das doppelte Anführungszeichen in der URL nicht erlaubt ist und es als %22
kodiert ist und dies mit utf-8 encoding gemacht wird. Aber was passiert, wenn ich einen Browser erstelle, der keine URL-Codierung durchführt und Abfragen mit den doppelten Anführungszeichen selbst durchführt, wie es im utf-8-Codierungsschema erlaubt ist. Zum Beispiel: www.google.com/"a"
. Was passiert mit dem URL-Parsing-Skript auf dem Server, wenn es auf ein Anführungszeichen trifft?
Da Sie einen ungültigen URI an den Server übergeben, antwortet der Server möglicherweise mit HTTP 400 Bad Request
status, möglicherweise jedoch nicht. Unterschiedliche Server verhalten sich dabei unterschiedlich. Zum Beispiel antwortet der Apache 2.4 Server mit 403 Forbidden
. Es scheint, dass sie es als Versuch der SQL-Injektion erkennen und es sofort unterdrücken. Die Nginx-Server antworten mit 404 Not Found
.
Sie müssen keinen Browser erstellen, der keine URL-Codierung zum Überprüfen durchführt. Sie können diese Abfrage über ein einfaches Telnet-Programm ausführen, das Teil der meisten Betriebssysteme ist (aber möglicherweise nicht standardmäßig installiert ist). Wenn es installiert ist, müssen Sie nur telnet www.google.com 80
im Terminal-Fenster ausführen und folgende 2 Zeilen einfügen:
und drücken Sie zweimal die Eingabetaste. Sie erhalten eine Antwort mit 404 Not Found
. Wenn Sie das Gleiche mit stackoverflow.com tun, lautet die Antwort 400 Bad Request
.
Tags und Links javascript html php