php - Ajax 安全(我希望)

标签 php javascript jquery html ajax

我正在构建一个浏览器游戏,我使用了大量的 ajax 而不是页面刷新。我正在使用 php 和 javascript。经过大量工作后,我注意到 ajax 并不十分安全。我担心的威胁是说有人想在我的 SQL 服务器上查找某人的信息,他们只需要将正确的信息键入与我的 ajax 调用关联的 .php 文件。我使用的是 GET 样式的 ajax 调用,这是个坏主意。无论如何,经过大量研究后,我已经采取了以下安全措施。我切换到 POST(这实际上并没有更安全,但它的威慑力很小)。我也有一个被引用的地方,它也可以被伪造,但它又是另一个威慑力。

我采取的最终措施是这个问题的重点,当我的网站加载时,我在 session 中生成并保存了一个 80 个字符的十六进制 key ,当我发送 ajax 调用时,我也发送了挑战键的形式为

challenge= <?php $_SESSION["challenge"]; ?>

现在,当 ajax php 文件读取此文件时,它会检查发送的质询是否与 session 质询相匹配。现在这本身不会做太多,因为您可以简单地打开 Firebug 并轻松查看正在发送的挑战。所以我让它做的是,一旦使用该挑战,它就会在 session 中生成一个新挑战。

所以我的问题是,从我的立场来看,这有多安全,看起来人们只能看到发送后的挑战 key 是什么,然后它会更新,并且在发送之前他们无法再次看到它,因此无法从另一个来源发送伪造的请求。因此,是否有人看到此安全方法有任何漏洞或有任何其他想法或想法。

最佳答案

您对“安全”的定义含糊不清。您似乎对防止数据被拦截不太感兴趣,而对防止人们向您的服务器提交自定义请求更感兴趣。那不是安全,那只是良好的应用程序设计——您的程序不应接受导致内部状态中断的请求。您绝对无法阻止人们提交他们想要的任何数据。解决方案是验证他们在服务器端提交的数据,而不是试图阻止他们在客户端提交数据,这总是会失败。

I switched to POST

你不应该打扰;这与安全无关。使用适合请求的 HTTP 动词。你在查询信息吗?使用获取请求。你在更新/插入/删除信息吗?使用帖子。

say someone wants to look up someones information on my SQL server they'd just need to key in right information to my .php file associated

您应该对所有请求进行身份验证,以确保它们可以访问正在查询的数据。 SSL 将帮助您安全地执行身份验证。

when my website is loaded i have a 80 char hex key generated and saved in the session, and when im sending the ajax call i am also sending the challenge key

这不会有帮助。您的问题的整个前提似乎是用户安装了 Firebug 或类似的 HTTP 调试工具。如果他们这样做,您的 session key 将变得毫无用处。

关于php - Ajax 安全(我希望),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5339527/

相关文章:

PHP 函数检查函数外部是否存在变量

javascript - 如何使用 JQUERY 从 JSON 数组对象获取数据?

JavaScript/jQuery 加载器数学问题

php - 无法获取等于 0 的数据

php - 使用PDO在WHERE中选择在PHP中进行准备

php - php explode 并强制数组键从1开始而不是0

javascript - 如何重复通过ajax检索数据的文本字段

javascript - Angularjs 1.5 - 使用服务的组件通信 - 异步变量操作?

javascript - 通过javascript计算文件夹中的文件数

jquery - 如何使用 jQuery 验证 DOM 中是否存在元素?