Проблема с сеансовыми файлами cookie Websphere 8.5

Чтобы устранить уязвимости, связанные с файлами cookie, я написал обертку по запросу и ответу в одном из своих фильтров. В оболочке запроса я перезаписываю файл cookie, используя следующий код в методе getSession (переопределено)

HttpSession session = getHttpServletRequest().getSession(false);
String value="JSESSIONID=" + session.getId() +"; Path="+getHttpServletRequest().getContextPath()+"/";
        ((HttpServletResponse)response).setHeader("Set-Cookie",value);

В ответном фильтре я переопределил методы addCookie и addHeader, чтобы сделать то же самое.

Приведенный выше код отлично работает для tomcat и jboss, но вызывает проблемы с websphere 8.5.

Для веб-сферы 8.5 он дает нулевой сеанс в методе getSession getHttpServletRequest().getSession(false)

Когда я проверяю сетевой трафик из инструментов разработчика браузеров, то для веб-сферы я заметил, что в ответ добавляется несколько файлов cookie (один, который мы добавили, а другой добавлен сервером), чтобы избежать этого, я сделал настройку в управлении сеансом веб-сферы, чтобы отключить файлы cookie. Это решает проблему с несколькими файлами cookie, но проблема с нулевым сеансом все еще сохраняется.

Как решить эту проблему?

Спасибо


person Suraj Ahirrao    schedule 25.03.2016    source источник
comment
Какие уязвимости вы пытаетесь устранить? Вы никогда не должны вручную вмешиваться в файл cookie сеанса, созданный контейнером сервера, так как он может содержать дополнительную информацию SSO/affinity, а весь идентификатор файла cookie не является обязательным, только идентификатор сеанса, полученный с использованием метода getId(). Пожалуйста, удалите фильтр и создайте PMR, если у вас есть какие-либо сомнения, связанные с безопасностью.   -  person Gas    schedule 25.03.2016


Ответы (1)


У вас не должно быть явного параметра «false» в вашем коде, вы должны передать то, что было передано вашей оболочке. Вероятно, вы прерываете вызывающие абоненты, которые передают значение true, и поэтому неправильно устанавливаете НОВЫЕ сеансы.

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

Почему бы просто не указать путь к файлам cookie в конфигурации, если это все, что вы собираетесь изменить?

person covener    schedule 25.03.2016