我注意到当我在phpMyAdmin中执行查询时,它在屏幕上显示为链接。当你点击该链接时,它会将你转发到http://dev.mysql.com/与相关查询这难道不是一种剥削吗?
因此,他们可以通过保存您的来获得您的代币
$_SERVER['HTTP_REFERER']
我用JS尝试过,我注意到它显示了最后一个url
document.referrer
"http://localhost/phpmyadmin/index.php?db=www_&table=meeting_planner&target=tbl_sql.php&token=a24a6bfb214586e23954....."
假设令牌就是这里讨论的令牌,那么是的。这是一个漏洞(尽管很小)。
它允许反CSRF令牌泄漏到特定站点(该站点已由软件作者选择,并且可能值得信赖)。
您应该能够通过HTTPS访问PHPMyAdmin来缓解这种情况(在前往其他站点时,这往往会阻止referer信息)。
CSRF防御通过拥有两个令牌副本来发挥作用。一个在cookie(或会话)中,一个在表单中。
通常对于只读取数据的操作,不需要防御CSRF攻击,而写入数据的操作应该是POST形式,因此CSRF令牌永远不应该出现在URL中。
phpMyAdmin有点奇怪,因为读操作很容易被用来触发服务器上的DOS攻击(因为你可以发送SQL查询)。这些请求可能应该使用CSRF令牌,但由于添加它们会使链接不可书签/共享,所以帖子也可以在这里使用post。