如何阻止来自其他网站的恶意自动iFrame表单输入?

时间:2013-05-09 13:15:27

标签: php javascript forms iframe

所以有一个人把这段代码放在他的网站上:

<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

2 个答案:

答案 0 :(得分:0)

我在这里假设两件事:

  1. 您已安装并启用了mod_headers;

  2. 您已将Header条目放在<IfModule mod_headers.c>(或其某些变体)中。


  3. 我的假设是否正确,让我们解决这个问题:

    1. 确保将实际标题发送到浏览器 - 您没有在问题的任何地方说明您已对此进行过测试;

    2. 尝试使用此附加标题:Header set X-XSS-Protection "1; mode=block";

    3. 删除<IfModule ...>部分,查看Apache是​​否失败(或发出警告)通知模块未加载;

    4. 想要使用Header append ...,因为追加您想要的值(对任何可能存在的条目),以及谁知道如何浏览器会解释它;

    5. 甚至可以试试这个:

      Header unset X-Frame-Options DENY
      Header set X-Frame-Options DENY
      

答案 1 :(得分:-1)

一种好方法是在实际表单中添加及时更改的验证密钥,并在处理新条目时检查该密钥。

与检查http推荐人一起,这几乎是防弹的。

简单的解决方案: 另一个很好的选择是简单地检查cookie。在表单页面上设置一个cookie,并在提交页面上进行检查。

祝你好运