2016-09-07 2 views
0

Мы используем синхронизатор маркер для предотвращения CSRF уязвимости нижереализация CSRF токен в Struts 1

1> saveToken(request) 
2> <input type="hidden" 
    name="<%=org.apache.struts.taglib.html.Constants.TOKEN_KEY%>" 
    value="<bean:write name="<%=Globals.TRANSACTION_TOKEN_KEY%>"/>"> 
3> isTokenValid(request) 

исправления не работает из-за фишку не обновляются. что может быть причиной этого.

Кроме того, какая разница, ниже код сделает

isTokenValid (запрос, сброс)

ответ

0

В ходе акции, которая отображает страницу редактирования, вызовите метод saveToken.

saveToken(request) 

Это вызвало новый маркер и сохраняет его на сеансе (html:form тег определяет это значение и сохраняет его в качестве скрытой стоимости на вашей HTML формы ). Вам действительно не нужно создавать скрытый элемент ввода в вашем JSP, потому что метод saveToken вместе с html:form создаст его.

Во время действия, которое сохраняет ваши данные, вы вызываете метод isTokenValid. Этот метод проверяет, что представленное значение соответствует маркеру, сохраненному в сеансе.

На данный момент, и если маркер действительно, у вас есть два варианта:

  1. Вы можете позвонить resetToken, который очищает маркер на сессии. Итак, если пользователь снова отправляет страницу, токен в сеансе должен быть очищен, а второй вызов isTokenValid завершится с ошибкой.

  2. В качестве второго параметра передается значение isTokenValid. После этого вы сбросите токен.

    isTokenValid(request,true) 
    

Вы можете найти более подробную информацию в Struts API из:

  1. isTokenValid(javax.servlet.http.HttpServletRequest request)
  2. saveToken(javax.servlet.http.HttpServletRequest request)

Надеется, что это поможет вам.

+0

Пожалуйста, объясните немного о своем решении, а затем просто обратитесь к другому сообщению. – yakobom

+0

@yakobom Извините, я отредактировал ответ. – Joel

+0

Большое спасибо. Это лучше, отличная работа. – yakobom

Смежные вопросы