【发布时间】:2011-07-01 21:59:04
【问题描述】:
我有一个名为 addItem 的 PHP 服务。
当有人在客户端提交表单时调用此服务。
我怎样才能确保只有在从预期表单调用时才会添加项目?
例如,试图阻止某人通过自动 curl 调用提交内容。
谢谢你,
三通
【问题讨论】:
-
用表单发送浏览器数据?可以伪造,但它是什么。
我有一个名为 addItem 的 PHP 服务。
当有人在客户端提交表单时调用此服务。
我怎样才能确保只有在从预期表单调用时才会添加项目?
例如,试图阻止某人通过自动 curl 调用提交内容。
谢谢你,
三通
【问题讨论】:
简短的回答是你不能。只要表单是可访问的,您用来保护表单的任何方法都可以自动处理。您永远不应该指望用户发送的数据是安全的。但是,您可以做一些事情来让想要欺骗您的表单的人更具挑战性。
最终,如果有人想通过其他方式将数据提交到您的表单,这仍然是可能的。上述步骤可能会使其更具挑战性,但用户可以执行的任何操作始终可以编写脚本,因此请确保在服务器端进行适当的验证。
【讨论】:
atl_token)。 confluence.atlassian.com/display/JIRA/Form+Token+Handling
这篇文章有一个很好的答案:CSRF (Cross-site request forgery) attack example and prevention in PHP
基本思想是你想在表单中生成一些带有随机数的表单元素,并确保表单发回相同的元素。示例:
<form ...>
<input name="csrf_dfjfi4i4i4k3" value="csrf_dfjfi4i4i4k3" type="hidden" />
现在,当您收到帖子时,请确保该元素存在并且值与名称相同。
【讨论】: