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 框架下,其中一些也会更改它。它类似于您使用 PHP 的urlencode函数所做的事情。

于 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 回答