1

このシンプルな形を想像してみてください

<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>

経由でアクセスされると想像してくださいform.php?hack=" onsubmit="alert('xss')

ソースを表示したときの出力は

<form action="/things/?hack=%22%20onsubmit=%22alert(%27xss%27)" method="post">

これをエンコードしているのは何ですか - それはブラウザですか、それとも PHP ですか?

好奇心の外では、私はいつも$_SERVER['REQUEST_URI']内に反響しますhtmlspecialchars()

4

2 に答える 2

2

これはブラウザによって行われます。PHPフレームワークを使用している場合は、ブラウザによっても変更されます。urlencodeこれは、PHPの関数を使用して行うことと似ています。

于 2010-03-03T13:06:28.763 に答える
1

form.php?hack=" onsubmit="alert('xss')ブラウザのアドレス フィールドに入力すると、URI にスペース文字が許可されていないため、 に変換さform.php?hack=%22%20onsubmit=%22alert(%27xss%27)れます。"したがって、それらはエンコードする必要があります。は'URI で使用できますが、エンコードすることもできます。

于 2010-03-03T13:14:54.773 に答える