选择哪种认证机制?

时间:2009-02-18 12:41:29

标签: language-agnostic authentication

好吧,在我的空闲时间,我正在制作这个小网站。该网站不需要进行身份验证,只需要执行某些操作(例如发表评论)。

我希望每天最多可以有100位(可能更少)的独立访问者。我真的不希望超过50%(麻烦)注册。

现在,我正在考虑三种可能的身份验证机制(但我愿意接受建议):

  • OpenID身份验证;
  • HTTP摘要或至少HTTP基本身份验证;
  • 我自己的(基于表单的)身份验证。
对于像这样的小网站来说,OpenID在我看来有点过分。此外,我网站登录页面上的“OpenID”等流行词可能会吓跑那些技术含量较低的人。

HTTP摘要(或基本)身份验证提供较低的安全级别(或根本不提供),因为该站点不在HTTPS下。

我自己的实现很可能会遇到与HTTP Digest相同的安全问题。虽然,我可以实施更多保护,防止暴力攻击(在三次失败后显示验证码等)。

您会建议其他什么机制?我没有看到的利弊是什么?你会选择什么?

10 个答案:

答案 0 :(得分:4)

好吧,如果你希望你的访问者留下评论,我真的认为你更喜欢OpenID这样的东西。因为如果您提供自己的基于表单的身份验证,谁会真的麻烦注册另一个帐户,并且有一些密码,想知道他们是否可以信任您?

我认为可以肯定地说,喜欢互联网的人拥有一个Gmail帐户,所有这些人都拥有OpenID(Google帐户)。

我建议你使用那个......那就是我要做的。

答案 1 :(得分:1)

您还没有说过您正在使用的语言/技术。它可能会影响事情。但我倾向于推出自己的基于表单的身份验证。这并不是非常困难。请记住一些基础知识:

  • 始终清理用户输入。它不可信任;
  • 永远不要在cookie中存储用户名或密码(相信我会这样做);
  • 仅使用可靠的加密方法(如MD5或SHA1)存储加密密码;
  • 使用不可预测的盐;
  • 要求启用Cookie。不要尝试进行URL重写。

答案 2 :(得分:1)

为什么不发布评论时只有一个名称字段,如果你愿意,可以在cookie中记住它。大多数用户只想表明自己没有帐户。

只要确保您有一些垃圾邮件阻止,因为表单会吸引垃圾邮件机器人。即使这只是每次表格的上限。

答案 3 :(得分:1)

Openid是我认为最好的。此外,如果你提供关于开放id(或类似SOF节目)的proer帮助,那么人们会理解。一旦精通技术的人不再理解opend id的使用(没有新的用户名和密码),那么他们就会开始喜欢它。

答案 4 :(得分:1)

绝对与OpenID一起使用 - 我们登机的人越多,熟悉的人就越熟悉,第一次使用它并不奇怪。如果您是microsoft开发人员,dotNetOpenID库使实现变得非常简单 - 我已经为ASP.NET和ASP.NET MVC站点做了这个没有问题。

编辑:

关于支持非技术用户,登录页面上的一些链接/解释将大大有助于缓解问题。他们将看到的重定向与他们更熟悉的体验非常相似,如信用卡或PayPal授权,因此应该很容易用这些术语来解释。

答案 5 :(得分:0)

您可以向访问者分发一些RSA SecurID; - )

说真的,要问的主要问题是:如果网站安全性被破坏,那么为我的用户实施一个体面的安全系统的总工作时间是否值得访问?

答案 6 :(得分:0)

你应该看看RPX(https://rpxnow.com/),它是一个在OpenID之上的层和一些其他方案,对于大多数语言来说真的很容易实现(有一个ruby的宝石,我知道一个朋友的我花了不到几个小时就把它放进了他的php应用程序中。

答案 7 :(得分:0)

OpenID规则!作为一个知情的用户,我不确定它是否已被视为安全的“防弹”,所以我可能不会将它用于金融/医疗网站,但对于95%的其他网站,它会节省我不得不写下我的137个不同用户名和密码的备忘单。我在我开发的(非公共)网站中使用它,让身份验证正常工作有点麻烦,但是如果你可以使用其中一个库,那就去吧!

HTTP身份验证是标准化的,但有些事情会让我感到不安。我什么都不知道。关于从浏览器弹出一个单独的对话框的事情让我很怀疑。

P.S。英国广播公司的数字地球昨天(2009年2月17日)播出了radio program我当地的广播电台,谈到了OpenID。所以我想当收音机谈论它时,它必须开始成为主流。

答案 8 :(得分:0)

我的建议:不要重新发明轮子。如果我看过一个轮子,那么Web身份验证就是一个轮子,而且很难正确处理所有细微的陷阱。你可能会错过一些东西,最终却没有安全保障。

要么使用OpenID解决方案,要么查看那里的许多auth库,并选择经过全面测试的库。

另请参阅:The Definitive Guide To Website Authentication

答案 9 :(得分:0)

这部分取决于您的目标受众群体。如果他们都是计算机爱好者,请使用OpenID。他们要么熟悉它,要么会理解你在做什么。如果他们不一定是计算机爱好者,他们可能还没有接触过OpenID身份验证,因此OpenID可能会成为进入障碍。在这种情况下,您可能希望采用更传统的路线,例如注册/验证电子邮件/登录方式,无论是自己动手还是现成的。