我到处寻找关于保护我的webApi的答案,但我总是被指向OAuth或openID,但我不希望用户登录或认证。这是我的问题:
我有一个webapi,通过Javascript来获取Json中的数据。该数据在该页的Html中使用。(部署在Azure)
现在,我不希望其他人通过Javascript或简单的get请求获得这些数据。只有我的html页面才允许这样做。
我正在寻找一些东西来确保我的Webapi只被我想要的应用程序所消耗。如果我查看OAuth和Azure的内容,人们总是必须登录,但是我希望这个页面是公开的,但是只有webapi需要安全。
我不能检查IP,因为调用是在浏览器的客户端完成的。
发布于 2018-12-27 12:48:40
不可能对特定客户端(完全在类似浏览器的SPAs)应用程序中使用的API进行身份验证和保护。您无法保护应用程序发送到API的数据。(详见保护SPA背后的REST防止数据窃取)
如果不想介绍用户和最终用户身份验证,可以在服务器端构建一些模块,然后使用基于令牌的服务器进行服务器通信。
当然,这也是一个如何解释安全性的问题。
发布于 2015-04-09 11:45:22
作为建议,您可以保护它,确保请求有您定义的一些标头。例如,您可以使用只知道的令牌设置授权头。例如,您可以基于您和webapi共享的密钥创建一个令牌,用调用api的时间对其进行加密。web接收请求,并:
1-检查请求是否具有所需的令牌;
2-如果是这样的话,它就会像你的页面一样创建一个标记;
3-将其令牌与请求令牌匹配;
如果您通过javascript调用webapi,则可能会公开该方法。然而,这是一个想法
发布于 2015-04-09 13:45:08
看看CORS (跨源资源共享),它可能是您的解决方案。
在综合中,您可以只允许来自某些特定网站的Api请求。大多数,几乎所有的浏览器都支持它。
这就是在2中启用和配置它的方式。
https://stackoverflow.com/questions/29535830
复制相似问题