如果不使用SSL,什么';这是向PHP页面发出AJAX请求的最安全的方法


Without using SSL, what's the most secure way to make an AJAX request to a PHP page?

因此,如果不使用SSL,就不可能安全地执行AJAX请求。我明白了。你可以查看通过Javascript发送的数据源,也可以通过伪造标题直接访问PHP页面,yada yada。

但假设这个web应用程序并不特别需要真正的安全性,相反,它只是一种让大多数逆向工程师望而却步的游戏。我应该使用什么样的障碍?

我不是在寻找加密算法的一些荒谬的超高级Javascript实现。我想要简单和温和的安全。。。如果这不是本质上的矛盾。那么,你们会推荐什么呢?

例如,我正在运行一个竞赛,如果用户成功地点击了一个图像(jQuery),它会将他们的用户ID和时间戳传递到一个PHP页面,这两个页面都是用随机数据加盐的MD5,然后用MIME编码。然后,PHP页面验证这个用户ID和时间戳,然后以另一个加盐的MD5哈希的形式返回一个获胜的"代码"。我还使用了多个标头检查来帮助确保请求来自有效位置。我是不是错过了什么,或者这就是我能做的全部?似乎有人可以触发jQuery点击事件并破坏整个事件,但我不知道如何防止这种情况发生。

我将把答案授予任何一个想出巧妙的虚假安全机制的人!或只要有人告诉我这次为什么愚蠢。

我相信头检查很容易被欺骗。不过也不疼。

由于你的算法是在客户端公开的,用户可以简单地用一个自动脚本将适当的数据发送到你的服务器,让你的服务器以为它被点击了。

除此之外,您还必须注意会话劫持。用户基本上可以代表其他人提交这个ajax请求,特别是如果他们有算法的话。您的应用程序对某些用户有不同的行为吗?如果是这样,那么会话劫持可能会变成特权升级问题。

在您的情况下,为了构建安全的应用程序,您不一定需要使用SSL加密有效负载。根据您的描述,没有任何敏感数据通过网络发送。

确保在服务器端进行一些基本的愚蠢检查,以检查是否存在自动或恶意行为。例如,如果您发现标头信息丢失,您可能需要某种标志/警报,表明有人在玩弄响应。你可能想做的另一个地方是请求模式。

一个更安全的模型是让服务器为用户分配一些他们无法进行反向工程的会话令牌。理想情况下,这个会话令牌应该以时间戳而不是用户名开始,以促进salted哈希算法的雪崩效应。

由于你的应用程序似乎涉及奖品和潜在的金钱,我会投入更多的时间来保护这个应用程序。希望这些建议对你有所帮助。