如何在浏览器选项卡中查询时保护 GET 请求



我目前被分配开发具有安全性的股票市场数据API。我能够使用 JWT、API 密钥、中间件身份验证来保护传入的 GET 请求。

假设当用户未登录时,众所周知,所有 http 方法,尤其是 GET 都以 http 状态 401 未经授权的访问进行响应。

我的问题是当用户登录我们的应用程序时,现在可以成功查询 API 请求(服务器到服务器(,但是当我将请求链接复制到浏览器新选项卡(例如 chrome(时,我可以看到回复。这是意料之中的,因为用户已登录,但我希望在浏览器中看不到请求响应。我们的其他竞争对手使用POST来对抗浏览器GET默认值。

我们应该转向开机自检吗?我正在挣扎,因为 GET 是请求东西的正确 http 方法。

对于像股市数据这样的私人内容,我的首选是发布请求。

我曾经通过检测浏览器来阻止来自浏览器的 GET API 请求,基于用户代理字符串和自定义头部元数据等内容,但根据经验,这不是一个完美的解决方案。

我过去使用的另一个技巧是使用简单的加密算法,(它不安全,但速度很快。这只是一种分心(来加密值。因此,如果有人确实提取了 json 响应,则数据将是垃圾,除非使用密钥解密,在您的情况下可能是 jwt 令牌。

同样,这些技巧对针对高技术人员的安全性没有任何帮助,但足以分散常规到平均反向 engg 技巧的注意力。另外免责声明,我从未将GET用于任何重要的金融和股票相关信息。我的规则是 GET 用于普通填充物,POST 用于重要内容。

如果要在浏览器窗口中隐藏输出,最好移动到POST。与GET一样,浏览器将始终直接显示输出。

但是,请注意,如果有人想看到 API 响应,他们仍然可以使用 JS 模拟 API 调用并在浏览器控制台中查看响应,或者使用 Postman 等客户端来获取响应。如果他们有适当的令牌,他们可以随时检查您的响应,这是没有办法的。

我相信它也在新选项卡中工作,因为用户已登录并且 JWT 令牌存储在 cookie/localstorage/中,可从新选项卡访问。而且您的服务器也能够访问它。

如果您使用 JS 应用程序(可能是 React ?(发送令牌,并调整您的服务器以每次都通过请求标头接受令牌,在这种情况下,仅打开该 url 将不再有效,因为它将在请求标头中缺少令牌。

最新更新