【发布时间】:2013-03-15 01:53:13
【问题描述】:
我一直在阅读有关表单欺骗的内容,只是不明白为什么当我们可以确保传递的值得到正确验证时防止它如此重要?也许我在这里遗漏了一些东西,但这里有一个例子:
example.org/form.html:
<form method="post" action="post.php">
<input type="text" name="content" value="something">
<input type="submit" name="post" value="Post">
</form>
example.org/post.php:
if (isset($_POST['content']))
{
$content = filter_var($_POST['content'], FILTER_SANITIZE_STRING);
//use $content as a sanitized variable, pass it to a database, etc.
}
恶意用户可以简单地将 form.html 中的输入字段更改为,例如,<textarea name="content">something here</textarea>,但这会产生什么影响呢?我们确保无论如何都会从 post.php 脚本中的字符串中删除标签。
所以这是我的问题:假设通过适当的输入验证,PHP 表单欺骗在安全性方面应该几乎没有危险,这是否安全?恶意用户还能通过name="content" 属性(除了textarea、select 和所有其他标签)向脚本传递什么可以有效地削弱数据库或其他东西?因为如果他们无能为力,为什么还要使用令牌?
【问题讨论】:
-
我知道 CSRF 攻击,但是,我仍然觉得很难掌握 如何 它会引起关注?为什么适当的验证和清理还不够?
标签: php forms validation sanitization spoofing