【发布时间】:2016-07-08 15:08:39
【问题描述】:
我正在使用 CSRFGuard 3.1.0 我已经在 web.xml 中配置了 servlet
<servlet>
<servlet-name>JavaScriptServlet</servlet-name>
<servlet-class>org.owasp.csrfguard.servlet.JavaScriptServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>JavaScriptServlet</servlet-name>
<url-pattern>/JavaScriptServlet</url-pattern>
</servlet-mapping>
现在我有一个 JSP 文件 userProfile.jsp 1)我已经配置了注入令牌的脚本,例如
<script src="/JavaScriptServlet"></script>
2)现在,我包含了专门用于此JSP文件的jQuery脚本文件
<script src="../js/userProfile.js" type="text/javascript">
</script>
3) 我有文本框 1 - 用于原始密码 4) 我有文本框 2 - 用于新密码 5) 我有文本框 3 - 用于确认密码 6)我有一个更改密码按钮,该按钮将Ajax调用到服务器
<button type="button" name="changePswd" id="changePswd">Change password</button>
7)单击此按钮,$ .ajax(jQuery)函数在JS文件中调用。功能如下:
$("#changePswd").click(
function() {
$.ajax({
url: location.protocol + "//" +location.host + '/my-project/secure/changePassword.html',
data: {
username : $('#userName').val(),
oldPassword : $('#oldPassword').val(),
newPassword : $('#newPassword').val(),
retypeNewPassword : $('#retypeNewPassword').val()
},
success: function(data) {
$("#dialog").dialog('close');
$('#dialog-6').dialog('open');
$('#displayResult-6').html(data);
},
error: function(xhr,status,error) {
$('#displayResult').html('�V');
}
})
});
8) 这个调用被 CSRFGuard 阻止了
警告:潜在的跨站点请求伪造 (CSRF) 攻击被阻止(用户:,ip:10.48.5.88,方法:GET,uri:/my-project/secure/changePassword.html, 错误:请求中缺少所需的令牌)
当浏览器加载预期 /JavaScriptServlet 将注入令牌的 userProfile.jsp 文件时,浏览器向我显示 404 not found for this specific html call
我正在使用: JDK 1.6 CSRFGuard 3.1.0 Weblogic 10.3.6 & jQuery-1.7.1-min.js 请指导我如何在此 AJAX 调用中注入这些令牌! 提前致谢!!
【问题讨论】:
标签: jquery ajax csrf csrf-protection