2011-01-25 3 views
0

Это вызывает конфликты, когда пользователь открывает другую страницу на другом окне/вкладке. Итак, как предотвратить эти конфликты? Один из способов - установить сеанс для каждой страницы одинаково. Каждый раз, когда пользователь выйдет из системы/войдет в систему, сеанс будет регенерирован.Важно ли менять сеанс при каждом запросе на страницу?

<?php 
//every page sets its own session if its not ajax so that it dont expire 
if(is_ajax()){ 
$_SESSION['token'] = md5(rand()); 
} 

echo '<div id="token">'.$_SESSION['token'].'</div>'; 
?> 

жетоны будут переданы от div.token выполнять Ajax запросы на JQuery. но затем, когда пользователь открывает другую вкладку, устанавливается новый сеанс, а другая страница возвращает ошибку «Недействительный запрос».

+0

ли вы имеете в виду изменить идентификатор сессии? Зачем вам нужно обновлять новую для каждой загрузки страницы? И почему это вызывает проблемы на новых вкладках - все ли URL-адреса имеют токен? – alex

+0

да все страницы имеют маркеры, которые будут использоваться в запросах ajax и отправке форм – kornesh

+0

кому угодно !? по крайней мере, любые другие методы для CSRF защищают запросы AJAX – kornesh

ответ

1

Наличие нескольких открываемых страниц или вкладок не должно мешать сеансу. Если это так, вы, вероятно, слишком много входите в сеанс.

Что вы храните в сеансе? Похоже, что вы, вероятно, храните что-то в сеансе, который принадлежит URL-адресу.

Edit: После просмотра вашего редактирования, вы можете проверить верхний ответ на этот вопрос:

PHP - CSRF - How to make it works in all tabs?

+0

im только для хранения случайного хеша хд5 для предотвращения атак CSRF. – kornesh

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