0

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

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

而且...请不要侮辱我或无礼...我知道我可能很愚蠢或其他什么,但我只是想学习!

4

1 回答 1

3

这就是Cross Site Request Forgery ( CSRF)同源策略沙箱旨在防止的。

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

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

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

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

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

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

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

于 2012-06-25T06:05:30.493 回答