【问题标题】:send credentials with url, possible?用 url 发送凭据,可能吗?
【发布时间】:2010-03-15 02:34:34
【问题描述】:

我有一个 Web 服务,我通过基本身份验证保护并使用 ssl。为了让离开的客户更容易使用此网络服务,我想跳过 401 并使用 url 发送凭据(我希望客户可以从他们的代码/网络应用程序中使用 url 访问网络服务),问题这可能吗?

我知道标头,但是很多使用此标头的客户没有合适的开发团队来编写代码。

谢谢

【问题讨论】:

    标签: asp.net web-services authentication


    【解决方案1】:

    嗯,你当然可以,但你真的不应该。在 URL 中以纯文本形式发送信息是不好的,因为该 URL 可能会被缓存在几个不同的地方,并且通常会不必要地暴露敏感信息。您可以在发送之前对其进行加密,但这可能比它的价值更麻烦。

    使用纯基于 URL 的身份验证的公认方法是某种令牌。不过,您需要通过标准登录程序来生成令牌。 附录: 另请注意,这比将纯文本密码放在 URL 中要好,但仍然存在一些问题。 URL 比其他标头信息更广泛地记录、缓存和添加书签。至少您保留了对令牌的控制权,并且可以在一段时间后使其过期,而 URL 中的密码不能简单地过期。

    如果您正在开发 API,我认为需要一些身份验证程序是合理的。如果您的客户做不到,请提供可以帮助他们的库或代码 sn-ps。

    【讨论】:

    • 但是如果我使用 header 选项并获得基本身份验证和 ssl 我很好,我不需要再做任何事情并且它是安全的?
    • SSL'd Basic Auth 很好,SSL'd Digest Auth 会更好。如果密码足够强大,任何一个都足够好。
    • 如果说客户端有php/其他系统,做basic/digest auth & ssl有问题吗?像发送标头凭据一样?
    • 不确定您要的是什么,只要协议是安全的,后端系统就没有关系。您应该能够在任何系统上使用此身份验证方法。
    • @deceze,虽然我同意你的第一部分基本 + SSL 很好。我没明白你说“基于 URL 的身份验证是某种令牌”的意思。您是在暗示创建一个令牌并将令牌塞入其中吗?因为,无论您创建什么样的 URL,任何嗅探它的人都可以轻松冒充!我错过了什么?
    【解决方案2】:

    我完全同意@deceze。在 URL 中发送密码是不好的,完全违背了使用 SSL 的目的。另一方面,如果你使用 BASIC + SSL,你的身体是加密的。这意味着由于 SSL 正在运行,您发布的密码(使用 FORM -> 用户名和密码字段)无法被介于两者之间的任何人解密。

    我也不完全同意带有一些令牌的基于 URL 的身份验证会很好,主要是因为无论您如何加密它(或不加密它!),URL 无论如何都会通过所有跃点作为每个人的查询字符串。因此,任何可以阅读 URL 并模拟的人。

    HTH, 拉胡尔

    【讨论】:

      【解决方案3】:

      警告:正如其他人所提到的,这是一个非常糟糕的主意!

      但是,为了回答您的原始问题,假设您使用基本身份验证,您可以像这样在 URL 中嵌入用户名和密码。

      http://userid:password@www.anywhere.com/

      这将使您的用户更容易使用 API,并且黑客可以绕过您的安全。你只比完全关闭身份验证稍微好一点。

      警告:正如其他人所提到的,这是一个非常糟糕的主意!

      【讨论】:

      • @JohnFx,默认情况下,最新版本的 IE 不支持此功能。 support.microsoft.com/default.aspx/kb/834489?p=1 因此,我只想重申你所说的......在 URL 中传递 UserID/PWD 是一个非常糟糕的主意!!!
      • 我不知道,但我很高兴看到他们放弃了它。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-12-25
      • 2019-10-12
      • 2011-10-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-04
      • 1970-01-01
      相关资源
      最近更新 更多