防止虚假表单向服务器发送数据

Smo*_*otQ 1 php forms ip

假设我有一个评论表单,我想防止坏用户复制表单html源代码,使用action属性在我网站外的其他地方使用它.

我该怎么办?

我有一个简单的想法,但我不知道它是否正常工作(即使我不知道使用什么PHP方法)

想法是在页面中添加一个变量$ ip,这个$ ip是php文件(和表单)的位置(可能使用$ _SERVER ['PHP_INFO']或其他)...然后将此变量发送到add.php使用POST方法但不在html代码源中显示的文件.

在add.php中,服务器将检查页面的ip是否等于服务器的ip地址,然后它将决定是否添加注释或终止操作.

我希望讨论这个问题

先感谢您

Wes*_*orp 8

您可以执行以下操作:

  1. 生成唯一的哈希.
  2. 将哈希值存储在会话中.
  3. 实现隐藏字段,将哈希值作为值.
  4. 检查提交页面上的哈希值.

  • 如果他们需要复制每个请求,他们也可以将其填入您的网站. (2认同)

els*_*ooo 5

这称为跨站点请求伪造(CSRF).Rails已经内置了这个.我不知道你正在使用什么PHP框架,但我知道CakePHP也内置了它.

如果你不使用PHP框架,或者你使用的框架没有这个功能,你可以只谷歌CSRF protection PHP并点击第二个链接(http://codeutopia.net/blog/2008/10/ 16 /如何对CSRF保护,所有的表单/).