如何安全地实现无密码登录功能?


10

刚发布了一个新插件:No More Passwords

我目前已将其标记为Beta,因为登录平台是一个敏感问题,并且我不想发布可能存在安全漏洞的内容。所以这是我的查询:

安全吗?

我已完成以下操作以确保安全性:

  1. 用户名/密码永远不会来回传递,只有唯一的哈希。
  2. 哈希一旦使用就从数据库中删除,除非数据库被黑客入侵,否则无法使用尚未使用的旧哈希,但是那将带来更大的问题。
  3. 所有对哈希的数据库查询均已转义,以防止XSS攻击。
  4. 随机数已添加到ajax调用中。
  5. 随机数和确认已添加到移动端,以防止CSRF攻击。

在这里,我对它的工作原理有完整的描述。

我希望通过Twitter实现oauth的下一个版本,因为iOS现在可以在其中工作了。

感谢您的预先输入。

编辑:我决定作为一个添加的层,我将添加一个sessionID检查,以确保它是与启动QR码登录的浏览器相同的浏览器登录。

Answers:


5

(我很喜欢其他的登录方案)

关于数据库转义的一些挑剔:

  • mysql_real_escape_string()直接使用。首选方法是使用$wpdb->prepare()esc_sql()

  • UPDATE查询最好由以下方式处理 $wpdb->update()


我已经更新了插件以包括该插件。谢谢你的提示。
jackreichert'2

5

我认为这是个好主意,但像往常一样,最大的弱点是人为因素,在这种情况下,这可能是手机本身丢失,被盗或被拦截。您是否考虑过添加2层身份验证,例如SMS验证码(例如gmail等)。或者更简单的替代方法是Cookie +秘密字词。

还可以提及您的“关于”页面中生成QR码的算法吗?


因此,该插件依赖您在手机上登录才能正常工作。您丢失手机的安全风险与将PC登录到wp站点几乎相同。我正在使用Google的图表API来生成二维码。
jackreichert 2012年

3
我只是认为添加一个不会妨碍用户的层是一个好主意,因为电话被盗/丢失的程度远远超过了PC,在PC上,您仍然需要知道用户名/密码。
Wyck
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.