所以有一个人把这段代码放在他的网站上:
<iframe name="frame" src="" frameborder="0" width="1" height="1" allowfullscreen style="width:1;height:1;"></iframe>
<form name="form" method="POST" action="http://mysite.com/vote.php" target="frame">
<input type="hidden" name="vote" value="1" />
<input type="hidden" name="id" value="1337" />
</form>
<script type="text/javascript">
document.forms.form.submit();
</script>
有了这段代码,他就会欺骗我的所有用户投票支持一篇对他有利的帖子(1337)。
我怎么能阻止这个?有什么想法吗?
我尝试了以下(.htaccess),但它没有阻止它:
# DISABLE IFRAME
Header set X-Frame-Options DENY
Header always append X-Frame-Options SAMEORIGIN
答案 0 :(得分:0)
我在这里假设两件事:
您已安装并启用了mod_headers;
您已将Header
条目放在<IfModule mod_headers.c>
(或其某些变体)中。
我的假设是否正确,让我们解决这个问题:
确保将实际标题发送到浏览器 - 您没有在问题的任何地方说明您已对此进行过测试;
尝试使用此附加标题:Header set X-XSS-Protection "1; mode=block"
;
删除<IfModule ...>
部分,查看Apache是否失败(或发出警告)通知模块未加载;
您不想要使用Header append ...
,因为追加您想要的值(对任何可能存在的条目),以及谁知道如何浏览器会解释它;
甚至可以试试这个:
Header unset X-Frame-Options DENY
Header set X-Frame-Options DENY
答案 1 :(得分:-1)
一种好方法是在实际表单中添加及时更改的验证密钥,并在处理新条目时检查该密钥。
与检查http推荐人一起,这几乎是防弹的。
简单的解决方案: 另一个很好的选择是简单地检查cookie。在表单页面上设置一个cookie,并在提交页面上进行检查。
祝你好运