通过AJAX对用户进行身份验证的最简单安全方法是什么?

时间:2012-02-02 14:26:26

标签: javascript jquery security google-app-engine

我正在构建一个带有Java后端的Google App Engine Web应用程序,它在浏览器中严重依赖JavaScript / JQuery(您可以看到它here)。

我想实现一个用户身份验证机制,它也依赖于AJAX(即,他们将能够在没有页面刷新的情况下注册和登录)。

我不想依赖谷歌的身份验证,因为我发现很多人不愿意放弃他们的GMail电子邮件地址,但我希望将来支持通过Google / Facebook / Twitter等进行身份验证。

我喜欢Reddit用户身份验证方法的简单性。

我担心的是,由于人们不会通过HTTPS使用我的应用程序,因此我不想通过HTTP以明文形式发送密码。我还希望依赖某种秘密令牌(可能是密码的哈希值和一些服务器提供的“盐”),这些令牌可能被截获并被欺骗。

与此同时,我不想为实施身份验证机制投入大量精力。

是否有一种方法可以让我获得我想要的简单性,但是哪种方法在HTTP上是安全的?

编辑:我刚刚意识到Google App Engine确实支持HTTPS,但前提是您通过网站的* .appspot.com网址进行连接。遗憾的是,由于跨站点脚本限制,您无法对此进行AJAX调用 - 尽管我猜这可能与JSONP有关。

那么,使用JSONP + HTTPS + *。appspot.com是最好的方法吗?

2 个答案:

答案 0 :(得分:4)

您必须使用https通过http进行安全通信。没有它,没有办法从浏览器进行安全通信。

如果您在appspot域上使用JSONP + https,则您的用户将看不到您的网站是安全的,并且您将无法以安全的方式保存Cookie。对我们来说,唯一的解决方案是将丑陋的appspot.com域直接暴露给我们的客户。谷歌长期以来一直在说自定义域名上的SSL即将到来,但没有日期。

编辑PS:如果您不需要您的客户看到绿色的https,并且不需要以安全的方式保存cookie(可能是一个安全的默认会话密钥?),jsonp + https * .appspot.com听起来像一个可行的聪明解决方案。

答案 1 :(得分:0)

这真的是一个很好的问题,真的需要一些深入的密码学知识。这是我几个月前发现的一篇文章。他们有一个建议的解决方案,使用CRAM-MD5挑战 - 响应认证。希望这可能会有所帮助。

http://en.wikipedia.org/wiki/CRAM-MD5

http://blog.stochastictechnologies.com/secure-authentication-over-http

问候。