如何防止POST方法的黑客攻击

时间:2011-02-03 07:04:50

标签: php xss http-post

我有一个使用$ _POST变量存储到数据库的脚本。

有些用户试图通过制作自己的帖子表单方法或使用curl将post变量和值发送到服务器来欺骗系统。

如何防止此次攻击?

谢谢

5 个答案:

答案 0 :(得分:4)

预防是不可能的(POST安全是一个过于简单化的神话)。您必须使用各种方法验证传入的数据:

  • CSRF代币帮助对抗任意形式提交机器人(但不反对手工篡改)
  • 枚举预期的表单值,assert()表示所有表单都存在并且没有显示无关的字段
  • 清理并过滤预期值。我使用$_POST->text->in_array("field", "abc,def,xyz")例如

答案 1 :(得分:0)

没有办法阻止人们发出任意HTTP请求。

你如何为自己辩护取决于请求的内容是什么以及它构成攻击的原因。

答案 2 :(得分:0)

您可以确保POST是通过验证码保护来自您的表单,或者您可以清理每个$ _POST变量并拒绝整个POST数据(如果它不符合标准)。

答案 3 :(得分:0)

POST请求不是100%安全的。这仅表示数据存储在HTTP(s)请求的正文中。对于GET请求,数据存储在URL中。鼓励使用POST请求发送敏感数据。

由于数据存储在POST请求的正文中,而不是URL中,因此您的敏感数据无法添加为书签。此外,如果未正确定义引荐来源标头,则还可以将URL中存储的敏感数据转移到恶意网站。

如果您使用的是HTTP协议而不是HTTPS协议,那么

POST请求可能会被黑。攻击者所需要做的就是在中间攻击中执行一次操作(嗅探在客户端和服务器之间传输的数据包)。一旦捕获到数据包,攻击者便可以轻松查看存储在POST请求正文中的数据。

答案 4 :(得分:-1)

此攻击的名称为“SQL注入”。保护它并不太难。如果您的值是字符串,请使用magic_quotes,如果您的值是数字,则使用过滤器会跳过onlu数字。