Moa*_*Plz 3 php security authentication web-services
因此,在游戏中,我希望能够让客户端(Web浏览器)和服务器之间的所有功能通过AJAX调用与PHP Web服务进行交互.这是实现此类功能的一种非常简单的方法,除了它有一些主要缺点:
因此,为了解决这些问题中的第一个问题,我将使用与服务器的HTTPS连接(这是我如何实现SSL的正确性?),对于这两个问题中的第二个,我能想到的是混淆/最小化我的Javascript码.
有没有人对我如何验证我的PHP文件正在使用的Web服务调用有任何想法?如果我在客户端使用用户名/ PW,则攻击者只需查看Javascript文件即可查找凭据.如果我尝试使用IP地址作为一种身份验证方法,那么我觉得这只会打开另外一堆蠕虫.我基本上想确保Web服务调用来自游戏客户端.
Sneaky:在游戏情况下验证用户生成内容的真实性并不容易.我建议在JavaScript和服务器之间发送混乱的乱码命令.例如,如果您要将用户的x坐标发送到服务器而不是:
ajax.send('userXLocation=80');
Run Code Online (Sandbox Code Playgroud)
尝试一些不是简单英语的东西:
ajax.send('J{};;%FI=80');
Run Code Online (Sandbox Code Playgroud)
肯定不是防弹,但是如果用一些好的JS缩小/混淆,用户将难以区分发送的命令,如果他们能够理解的是数字.在您的JS代码中,乱码必须是硬编码的,但在PHP中,您可以使用一个将乱码映射到实际命令的数组.
额外鬼鬼祟祟:使用固定长度预先插入的数字作为命令,而不是乱码.用户X移动到80可能是:24080
Sneaky:您还可以尝试偶尔发送一个唯一的会话标识符(类似于半公钥),并指示JS使用该会话标识符对所有消息进行编码.这可能会被破解,但它增加了任何破解尝试的时间.
额外偷偷摸摸:这个会话标识符可能是服务器最后一次响应的文本,所以每次请求都会改变,但黑客不会看到任何明显的消息告诉JS密钥已经改变.这将只是JS和PHP之间无害的沟通.
Sneaky:这是另一个临时解决方案,但是为了混淆数字,您可以决定在发送之前添加或减去每个数字的常量(可能是会话中唯一的一个).因此,如果黑客知道他在X位置80并且寻找包含80的通信他/她将不会看到任何因为JS和PHP已经决定在每个数字上添加5.85将能够通过未被发现的.
Super Sneaky:与上面类似,不是同意数字混淆常量,而是使用服务器最后发送给JS的数字.黑客再次感到困惑,为什么数字不断变化,但没有消息通知JS改变其数字.
Sneaky:再次暂时,但是当混淆代码尝试混合逻辑与基础东西(创建一个ajax对象)时,即使对于Chrome黑客的漂亮打印也会发现你的代码难以破译.要考虑的其他事情可能是完全放弃在帖子中放置变量.它不会持续很长时间,但通过cookie(将与ajax请求一起发送)传递命令将是偷偷摸摸的.为了更加偷偷摸摸,你可以让PHP和JavaScript决定何时在post和cookie通信之间来回切换,或者只使用post来表示非敏感的东西.
超级偷偷摸摸:将核心游戏逻辑和通信放在一个名为的文件中jquery-1.6.2.min.js.我保证大多数试图破解你的脚本的人会忽略它.
Ninja Worthy:如果您选择在cookie和发布请求之间切换,请在未使用的传输上创建蜜罐.因此,在PHP发送响应后说:"嘿,让我们转向cookie!" 和JavaScript说,"当然,"PHP应该监听通过POST进行通信的尝试.它应该假设,因为JS正在通过cookie进行通信(现在)如果尝试发布请求,则涉及一些黑客行为.然后它应该用"你被破坏"的消息吓唬用户,甚至暂时禁止.这当然应该在他们切换回POST通信时翻转.
超越忍者:您还可以发送与POST/Cookie相同的GET请求,这些请求将永久保存为蜂蜜.如果GET和POST/COOKIE之间存在差异,那么黑客就会认为它就像更改一些获取变量一样简单,并且您可以显示相同的"你被抓住"消息,可能会暂时或永久禁止你的游戏.
最后几件事:
| 归档时间: |
|
| 查看次数: |
3327 次 |
| 最近记录: |