【问题标题】:What Uniquely Identifies a Client Making a Request to Web API?什么唯一标识了向 Web API 发出请求的客户端?
【发布时间】:2016-12-03 07:10:02
【问题描述】:

假设我编写了一段代码,对 web api 进行 http 调用,类似于:

$http.get('www.myapi.com/api/controller/endpoint').then(function(resp){...})

然后,我将此代码提供给居住在不同城市的两个人,他们从各自的房子(仅通过某些浏览器)访问我的 API。我的 API 可以从 http 请求中获取哪些信息,从而使我能够区分 A 和 B 调用它的人? IP 是否始终可用? MAC地址是否可用?那里还有什么?

A 在调用我的 API 时如何伪装成 B?

此外,如果 C 从他们自己的 Web API(后端)调用我的 Web API 怎么办?是否会提供相同的信息,或者会有什么不同?

这是一个普遍的问题,但如果您想了解具体情况,我们假设 ASP.NET Web API 2 正在接收 http 请求。

【问题讨论】:

  • 也许创建两个游标,在另一个游标中使用一个?
  • 你想用这些信息做什么?
  • @mrmcgreg:不需要用户登录的安全端点。或者至少,为我们提供一种识别和锁定恶意用户的方法。目前,我只是想了解一个整体情况。
  • 你会有很多这样的东西,但它们可能或多或少对你的目的有用。 MAC 很容易被欺骗,共享路由器的客户端都将拥有相同的 IP。
  • 当有人从后端进行 API 调用时,除了浏览器的一些内容外,您也将拥有大部分相同的东西。

标签: javascript c# security http asp.net-web-api2


【解决方案1】:

我的团队通过要求在所有请求中包含标识标头来实现这一点。这确实需要调用方进行一些自定义,但不一定要求用户登录。当然,恶意用户可能会更改标头的值,因此如果这些调用需要非常安全,您将需要传统的身份验证。

【讨论】:

    【解决方案2】:

    您正在描述预认证的愿望。

    IP 将始终可用。您可以将服务限制在这些 IP 范围内。这不是进行身份验证的好方法。

    试图绕过必须执行身份验证是不安全的。您应该使用正确的身份验证方法。将 IP 限制与其他方法结合使用即可。

    John Meyer 的回答是基本上基于预共享令牌的用户身份验证。拥有一个有效的令牌就意味着不断地登录。与建立一个具有有限生命周期的临时令牌的典型的基于令牌的用户身份验证相比,该令牌更容易被破坏。

    如果您决定采用预共享令牌路线,请使用支持令牌随时间适当轮换或排列的方法,使其不易受到重放攻击。

    此场景的最佳选择是典型的基于会话令牌的用户身份验证。

    如果您实际上对谁在使用您的服务感兴趣,只对他们进行唯一标识,您可以安全地为每个用户建立一个会话(或永久或任意生命周期)cookie,由http Set-Cookie 所有客户端都应该自动尊重和支持的标头,然后将其用作您的跟踪方法。

    【讨论】:

      【解决方案3】:

      我认为您始终可以使用完全身份验证。我看到您希望使用一组半安全的端点,但我认为任何一种方法都不会为您提供最好的服务。 MAC、IP、用户代理、自定义字段,老实说,任何东西都可以被欺骗。使用不记名令牌或会话令牌是您唯一的选择。对于公共 api,您可以根据 ip 限制用户请求,或者您可以尝试找出特定 ip 是否试图利用您并阻止它,但无论如何可能无法找到真实身份。

      【讨论】:

        【解决方案4】:

        您似乎对此感到非常困惑。您要查找的内容称为身份验证。

        当您标记 C# 时,我假设您正在使用 C# 开发您的 api。我建议检查Web Api

        现在有几种身份验证方法可用。如果你正在开发一个rest api,你可以使用json web tokens

        您可以通过http headers 获取有关调用您的 api 的客户端的大量信息。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-10-15
          • 1970-01-01
          • 2022-06-24
          • 2017-02-09
          • 2021-09-17
          • 1970-01-01
          相关资源
          最近更新 更多