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

san*_*ity 11 javascript security jquery google-app-engine

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

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

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

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

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

同时,我不想为实现身份验证机制付出巨大的努力.

有没有一种方法可以提供我想要的简单性,但是哪种方法通过HTTP安全?

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

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

Ril*_*ark 4

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

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

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