Security 不使用OpenID将密码存储到API的安全方法?

Security 不使用OpenID将密码存储到API的安全方法?,security,passwords,eventbrite,confidentiality,Security,Passwords,Eventbrite,Confidentiality,我问了一段时间,但所有的答案都是提供OpenID,这很好,但它不适用于需要身份验证但不使用它的服务(如EventBrite) 假设我想创建一个应用程序,列出event brite中的事件及其分析(eventbrite包括)。任何人都可以注册此服务以列出他们的活动。但是由于EventBrite没有OpenID进行身份验证,我需要以某种方式获得EventBrite的用户登录名和密码 一些可能的解决办法是: 在YAML中存储凭据。容易破解 让用户在我的网站上的表单中输入凭据,我将凭据保存到数据库中,并

我问了一段时间,但所有的答案都是提供OpenID,这很好,但它不适用于需要身份验证但不使用它的服务(如EventBrite)

假设我想创建一个应用程序,列出event brite中的事件及其分析(eventbrite包括)。任何人都可以注册此服务以列出他们的活动。但是由于EventBrite没有OpenID进行身份验证,我需要以某种方式获得EventBrite的用户登录名和密码

一些可能的解决办法是:

  • 在YAML中存储凭据。容易破解
  • 让用户在我的网站上的表单中输入凭据,我将凭据保存到数据库中,并使用它们登录到EventBrite。容易破解
  • 让用户输入凭据,我将它们直接传递给EventBrite而不保存,我将响应头cookie保存到数据库中,当它们过期时,让它们再次登录。这容易破解吗
  • 这个假定的服务还希望自动检查事件(比如通过cron),因此它不依赖于用户通过浏览器访问我的站点。所以饼干或信纸需要存放在某个地方

    问题是,听起来你不应该构建一个像我描述的那样的应用程序。一定有办法建造这样的东西没关系


    那边是什么?我错过了什么?使用#3并保存cookies可以吗(但仍然需要用户通过我发送给Eventbrite的表单提交他们的电子邮件/密码)?什么是可接受的问题解决方案?

    没有一种安全的方法可以做到这一点。你可以采取变通办法,但仅此而已

  • 将密码存储在YAML或XML的明文中肯定是行不通的
  • 事实上,即使加密和存储密码也是错误的。您的应用程序需要一种解密密码的方法,以便攻击者也可以解密密码
  • 存储密码的推荐方法是Salt+Hash,但是因为它变得不可恢复,所以在您的情况下它是无用的
  • 由于2和3的原因,无论您将用户凭据存储在何处,您都容易受到攻击
  • 存储cookies而不是密码是一个更好的主意。但同样,这涉及到密码通过你的网站,这是不好的
    考虑到您的情况,存储cookie是一种更好的方法。在整个过程中使用HTTPS,甚至在您的网站上。但这并不理想,您和您的用户应该意识到这一点。

    大多数网站只支持使用原始明文密码直接登录,因此您也必须获取、存储和提供该密码。我永远都不会相信你。 您的概念的问题在于,您需要将密码提供给第三方。解决方案是不涉及第三方,例如,我的浏览器非常擅长为我自动存储和填写密码(我的硬盘也有密码保护)。此外,还有数十款其他密码钱包应用程序。我用你的服务订阅不会有任何收获


    在进入这样的行业之前,你将成为1的目标。Facebook、谷歌对安全性的担忧令人难以置信,他们花费了大量的时间、金钱和精力来保证登录的安全。你们有相同的资源吗?那你就是更好的目标了。此外,通过黑客攻击您的服务,他们会立即获得多个帐户和用户密码,还可以查看谁总是重复使用其密码。

    对于使用Eventbrite API,我建议确保所有连接都通过SSL,并且您使用用户密钥而不是用户名和密码进行身份验证

    有关Eventbrite API身份验证的更多信息,请参见:

    登录后,用户可以在此处找到其用户密钥:


    这将防止通过网络截获用户名和密码信息,或从本地数据存储读取这些信息。

    Eventbrite最近发布了一份新的文档,描述了这些信息。 我建议使用我们的,默认情况下,它将用户的身份验证令牌存储在浏览器的本地存储中。 由于身份验证令牌存储在用户的浏览器中,并且被其他域阻止访问,因此不太可能存在任何安全泄漏


    此身份验证方案完全避免了对电子邮件和密码组合的需要。

    我怀疑您是否能够获取和存储不属于您的域的cookie。如果你能做到这一点,每个人都可以劫持它。他正在给远程网站打一个服务器对服务器的电话,这样他就可以得到cookie。您提到的限制仅适用于浏览器,以防止一个网站读取另一个网站的数据/cookie。谢谢,这正是我试图描述的用例:)。只要消费者意识到我们正在这样做,并且我们有原则和道德,这应该是好的。如果有人从数据库中得到了cookies,他们能做些什么吗?如果他们得到了cookies,他们可以做你正在做的任何事情。它有其自身的风险,但比在数据库中存储密码要好。Cookies至少会过期。