tye*_*tye 8 html javascript php ajax jquery
我正在构建一个浏览器游戏,我正在使用大量的ajax而不是页面刷新.我正在使用php和javascript.经过大量的工作,我注意到ajax并不完全安全.我担心的威胁是说有人想在我的SQL服务器上查找某些信息,他们只需要将正确的信息输入到与我的ajax调用关联的.php文件中.我正在使用GET样式的ajax调用,这是一个坏主意.无论如何,经过大量的研究,我有以下安全措施.我切换到POST(这不是更安全,但它是一个小问题).我有一个提到的地方,它也可以伪造,但又是另一种威慑力.
我已经到位的最后一个措施是这个问题的焦点,当我的网站被加载时,我生成并保存在会话中的80字符十六进制密钥,当我发送ajax调用时,我也发送了挑战密钥的形式
challenge= <?php $_SESSION["challenge"]; ?>
Run Code Online (Sandbox Code Playgroud)
现在当ajax php文件读取它时,它会检查发送的质询是否与会话质询相匹配.现在这本身不会做太多,因为你可以简单地打开萤火虫,看看容易发送什么挑战.所以我所做的就是一旦使用了挑战,它就会在会话中生成一个新挑战.
所以我的问题是这是多么安全,我站在它看起来只能看到挑战键发送后然后它更新,他们再也看不到它,直到它被发送,使得不可能发送伪造来自其他来源的请求.所以有人看到这个安全方法的任何循环漏洞或有任何额外的想法或想法.
mea*_*gar 10
您对"安全"的定义含糊不清.您似乎不太愿意阻止数据被截获,并且更有兴趣阻止人们向您的服务器提交自定义请求.这不是安全性,这只是良好的应用程序设计 - 您的程序不应该接受导致内部状态中断的请求.您无法阻止人们提交他们想要的任何数据.解决方案是验证他们在服务器端提交的数据,而不是试图阻止他们提交数据客户端,这将始终失败.
我切换到了POST
你不应该打扰; 这与安全无关.使用适合请求的任何HTTP谓词.你在查询信息吗?使用get请求.您正在更新/插入/删除信息吗?使用帖子.
说有人想在我的SQL服务器上查找某些人的信息,他们只需要将正确的信息输入我的.php文件关联
您应该对所有请求进行身份验证,以确保他们可以访问他们查询的数据.SSL将帮助您安全地执行身份验证.
当我的网站加载时,我生成并保存在会话中的80字符十六进制密钥,当我发送ajax调用时,我也发送挑战密钥
这没有用.您的问题的全部前提似乎是用户安装了Firebug或类似的HTTP调试工具.如果他们这样做,您的会话密钥将变得无用.
请参阅“meagar”的答案。
我想提一下:
通过在会话中传递标识符,您正在执行会话已经在执行的操作。通常有一个 cookie 具有与您生成的标识符类似的唯一标识符,它本质上告诉您的应用程序该人是谁。一般来说,这就是 PHP 会话的工作方式。
在这种情况下,您需要做的是检查对于给定的请求 - POST或GET - 特定用户(其唯一的用户 ID 或类似的 ID 存储在会话中)是否有权添加/更改/删除/无论有什么特定的要求。
因此,对于“搜索”请求,您只会返回用户 X 有权查看的结果。这样,您就不必担心他们发送的内容 - 如果用户无权执行某些操作,系统就知道不让他们执行该操作。
因此“您应该验证所有请求”。
有人可以随意补充这一点。
| 归档时间: |
|
| 查看次数: |
563 次 |
| 最近记录: |