一个经典的愚蠢的事情是通过GET在查询字符串ala上传递一些与安全相关的信息:
http://foo?SecretFilterUsedForSecurity=username
...任何雅虎都可以使用Fiddler或类似工具来查看发生了什么...
但是,通过POST将此信息传递给应用服务器(运行SSL)有多安全? Fiddler网站上的此链接似乎表明可以解密HTTPS流量:
http://fiddler2.com/documentation/Configure-Fiddler/Tasks/DecryptHTTPS
如果目标是确保客户无法捕获/读取您不希望他们接收的信息,那么这同样愚蠢吗?好像是。
谢谢。
最佳答案
这取决于您尝试保护谁免受数据攻击以及对客户端软件的控制程度。从根本上讲,在任何客户端-服务器应用程序中,客户端必须知道其发送到服务器的内容。
如果实施得当,SSL将阻止任何中间嗅探或更改流量,而无需修改客户端。但是,这取决于使用服务器域的有效证书对连接进行加密,如果不是这种情况,则取决于客户端拒绝采取行动。在这种情况下,只有拥有该SSL证书私钥的人才能解密该连接。
如果您的“客户”只是一个网络浏览器,则意味着第三方(例如,位于公共wi-fi位置)无法拦截数据,而不会警告使用该网站的人可疑的东西。但是,它不会阻止用户故意在浏览器中绕过该提示,以自行监听流量。
如果您的客户端是一个自定义的二进制应用程序,那么对于“爱管闲事”的用户来说,情况会更安全一些:为了检查流量,他们必须修改客户端以绕过您的证书检查(例如,通过更改目标URL) ,或欺骗应用程序以信任伪造的证书)。
简而言之,没有什么能完全阻止确定的用户嗅探自己的流量(尽管您可以加大难度),但是正确实施的SSL将阻止第三方拦截流量。