【问题标题】:how to secure rest api with query authentication如何通过查询身份验证保护 REST API
【发布时间】:2015-10-17 08:36:18
【问题描述】:

我有一个由 asp.net webservice 创建的 rest API,我有一个调用 api 并向用户显示一些数据的 android 和 IOS 应用程序。

我需要以一种只有我的应用程序才能通过 api 访问数据并且其他请求被拒绝的方式来保护我的 API。

我应该提到我的应用程序不是用户群,所以没有登录和身份验证,我不想强​​制用户登录!!!

根据我的搜索,我需要查询认证(查询参数)来实现这个。

我需要的是如何创建这种查询参数以及如何验证它们? (性能对我来说太重要了)

提前致谢

【问题讨论】:

    标签: android asp.net web-services rest rest-security


    【解决方案1】:

    我不是安全专家,但据我所知,您想要什么是不可能的。攻击者可以访问您嵌入客户端以验证您的应用程序的任何内容,然后攻击者可以使用该信息访问您的 API。

    【讨论】:

    • 我也不是。我想问一下客户端应用程序是否可以在后台生成类似 OTP 的东西来与服务器应用程序通信?在这种情况下我们可以使用更多的安全硬件,例如 HSM 吗?
    • @ChungPham 如果您要在客户端上创建一次性便笺簿,那么创建它的算法就在客户端上并且它位于客户端的内存中 - 熟练的攻击者都可以访问两者。我想您可以将 HSM 分发给客户端,但在这种情况下,这意味着将硬件邮寄给 android 用户。如果 OP 不想给最终用户密码,我怀疑他想给他们一个 HSM。 :-)
    【解决方案2】:

    您可以使用基本身份验证或任何基于令牌的身份验证机制。 因此,在对您的 api 的每个请求中,获取身份验证标头(http 请求标头中的身份验证令牌)并验证是否允许客户端调用它。如果失败,则通过必要的 HTTP 状态代码发送。您只需要确保您希望允许调用您的 api 的应用程序在其请求标头中使用这些安全令牌。您可以根据需要将这些凭据或安全令牌保存在内存、文件或数据库中。

    【讨论】:

    • 如果凭据位于客户端上,您如何保护它们?
    • 我猜你的 api 的消费者是移动应用程序。因此,在您的 android 应用程序或 ios 应用程序中,需要使用凭据来调用您的服务 api。因此,凭据不会暴露给应用程序的用户,而是在应用程序内部配置。
    • 客户端应用程序内的任何凭据都容易受到攻击者的攻击。用户可能看不到它们,但专门的攻击者会。
    猜你喜欢
    • 2017-02-04
    • 1970-01-01
    • 2016-10-28
    • 1970-01-01
    • 2016-12-19
    • 2013-01-27
    • 2021-02-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多