2012-03-25 36 views
1

前一段时间,我注意到有些人在我的论坛上张贴“图片”,当它们被登录用户查看时,他们强迫他们执行在他们可能不想要的网站上采取行动。有问题的操作通常通过简单的GET请求执行到相关页面。检测(并阻止)隐藏在图像中的GET请求

这已被要求所有不平凡的变化是POST请求修补,但我在想这个问题:

是否有可能在一个浏览器期待一个图像中检测和阻止PHP脚本从如果是这样运行?

我最初的尝试是:

<?php 
    if(isset($_SERVER['HTTP_ACCEPT']) && $_SERVER['HTTP_ACCEPT'] != "" 
    && stripos($_SERVER['HTTP_ACCEPT'],"image/")) die("Insert error message here"); 
?> 

然而,尽管它在IE和Firefox,谷歌Chrome的工作完美(出于某种原因),包括“图像/ PNG”作为其接受头的一部分,导致用户无法加载任何“受保护”的页面。

这么清楚地表明这个想法在理论上是有效的,但实际上它是不可靠的。有没有可靠的方法呢?

回答

1

这已被要求所有不平凡的变化是POST请求修补

好。 HTTP规范指出,GET请求不应导致不小的更改。

是否有可能检测浏览器期待图像,并阻止PHP脚本运行,如果是这样?

不需要。您只需阻止人们向您的网站添加触发POST请求的内容。

要阻止人们将内容添加到其他网站,使浏览器自动进行POST请求网站,实现CSRF protection

0

据我了解你的问题,你想保护自己免受CSRF。在wikipedia,你会发现一些想法。

如果你想保护自己免受CSRF,你建议的方式似乎没有用......根据我的意见。