我有一个名为additem的php服务。
当有人在客户端提交表单时调用此服务。
如何确保该项在从预期窗体调用时只添加一个项?
例如,试图阻止某人通过自动curl调用提交内容。
谢谢您,
球座

最佳答案

简短的回答是,你不能。只要表单是可访问的,你用任何方法来确保表单都可以自动处理。你不应该指望用户发送的数据是安全的。然而,有一些事情你可以做,使事情更具挑战性的任何人想欺骗你的形式。
添加一个CAPTCHA可能会过滤掉几乎所有的脚本提交,但也会对普通用户产生最大的负面影响。
使用某种形式的CSRF保护(无论如何你都应该有)。这意味着任何想通过表单提交数据的人都必须先申请表单。如果此表单只能在登录墙后访问,这将使事情变得相当具有挑战性。
如果已经要求用户使用javascript,请在设置csrf保护密钥时尝试使用js。这意味着必须解析或执行js才能提交有效的表单。
过滤常见的用户代理,如curl和wget。
检查表单是通过邮寄方式发送的,而不是得到。
在服务器上添加速率限制以将提交限制到合理的级别。
检查http引用程序。很容易造假,但还要再跳一圈。
最后,如果有人想通过其他方式向您的表单提交数据,这仍然是可能的。上面的步骤可以使它更具挑战性,但是用户可以采取的任何动作都可以被脚本化,因此确保在服务器端有适当的验证。

10-08 08:40
查看更多