我通过PHP使用通过ajax发送的数据更新数据库。有没有办法判断发送数据的脚本是否被包含它的页面调用(远程托管),或者只是被某人检查过我的JS控制台?#34;检查了我的数据元素"并尝试拉快速?
提前致谢...
丹尼
答案 0 :(得分:2)
他们之间真的没有办法说出来,但是你可以更加努力地完成工作 但是,既然你说'它不会开始战争',那么,有一些方法可以“保护”它。
第1步:创建“验证”电话
如果你还没有,那么第一步就是实现一些初步的AJAX调用来检索稍后在后面的调用中使用的某些变量,例如:
Security-Token
Security-Token-2
Security-Token
Security-Token-2
来调用您的php脚本
醇>
您的网页会做什么,会使用存储在Cookie中的“令牌”解密发送的文本并使用它。
第2步:在javascript中添加额外的逻辑
您可以在javascript中添加一些编码 - 解码逻辑,
我不是说这很难打破,但它可能很难,特别是如果你混淆你的代码(我们都知道混淆不好,但请耐心等待我)
第3步:不要保留任何名称
您可以做的另一件事是从AJAX变量中删除所有名称,或者更好的是,名称每次都可以不同
如果你想更进一步,你可以加密名称,加上加密通过引入 IV 添加随机组件,并将 IV 存储在cookie中(甚至可能编码以增加安全性)。
(编辑)找到了我正在寻找的“动态名称生成”解决方案:
Dynamic Field Names in PHP
该解决方案最初设计用于对抗“自动填充”某些字段的垃圾邮件,如果字段名称看起来是随机的,则不知道哪些字段是“陷阱”,但是您可以使用它来生成AJAX调用的名称。
最终,总是可能破解,所有人需要的是足够的时间和金钱。
答案 1 :(得分:1)
This是由phpcademy(现在的codecourse)提供的youtube指南,它彻底解释了如何在PHP中阻止CSRF(Cross Site Request Forgery)。
它涉及每次提交表单时生成新的随机令牌。 然后检查是否已发布令牌。如果没有,请求不是真实的。
编辑:您不必担心人们在检查页面时会看到令牌,因为您有自己的(服务器端)验证令牌的方式。