如何验证请求标头是否由特定的Web应用程序添加了

问题描述 投票:0回答:1

当前,我正在一个需要高安全性的项目中工作。由于最近的一些需求更改,我们使用前端http拦截器向每个请求添加了一些特殊的标头(否则它将在前端模块中发生巨大变化),它们对于系统非常重要。

最近,我们注意到可以使用一些浏览器插件来修改这些标头,这是一个关键问题。因此,我需要一种方法来识别这些标头是否包含从前端添加的原始值,并且它们没有被修改。

这些标题值的暴露不是大问题。但是修改是。

我的解决方案:

1)每次模块初始化时生成RSA密钥对,并将公共密钥发送到具有该选项卡唯一ID的后端服务。

2)将私钥保留在前端的服务中,并创建一个公共函数来为给定的输入生成签名。

3)每次调用前端拦截器时,它将根据各自的标头值计算一个签名值,并将其附加为另一个标头值。

4)当每个请求到达api网关时,它将使用在应用程序初始化阶段保存的公钥来验证签名。

上述解决方案是否存在安全隐患。如果有更好的方法来解决上述问题,欢迎提出建议:)

security encryption web-applications digital-signature owasp
1个回答
0
投票

考虑使用JWT发送这些标头...您可以使用对称签名(例如HS256)或非对称签名(例如RS256),具体取决于您同时拥有前端和后端的所有权,还是前端是公共的...

有关创建JWT和验证的更多详细信息,请参阅https://jwt.io/

从细节上,您已经提供了,这是我的主意。为了准确地工作,您没有提供它是Web api还是Web应用程序,等等。

© www.soinside.com 2019 - 2024. All rights reserved.