我正在开发一个 Web 应用程序,并希望它能够免受来自应用程序层的攻击。
目前,我的网站允许像证书代理软件一样从 Burpsuite 进行拦截。每当我们在不安全的证书上运行网站时,有没有办法阻止来自前端的请求?
如果这不可能,我可以使用 JS 从前端检测到不安全的 SSL 证书吗?
谢谢
我正在开发一个 Web 应用程序,并希望它能够免受来自应用程序层的攻击。
目前,我的网站允许像证书代理软件一样从 Burpsuite 进行拦截。每当我们在不安全的证书上运行网站时,有没有办法阻止来自前端的请求?
如果这不可能,我可以使用 JS 从前端检测到不安全的 SSL 证书吗?
谢谢
...希望它免受来自应用层的攻击。...网站允许从 Burpsuite 进行自省 ...使用 JS 从前端检测到不安全的 SSL 证书?
根据您之前的问题,您希望保护您的应用程序免受最终用户本身的逆向工程和操纵,即控制客户端(浏览器)的用户。
但是您不能使用传输保护(TLS、HTTPS)来防止在通信端点进行操作。您可以尝试防止对协议进行逆向工程并由中间代理中的人操纵流量,但您无法防止有人在受操纵的客户端加密之前和解密之后拦截通信,因为您无法完全控制使用了哪些客户端。
除此之外,Burpsuite 的证书不一定不安全。一旦发行代理 CA 以受信任的形式导入浏览器,所颁发的证书将被视为与公共 CA 颁发的证书一样有效且安全。因此,基于证书的有效性或安全性的保护不能防止最终用户本身拦截通信。
即使有人设法从 JS 访问证书以检查它是否正是预期的证书,执行此操作的代码首先需要通过拦截代理,并且可以在那里被操纵以禁用检查或只是撒谎。
换句话说:只要不能完全控制客户端,就永远不应该相信客户端会按预期行事。任何关键计算都应该在服务器上完成,从客户端发送的所有数据都应该经过验证,并且关键状态应该保存在服务器上,或者通过只有服务器知道的秘密来保护(如使用 HMAC)。