证书不安全时如何阻止 Web 应用程序中的请求?

信息安全 tls Web应用程序 证书
2021-08-27 15:26:42

我正在开发一个 Web 应用程序,并希望它能够免受来自应用程序层的攻击。

目前,我的网站允许像证书代理软件一样从 Burpsuite 进行拦截。每当我们在不安全的证书上运行网站时,有没有办法阻止来自前端的请求?

如果这不可能,我可以使用 JS 从前端检测到不安全的 SSL 证书吗?

谢谢

2个回答

...希望它免受来自应用层的攻击。...网站允许从 Burpsuite 进行自省 ...使用 JS 从前端检测到不安全的 SSL 证书?

根据您之前的问题,您希望保护您的应用程序免受最终用户本身的逆向工程和操纵,即控制客户端(浏览器)的用户。

但是您不能使用传输保护(TLS、HTTPS)来防止在通信端点进行操作。您可以尝试防止对协议进行逆向工程并由中间代理中的人操纵流量,但您无法防止有人在受操纵的客户端加密之前和解密之后拦截通信,因为您无法完全控制使用了哪些客户端。

除此之外,Burpsuite 的证书不一定不安全。一旦发行代理 CA 以受信任的形式导入浏览器,所颁发的证书将被视为与公共 CA 颁发的证书一样有效且安全。因此,基于证书的有效性或安全性的保护不能防止最终用户本身拦截通信。

即使有人设法从 JS 访问证书以检查它是否正是预期的证书,执行此操作的代码首先需要通过拦截代理,并且可以在那里被操纵以禁用检查或只是撒谎。

换句话说:只要不能完全控制客户端,就永远不应该相信客户端会按预期行事。任何关键计算都应该在服务器上完成,从客户端发送的所有数据都应该经过验证,并且关键状态应该保存在服务器上,或者通过只有服务器知道的秘密来保护(如使用 HMAC)。

HTTP 严格传输安全 (HSTS) RFC 6797

8.4. 安全传输建立中的错误

当连接到一个已知的 HSTS 主机时,如果有任何错误,无论是“警告”或“致命”或任何其他错误级别,UA 必须终止连接(另见第 12 节(“用户代理实施建议”))底层安全传输。

这消除了绕过警告或添加安全异常的能力。但是,如果用户安装了拦截代理的根 CA,从技术上讲不会出现错误。因此,它保护您的用户免受中间人攻击,但不保护您的 Web 应用程序。