Was ist die URL-Codierung Zeichen? Browser oder PHP?
-
24-09-2019 - |
Frage
Stellen Sie sich vor, diese einfache Form
<form action="<?php echo $_SERVER['REQUEST_URI']; ?>" method="post">
<fieldset>
<legend>Contact Me</legend>
<label for="email">Email:</label>
<input type="text" name="email" id="email" />
<button type="submit">Submit</button>
</fieldset>
</form>
Nun stellen wird zugegriffen über form.php?hack=" onsubmit="alert('xss')
Die Ausgabe, wenn ich sehe Quelle
<form action="/things/?hack=%22%20onsubmit=%22alert(%27xss%27)" method="post">
Was ist das Codieren - ist es der Browser oder PHP?
Außerhalb der Neugier, ich echo immer $_SERVER['REQUEST_URI']
innerhalb htmlspecialchars()
.
Lösung
Dies wird durch den Browser erfolgt, wenn Sie unter einem PHP-Framework sind, auch einige von ihnen verändern. Es ist ähnlich dem, was Sie PHP urlencode
Funktion kann verwendet wird.
Andere Tipps
Wenn Sie form.php?hack=" onsubmit="alert('xss')
in der Adresszeile Ihres Browsers eingeben, wandelt er es form.php?hack=%22%20onsubmit=%22alert(%27xss%27)
als die "
und Leerzeichen in einem URI nicht erlaubt. So müssen sie verschlüsselt werden. Die '
ist in URIs erlaubt aber auch codiert werden kann.