Java безопасная сессия

for (prop in obj) {
    alert(prop + ' = ' + obj[prop]);
}
6
задан 22 July 2009 в 06:08
поделиться

4 ответа

Сделать текущий сеанс недействительным и получить новый сеанс:

//invalidate the current session
request.getSession().invalidate();
/*
get another session and get the ID (getSession()) will create a session if one does not exist
*/
request.getSession().getId();
0
ответ дан 8 December 2019 в 18:39
поделиться

Получить существующий; признать его недействительным; создать новый ...

1) Получить текущий сеанс с помощью HttpServletRequest.getSession ();
2) Очистите сеанс: HttpSession.invalidate ();
3) Создайте новый: HttpServletRequest.getSession (true) ;

2
ответ дан 8 December 2019 в 18:39
поделиться

В общем (потому что это вообще не проблема Java, это общая веб-проблема) фиксация сеанса возникает, когда идентификаторы сеанса легко обнаружить или угадать. Основной метод атаки - это когда идентификатор сеанса находится в URL-адресе страницы, например http://example.com/index?sessionId=123 . Злоумышленник может настроить захват сеанса, а затем встроить ссылку на свою страницу, обманом заставив пользователя посетить ее и стать частью своего сеанса. Затем, когда пользователь аутентифицируется, сеанс аутентифицируется. Чтобы избежать этого, не используйте идентификаторы сеанса на основе URL-адресов, а вместо этого используйте файлы cookie

. Некоторые веб-приложения будут использовать сеанс на основе файлов cookie, но устанавливать его из исходного URL-адреса, например при посещении http: // example. com / index? sessionId = 123 увидит идентификатор сеанса в URL-адресе, а затем создаст из него файл cookie сеанса, установив для идентификатора в файле cookie сеанса значение 123. Для смягчения этого риска на сервере создаются случайные идентификаторы сеанса без использования какого-либо пользовательского ввода в качестве начального значения в генераторе.

Существуют также эксплойты на основе браузера, при которых плохо закодированный браузер принимает создание файлов cookie для доменов, которые не являются исходным доменом, но с этим мало что можно сделать. И атаки с использованием межсайтовых сценариев, при которых вы можете отправить команду сценария на атакованный сайт для установки файла cookie сеанса, что можно смягчить, установив для файла cookie сеанса значение HTTP_ONLY (хотя Safari не учитывает этот флаг)

Для Java общий рекомендация

session.invalidate();
session=request.getSession(true); 

Однако в какой-то момент на JBoss этого не произошло.

2
ответ дан 8 December 2019 в 18:39
поделиться

Пока вы аннулируете сеанс, вы все еще находитесь на сервере.

//get stuff out of session you want before invalidating it.
currentSession = request.getSession(true);
UserProfile userProfile = (UserProfile) currentSession.getAttribute("userProfile");

//now invalidate it
currentSession.invalidate();

//get new session and stuff the data back in
HttpSession newSession = request.getSession(true);
newSession.setAttribute("userProfile", userProfile);
9
ответ дан 8 December 2019 в 18:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: