【问题标题】:Trying to CSRF/XSRF test our website - can I use an iframe to POST?尝试 CSRF/XSRF 测试我们的网站 - 我可以使用 iframe 发布吗?
【发布时间】:2017-05-18 13:26:03
【问题描述】:

我正在尝试测试我们网站中特定的 POST 端点免受 CSRF 攻击。

为此,我尝试使用 iFrame。当我submit 表单时,整个页面都会重定向。我的印象是 iFrame window 应该只提交表单,而不是 整个(根?)文档?

示例代码...

<html>
<body>

    <p>
        <h3>CSRF Test.</h3>
        <a href="#" onClick="crossDomainPost();">Click Me</a>
    </p>

    <form id="csrfForm" action="http://www.someWebsite/postTest" method="POST">
        <snipped>
    </form>

    <iframe  name="someiframe"></iframe>

<script type="text/javascript">
    function crossDomainPost() {
        var iframe = $('#someiframe');

        var form = $('#csrfForm');
        iframe.add(form);

        // Submit the form in the iframe.
        form.submit();
    }
</script>
</body>
</html>

【问题讨论】:

  • add() 不会将表单放入 iframe 中,它只是将元素添加到 jQuery 对象中。可以在表单上使用target 作为 iframe
  • 你的意思是:var form = $('#csrfForm'); form.target = "someiframe"; form.submit();? (因为这不起作用)。
  • 很久没有这样做了,但应该可以工作stackoverflow.com/questions/8306640/…
  • 哦..我明白为什么...target 不是 jQuery 属性...尝试form.attr('target', "someiframe") 或form[0].target = "someiframe" 或简单地将其硬编码为表单标签上的属性

标签: javascript jquery html iframe csrf


【解决方案1】:

尝试将表单上的target 设置为 iframe

 <form id="csrfForm" action="url" method="POST" target="someiframe">

【讨论】:

    【解决方案2】:

    此外,如果您想使用 Javascript 来处理帖子(因为表单可能不总是想要定位 iFrame..

    <-- No target attribute here -->
    <form id="csrfForm" action="url" method="POST">
    
    ...
    
    function crossDomainPost() {       
        var form = $('#csrfForm');
        form[0].target = "someiframe";
        form.submit();
    }
    

    (帽子提示:@charlietfl 和他在 OP 中的 cmets)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-17
      • 2022-08-22
      • 2012-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多