如何阻止恶意自动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
我在这里假设了两件事:
-
您已将
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
一个好的方法是在实际表单中添加一个及时更改的验证密钥,并在处理新条目时检查该密钥。
与检查http引用器一起,这几乎是无懈可击的。
简单的解决方案:另一个很好的选择是简单地检查cookies。在表单页面上设置cookie,并在提交页面上检查。
好运相关文章:
- JQuery:当其他输入字段的值发生更改时更改值
- 输入类型=文件验证停止其他输入类型验证
- 如何根据其他日期的输入更新日期
- 用户名输入如果其他块不能正常工作/Javascript-jQuery-AJAX
- 单击其他元素或鼠标向上时隐藏输入框,但保留一次焦点
- 单击列表中的引导输入按钮将禁用其他按钮
- 在维护输入内容的同时添加其他字段
- 如果所有其他元素都填写在AngularJS中,如何动态添加新的输入元素
- 在其他文本输入字段中输入文本时启用复选框
- 使用其他输入值自动填充输入
- 创建一个计算值数组,该数组绑定到AngularJS中的其他输入
- 更新其中一个字段时刷新其他输入字段.使用Angularjs(附Plunker)
- 停止jQuery表单验证重置由其他JavaScript填充的typeahead.js输入字段
- 根据选择选项启用/禁用其他输入
- 如果我用javascript隐藏了一个文本输入元素,那么其他javascript函数仍然可以访问输入到其中的值
- 选择列表框以更改其他输入
- 如果选择'其他'然后填充输入字段
- 输入其他相关字段时填充一个字段
- 通过在数组中输入其他值,从 JSON 数据中获取其他值
- YUI数据表块在页面上输入其他组件的事件