如何使用公开密钥保护Web API免受未经授权的访问?

时间:2019-01-10 13:22:23

标签: api security asp.net-web-api restful-authentication csrf-protection

在了解Web API的本质的同时,提出了一些有关其安全性的问题。设计Web API的最佳做法是什么,以便只有授权用户才能访问它。我尝试检查以下选项,但没有一个能够实现完美的安全性。

1)我不能依赖请求源,引荐来源或用户代理字符串,因为它们很容易被欺骗。

2)Web API只需一个公共密钥即可访问它,因此CSRF令牌也不适合实施。

还有其他方法可以确保请求仅来自受信任的来源吗?

我的用例是我想实现客户端API,例如google map,在该客户端中,任何购买了API访问权限的人都将其网站域列入白名单,并可以将我的插件包含在他们的网站中。然后,插件将代表用户向我的API发出请求。

如果我在Web API上应用了一些请求签名逻辑,那么我的服务器可以验证请求者并拒绝未经授权的来源,这是一个好主意。我认为我必须将请求签名逻辑保密,因此我可能需要对代码进行一些混淆。

1 个答案:

答案 0 :(得分:0)

您没有提到用例的任何内容,尤其是在客户端是系统还是个人的情况下?

首先,默默无闻的安全性永远不是一个好选择。其次,“创建自己的安全系统”被认为是不好的做法,最好是站在拥有安全知识和经验的其他人的肩膀上。

不知道确切的用户情况,很难提出很多建议...但是,我建议您看看诸如jwt令牌之类的东西(我猜您在Webclient后面有一个人您的网络服务用户)...由于您已经用asp.net-web-api标记了问题,所以我还建议您看看https://identityserver.io项目...我以前使用过IdentityServer4在一个大型的asp.net webapi项目中获得成功...