我正在为一个角度SPA编写REST Api网关,我面临着保护SPA API所暴露的数据免受“数据窃取”的问题。我知道我不能对HTML抓取做很多事情,但至少我不想提供这样的数据盗取用户体验和我们发送给SPA的JSON的全部功能。
关于这个主题,大多数“教程”和线程之间的区别在于,我将这些数据公开到一个公共网站(这意味着不需要用户身份验证),该网站提供了有关电子游戏的宝贵统计信息。
我关于如何保护SPA:的Rest的初步想法
到处都在使用JWT。当访问者打开网站时,SPA第一次从REST请求JWT并将其保存在HTTPS cookie中。对于所有请求,SPA必须使用JWT来获得响应。
采用这种方法的问题
我的问题:
我的印象是,这是一个常见的问题,因此,我想知道是否有任何好的解决办法来保护其他人,而不是SPA可以直接接触我的REST Api反应?
发布于 2018-08-11 20:07:55
从API的角度来看,您的SPA与任何其他客户端都没有任何不同。你显然不能在SPA中包含一个秘密,因为它是发送给任何人的,不能被保护。另外,它对API的请求也可以被另一个客户端轻松地嗅探和复制。
因此,简单地说,正如在这里多次使用的那样,您不能对客户机应用程序进行身份验证。任何人只要愿意,都可以创建不同的客户端。
实际上,您可以做的一件事是检查请求的引用者/来源。如果客户端在浏览器中运行,它可以发出的请求在某种程度上是有限的,其中一个限制是引用程序和源标头,它们总是由浏览器控制,而不是javascript。所以你可以确保如果(而且只有当!)客户端正在未经修改的浏览器中运行,它是从您的域中下载的。这是浏览器中的默认设置,所以如果您没有发送CORS头,您已经这样做了(实际上是浏览器发送的)。然而,这并不能阻止攻击者构建和运行非浏览器客户端,伪造任何他喜欢的引用或来源,或者无视相同的来源策略。
您可以做的另一件事是定期更改API,以阻止流氓客户端工作(同时更改客户端ofc)。显然,这根本不是安全的,但对攻击者来说可能很烦人。如果下载所有数据一次是一个问题,这也没有任何帮助。
但是,一些你应该考虑的真实的事情是:
https://stackoverflow.com/questions/51800405
复制相似问题