解决这个问题;我不经常在 php 或数据库编程方面做太多事情,所以我只是想在当前的项目中格外小心。
基本上,我有一个由数据库支持的站点,并且有一些 Jquery 代码,它们使用“post”方法插入行到数据库中。我一开始就对安全性产生了想法,因为人们看不到我的 php,但可以看到我的 Javascript。一旦我完成系统设置,我就做了一个测试,运行 jquery 确实会插入信息,即使我在远程源上......这显然会导致可能的重大安全问题。所以像我这样不成熟的人,我只是想知道我应该如何防止这种情况并更好地保护系统?
还有...请不要侮辱我或无礼...我知道我可能很愚蠢或其他什么,但我只是想学习!
最佳答案
这就是 Cross Site Request Forgery (CSRF
)和 same origin policy sandbox旨在防止。
从另一个 Angular 来看,如何阻止某人在其网站上编写表单并将其作为 POST 请求提交给您的脚本以添加垃圾记录?
通常,CSRF 保护由您的框架提供。如果你想直接用PHP实现,非常简单。
- 根据服务器代码生成一个唯一 token ,并将其添加到 session 中。
- 将其作为隐藏字段嵌入表单中。
- 在接受表单的脚本上,检查是否存在此隐藏字段。
如果该字段存在,请将其与 session 中的内容进行匹配,如果匹配,则这是一个合法的请求。
如果它们不匹配(或者该字段丢失),那么它是一个远程请求,您可以拒绝它。
This page提供了一些PHP代码来实现上述内容。
完成此操作后,您需要确保 jquery 脚本可以通过相同的方式进行身份验证。 This snippet详细介绍了在 jquery 中实现相同技术的步骤。
关于php - 阻止通过 PHP 进行远程访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11184094/