为了进一步了解数据过滤的必要,思考下面这个表单(假想的):
http://example.org/form.html:
<form action="/process.php" method="POST">
<select name="color">
<option value="red">red</option>
<option value="green">green</option>
<option value="blue">blue</option>
</select>
<input type="submit" />
</form>
设想一个攻击者保存了这段 HTML 并修改为:
<form action="http://example.org/process.php" method="POST">
<input type="text" name="color" />
<input type="submit" />
</form>
这个新的表单可以存放在任何地方(web 服务器并不是必须的,只要浏览器可以访问的即可),并可以随意使用。action 属性设定的绝对 URL 将 POST 请求发到相同的地方。
这使得去除客户端限制变得非常容易,不论是表单限制或者客户端脚本进行的最基本的数据过滤。在这个例子中,$_POST['color'] 不再被限制为 red,green 或 blue。通过一个非常简单的操作,任何用户都可以创建一个合适的表单用于提交任意数据到表单中的 URL。