通过PHP阻止远程访问

时间:2012-06-25 05:55:54

标签: php javascript jquery mysql post

将其排除在外;我在php或数据库编程中经常做不了多少,所以我只是想在这个当前项目中格外小心。

基本上,我有一个由数据库驱动的站点,我有一些Jquery代码使用“post”方法插入行到数据库中。我一开始就对安全性有所了解,看到人们看不到我的PHP,但可以看到我的Javascript。一旦我完成了系统的设置,我就做了一个测试并运行jquery确实插入了信息,即使我在远程源上......这显然会导致可能出现的重大安全问题。所以像我一样未经精炼,我只是想知道如何防止这种情况并更好地保护系统?

并且......请不要侮辱我或者粗鲁......我明白我可能是愚蠢的或者其他什么,但我只是想学习!

1 个答案:

答案 0 :(得分:3)

这是Cross Site Request Forgery (CSRF)same origin policy sandbox旨在防止的内容。

从另一个角度来看,如何阻止某人在其网站上撰写表单并将其作为POST请求提交给您的脚本以添加垃圾记录?

通常,框架会提供CSRF保护。如果你想直接在PHP中实现它,那很简单。

  1. 从服务器的代码生成一个唯一的令牌,并将其添加到会话中。
  2. 将其作为隐藏字段嵌入表单中。
  3. 在接受表单的脚本上,检查是否存在此隐藏字段。
  4. 如果该字段存在,请将其与会话中的内容匹配(如果匹配) - 那么这是合法请求。

    如果它们不匹配(或字段丢失),那么它是一个远程请求,你可以拒绝它。

    This page提供了一些PHP代码来实现上述目的。

    完成后,您需要确保可以以相同的方式验证jquery脚本。 This snippet详细说明了在jquery中实现相同技术的步骤。