使用Javascript XmlHttpRequest和PHP保护Web服务调用
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了使用Javascript XmlHttpRequest和PHP保护Web服务调用,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3778字,纯文字阅读大概需要6分钟。
内容图文
![使用Javascript XmlHttpRequest和PHP保护Web服务调用](/upload/InfoBanner/zyjiaocheng/743/befed4f834f84c119d33d2d5a4e2918f.jpg)
因此,在游戏中,我希望能够让客户端(Web浏览器)和服务器之间的所有功能通过AJAX调用与PHP Web服务进行交互.这是实现此类功能的一种非常简单的方法,除了它有一些主要缺点:
>使用网络嗅探器的任何人都可以看到请求的格式(除非他们使用SSL)并复制它们
>使用浏览器玩游戏的任何人都可以查看包含的Javascript文件,看看提交XHR的情况
因此,为了解决这些问题中的第一个问题,我将使用与服务器的HTTPS连接(这是我如何实现SSL的正确性?),对于这两个问题中的第二个,我能想到的是混淆/最小化我的Javascript码.
有没有人对我如何验证我的PHP文件正在使用的Web服务调用有任何想法?如果我在客户端使用用户名/ PW,则攻击者只需查看Javascript文件即可查找凭据.如果我尝试使用IP地址作为一种身份验证方法,那么我觉得这只会打开另外一堆蠕虫.我基本上想确保Web服务调用来自游戏客户端.
解决方法:
Sneaky:在游戏情况下验证用户生成内容的真实性并不容易.我建议在JavaScript和服务器之间发送混乱的乱码命令.例如,如果您要将用户的x坐标发送到服务器而不是:
ajax.send('userXLocation=80');
尝试一些不是简单英语的东西:
ajax.send('J{};;%FI=80');
当然不是防弹,但是如果用一些好的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之间存在差异,那么黑客就会认为它就像更改一些获取变量一样简单,并且您可以显示相同的“你被抓住”消息,可能会暂时或永久禁止你的游戏.
最后几件事:
>利用新的网络技术.如果可用,您可以使用Web套接字作为传输,使其成为蜜罐四方(WebSockets,POST,Cookies和GET).您还可以使用Web worker隐藏特殊代码的执行.虽然您可以为工作人员打开JS文件,但我无论如何都不知道从控制台或FireBug直接访问worker的范围.
>使用愚蠢的黑客对您有利.置于黑客所期望的愚蠢事物中.如果某些安全措施看起来很糟糕或容易破解,那么黑客可能会变得孤独或认为你是一个糟糕的程序员.然后,他们会继续搞乱像蜜罐运输系统这样的事情并被破坏!
>最后,始终关注奇怪的请求模式.如果一个玩家的最大速度是每秒10个像素,但是在两个请求中,彼此间隔只有一秒,行进的距离是20个像素,PHP应该知道某些东西已经上升.您甚至可以允许PHP跟踪消息操作&通过发送快速AJAX消息发送时间说嘿我将要发送消息.如果用户篡改实际消息,则第一消息和包含数据的消息之间的时间将在许多秒内变化. PHP可以监视这一点,因为它通常不需要计算机5秒来处理数据和发送AJAX请求.
内容总结
以上是互联网集市为您收集整理的使用Javascript XmlHttpRequest和PHP保护Web服务调用全部内容,希望文章能够帮你解决使用Javascript XmlHttpRequest和PHP保护Web服务调用所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。