2014-02-06 2 views
2

Предположим, что у вас есть «код» cookie, содержащий строку из 80 символов, это ваш код доступа для приложения. Рекомендуется обновлять этот код каждый запрос к вашему приложению или же он восстанавливает его при создании первого сеанса страницы? Я решил использовать первый подход, но заметил, что, хотя есть длинный запрос на опрос, невозможно отправить запрос (потому что мне нужно ждать крайних сроков запроса, чтобы получить новый файл cookie). Какие-либо предложения?Безопасность - рекомендуется восстановить коды авторизации для каждого запроса?

+0

Не могли бы вы изменить свой вопрос и, возможно, добавить несколько примеров? Это может объяснить ваш вопрос немного лучше, и вы с большей вероятностью получите ответ. Благодаря! – SilverlightFox

ответ

0

Если вы обновляете свой код по каждому запросу, то кто-то обновляется слишком быстро, они будут работать в состоянии гонки HTTP и потерять свою сессию. Это создает кошмар юзабилити.

Регенерировать ваши идентификаторы сеансов каждый раз, когда увеличивается количество привилегий (например, пользователь входит в систему, или если у пользователей есть функция «изменить привилегию» для переключения между режимом пользователя и режимом администратора и т. Д.). Если вы хотите регулярный таймаут, сделать что-то вроде этого:

session_start(); 
if(!isset($_SESSION['birth'])) $_SESSION['birth'] = time(); 
if(time() - $_SESSION['birth']) > 60) { 
    // Every minute 
    session_regenerate_id(); 
    $_SESSION['birth'] = time(); 
} 

Важнее безопасности использует HTTPS (TLS 1.1+, если вы можете уйти с ним) с HSTS для предотвращения фиксации сессии, указав файл энтропии (/dev/urandom) и, необязательно, сеансы привязки к IP-адресу и пользовательскому агенту. (Вы можете сделать это с помощью подобной логики прикладного уровня с опубликованным выше фрагментом.)

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