首页 > 解决方案 > 如何使用公钥保护 Web API 免受未经授权的访问?

问题描述

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

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

2) Web API 只需要一个公钥来访问它,因此 CSRF 令牌也不适合实现。

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

我的用例是我想实现像谷歌地图这样的客户端 API,任何购买了 API 访问权限的人都会将他们的网站域列入白名单,并且可以在他们的网站上包含我的插件。然后插件将代表用户向我的 API 发出请求。

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

标签: apisecurityasp.net-web-apirestful-authenticationcsrf-protection

解决方案


您没有提及用例的任何内容,特别是如果客户端是系统或人?

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

在不知道确切的用户案例的情况下,很难提出很多建议......但是,我建议你看看 jwt 令牌之类的东西(我猜你在 webclient 后面有一个人作为用户你的网络服务)......因为你已经用 asp.net-web-api 标记了这个问题,我还建议你看看https://identityserver.io项目......我以前成功地使用过 IdentityServer4在一个大型的 asp.net webapi 项目中......


推荐阅读