我试图设置一个基本的ajax提交处理程序来修改表单(我正在写一篇关于CSRF漏洞的课程),但页面仍在循环中。以下是我一直在修改的示例代码,该代码基于http://api.jquery.com/jQuery.post/:
<!DOCTYPE html>
<html>
<body>
<form id="hidden_form" target="blahblah.com"> </form>
<script>
//Attach a submit handler to the form
$( '#hidden_form' ).submit(function( event ) {
//stop form from submitting normally
event.preventDefault();
//set new target for the form
var $form = $( this ),
url = "http://192.168.101.250/mutillidae/index.php?page=add-to-your-blog.php&csrf-token=SecurityIsDisabled&blog_entry=example+text&add-to-your-blog-php-submit-button=Save+Blog+Entry"
//capture the response but do nothing with it
var posting = $.post( url );
});
</script>
<script>
$( '#hidden_form' ).submit();
</script>
</body>
</html>
当我在浏览器本地加载此文件时,标签标签之间切换 /path/to/file.html和&#34;正在连接&#34;真的很快,但我知道请求永远不会被发送出去,因为我有burp代理拦截所有流量并且它没有捕获任何内容。
那么我做错了什么?我希望ajax处理程序向指定的url发送POST请求,但它永远不会被发送出去
编辑:我已经更改了第二个脚本来调用处理程序而不是实际的表单,但仍然没有在线路上发送流量?
答案 0 :(得分:1)
直接在表单元素节点上调用.submit()不会触发提交事件,而是直接提交绕过所有事件处理程序的表单。您应该调用触发事件处理程序的方法的jQuery形式。
$( '#hidden_form' ).submit();