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


How to stop malicious automatic iFrame Form Input from other site?

有人把这段代码放到了他的网站上:

<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

我在这里假设了两件事:

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


无论我的假设是否正确,让我们来解决这个问题:

  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
    

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

与检查http引用器一起,这几乎是无懈可击的。

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

好运