如何使用 $.ajax 使用 jQuery 注入 CSRFGuard 安全令牌
How to inject CSRFGuard security tokens using jQuery using $.ajax
我正在使用 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) 单击此按钮时,会调用 js 文件中的 $.ajax (jQuery) 函数。函数如下:
$("#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,method:GET,uri:/my-project/secure/changePassword.html,
error:required 请求中缺少令牌)
当浏览器加载 userProfile.jsp 文件时,/JavaScriptServlet 将注入令牌,浏览器显示 404 未找到此特定 html 调用
我正在使用:
JDK 1.6
CSRFGuard 3.1.0
Weblogic 10.3.6 & jQuery-1.7.1-min.js
请指导我如何在这个 AJAX 调用中注入这些令牌!!
提前致谢!!
要使 ajax 通话正常,您需要执行以下步骤:
1) 在 jsp 页
一种。包含标签 lib
<%@ taglib uri="http://www.owasp.org/index.php/Category:OWASP_CSRFGuard_Project/Owasp.CsrfGuard.tld" prefix="csrf" %>
2) 在元标记中注入安全令牌名称和值,例如
<meta name="_csrf_header" content="<csrf:tokenname/>"/>
<meta name="_csrf" content="<csrf:tokenvalue/>"/>
3) 在 .js 页面上将此值注入 headers like
var csrfHeader = $("meta[name='_csrf_header']").attr("content");
var csrfToken = $("meta[name='_csrf']").attr("content");
var headers = {};
headers[csrfHeader] = csrfToken;
$.ajaxSetup({
headers: headers
});
并且您的 ajax 调用应该通过 CSRFGuard 的测试:)
4) /JavascriptServlet 不工作或在响应中发送 404
但是使 ajax 调用正常工作并不重要
谢谢
我正在使用 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) 单击此按钮时,会调用 js 文件中的 $.ajax (jQuery) 函数。函数如下:
$("#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,method:GET,uri:/my-project/secure/changePassword.html, error:required 请求中缺少令牌)
当浏览器加载 userProfile.jsp 文件时,/JavaScriptServlet 将注入令牌,浏览器显示 404 未找到此特定 html 调用
我正在使用: JDK 1.6 CSRFGuard 3.1.0 Weblogic 10.3.6 & jQuery-1.7.1-min.js 请指导我如何在这个 AJAX 调用中注入这些令牌!! 提前致谢!!
要使 ajax 通话正常,您需要执行以下步骤:
1) 在 jsp 页 一种。包含标签 lib
<%@ taglib uri="http://www.owasp.org/index.php/Category:OWASP_CSRFGuard_Project/Owasp.CsrfGuard.tld" prefix="csrf" %>
2) 在元标记中注入安全令牌名称和值,例如
<meta name="_csrf_header" content="<csrf:tokenname/>"/>
<meta name="_csrf" content="<csrf:tokenvalue/>"/>
3) 在 .js 页面上将此值注入 headers like
var csrfHeader = $("meta[name='_csrf_header']").attr("content");
var csrfToken = $("meta[name='_csrf']").attr("content");
var headers = {};
headers[csrfHeader] = csrfToken;
$.ajaxSetup({
headers: headers
});
并且您的 ajax 调用应该通过 CSRFGuard 的测试:)
4) /JavascriptServlet 不工作或在响应中发送 404 但是使 ajax 调用正常工作并不重要
谢谢