我有一个我正在创建的社交网络,并且有一个安全问题。我有能力在网站上有朋友,当你请求朋友时,它将是一个使用jQuery运行AJAX脚本的按钮。
我知道javascript很容易被黑客攻击,并且在这里阅读http://www.acunetix.com/websitesecurity/ajax.htm,AJAX并不像看起来那样安全。他们声称“由于XML HTTP请求使用与Web上其他所有协议相同的协议(HTTP),从技术上讲,基于AJAX的Web应用程序容易受到与”普通“应用程序相同的黑客攻击方法的影响。
所以基本上我不希望蠕虫通过我的AJAX功能继续运行朋友请求,并且有人在网站上签名并且他们有1400万个朋友请求。这也是我在网站上运行的其他几个AJAX脚本的问题。我的问题是,我应该保持服务器端的一切。我正在使用php所以,如果每个朋友请求只是重新加载页面,我想避免这样的事情? 非常感谢任何帮助。
答案 0 :(得分:5)
如果你有安全问题,它们并不是ajax独有的,但有一些简单的方法可以让事情变得更加困难。
1)正如Diodeus所说 - 绝对不要让人们在没有通过会话进行身份验证的情况下使用您的服务。与要求您登录的网站上的任何其他页面相同。
2)通过将客户信息嵌入会话密钥(cookie)并在服务器上验证它来使会话劫持更加困难,例如: IP地址,浏览器版本。不过,这仍然可以被欺骗。
3)如果特定会话在特定时间段内(例如每分钟10次)发出超过x个请求,请将其注销并禁止它们一小时。设置更高的限制以禁止它们直到由管理员恢复。如果发生这种情况,请让代码自己发送电子邮件,以便了解您是否遇到过问题。
4)如果您真的很担心,请使用SSL。这实际上是绝对防止会话劫持的唯一方法(除了为会话数据实现自己的私钥加密机制)。
5)如果不使用SSL,您无法阻止会话劫持的可能性,但您可以保护用户的密码不被轻易窥探。进行身份验证时,请执行以下操作:
这样,观看会话的人只能看到哈希密码,并且由于哈希每次都不同,他们实际上无法使用针对您服务的哈希再次登录。您仍然无法阻止他们劫持会话,但您可以阻止他们查看您的用户密码或者能够自己登录。
实际上,会话劫持并不是那么常见,尽管高调的实现当然是通过wifi的facebook。如果有人拿出一个Firefox插件来破解你的社交网络,那么你应该感到激动,因为你知道你已经成功了。
答案 1 :(得分:1)
这些不是AJAX特有的问题。它归结为检查和清理您的数据。我假设用户必须先注册/登录才能添加好朋友(毕竟,你怎么跟踪谁和谁的朋友?)所以这里有一些明显的要点:
还有更多,但这些应该让你开始。
答案 2 :(得分:0)
在客户端上设置登录cookie。使用ajax请求发送cookie值并在服务器上验证它。
答案 3 :(得分:0)
我不确定我是否完全理解,因为如果有一些蠕虫或任何提交AJAX请求的内容,为什么同一个蠕虫不会发出非ajax请求?
无论哪种方式,您都应该进行服务器端验证以确保请求有效。是否要对可以发出的好友请求数进行一些验证与您是否使用ajax无关。
答案 4 :(得分:-1)
真的没有AJAX这样的东西。术语AJAX是对组织事物的一种方式的一般描述。所谓的“AJAX”请求只是一个HTTP GET或PUT。