假设安全测试人员使用代理,比如Fiddler,并使用管理员的凭据记录HTTPS请求 - 在重放整个请求(包括会话和身份验证cookie)时,安全测试人员能够成功(重新)记录事务.声称这是CSRF漏洞的标志.
恶意用户必须做什么来拦截HTTPS请求并重放它?这是一个脚本小子,资金充足的军事黑客团队或时间旅行外星人技术的任务吗?记录用户的SSL会话并在门票到期之前重播它们真的很容易吗?
应用程序中的代码当前没有对HTTP GET做任何有趣的事情,因此AFAIK,欺骗管理员点击链接或加载带有恶意URL的图像不是问题.
HTTPS不可重放,握手序列中的第一个服务器响应包括服务器选择的随机数.
Fiddler所做的是充当代理,这意味着它拦截了您的浏览器的请求,然后向服务器生成相同的请求,这意味着它可以访问明文,这将是它将重放的内容.您的浏览器通过告诉您证书来自Fiddler - "DO_NOT_TRUST_FiddlerRoot"来告诉您,您必须同意它才会发送消息而忽略证书不匹配.
您所描述的不是CSRF漏洞.HTTPS专门防御原始密文的重播攻击,并防止攻击者知道请求的内容.
值得注意的是,HTTPS 并不能抵御CSRF.如果攻击者知道GET/POST变量应该是什么,那么他就能够构建恶意html,当目标执行它时,它将执行攻击者所需的动作.如果Web应用程序不是公共的并且攻击者不知道HTTP请求是什么样的,那么他们就无法伪造请求.例如,这是我针对phpMyAdmin编写的CSRF漏洞.我已经修改了这个漏洞以使用https,我所要做的就是将URL从http://更改为https://.
这个漏洞使用mysql的"into outfile"来删除后门.它使用无脚本,因为它伪造了一个GET请求,并且浏览器认为它是一个图像,直到它为时已晚.