2016-07-04 7 views
1

Я использую CSRFGuard 3.1.0 Я настроил сервлет в web.xml

<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) Теперь я включаю файл сценария JQuery посвященный для этого файла JSP

<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, Ури: /my-project/secure/changePassword.html, ошибка: требуется маркер отсутствует в запросе)

И когда браузер загружает файл userProfile.jsp где/JavaScriptServlet является ожидается, чтобы ввести токены, браузер показывает мне 404, не найденный для этого конкретного вызова html

Я использую: JDK 1.6 CSRFGuard 3.1.0 Weblogic 10.3.6 & JQuery-1.7.1-min.js Пожалуйста, руководство меня, как inejct этих маркеров в этом вызове AJAX !! Спасибо заранее!

ответ

0

Чтобы сделать работу АЯКС вызова вам необходимо выполнить следующие шаги:

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 вводят эти значения в заголовках, как

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 в своем ответе но не Релевент сделать работу Аякса позвонить

Благодаря

+0

Я впечатлить с вами ответа. Так что, пожалуйста, просмотрите этот запрос, если у вас есть время - http: // stackoverflow.ком/вопросы/42095851/csrfguard-запрос-маркера делает-не-матч-страница-маркер. Заранее спасибо. – Venki