阻止通过 PHP 进行远程访问


Blocking remote access through PHP

把这个排除在外;我不经常在php或数据库编程方面做太多事情,所以我只是想在当前的项目中格外小心。

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

和。。。请不要侮辱我或粗鲁...我知道我可能很愚蠢或其他什么,但我只是想学习!

这就是跨站点请求伪造 (CSRF ) 和同源策略沙箱旨在防止的内容。

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

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

  1. 从服务器代码生成唯一令牌,并将其添加到会话中。
  2. 将其作为隐藏字段嵌入到表单中。
  3. 在接受表单的脚本上,检查是否存在此隐藏字段。
如果

该字段存在,请将其与会话中的内容进行匹配,如果它们匹配 - 则它是合法请求。

如果它们不匹配(或缺少字段),则这是一个远程请求,您可以拒绝它。

本页提供了一些 PHP 代码来实现上述内容。

完成此操作后,您需要确保 jquery 脚本可以以相同的方式进行身份验证。本片段详细介绍了在 jquery 中实现相同技术的步骤。