前一段时间我注意到有些人在我的论坛上发布了“图片”,当他们被登录用户查看时,强迫他们在他们可能不想要的网站上执行操作。有问题的操作通常通过对相关页面的简单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(由于某种原因)包含“image / png”作为其Accept标头的一部分,导致用户无法加载任何“受保护”的页面。 / p>
很明显,这个想法在理论上有效,但在实践中它是不可靠的。有可靠的方法吗?
答案 0 :(得分:1)
通过要求所有非平凡的更改成为POST请求
来修补此问题
好。 HTTP规范声明GET请求不应导致非平凡的更改。
是否有可能检测到浏览器何时出现图像,并阻止PHP脚本运行?如果有的话?
没有。您只需要阻止人们向您的站点添加触发POST请求的内容。
要阻止人们向其他网站添加内容,导致浏览器自动向您的网站发送POST请求,请实施CSRF protection。
答案 1 :(得分:0)
据我了解您的问题,您希望保护自己免受CSRF的侵害。在wikipedia,您会找到一些想法。
如果你想保护自己免受CSRF的影响,你建议的方式似乎没有用......根据我的意见。