Я уже установил useHttpOnly=true
в контексте tomcat. xml и использует самозаверяющий сертификат, сгенерированный с помощью java keytool на сервере. xml Поддержка элемента соединителя для поддержки SSL следующим образом:
context. xml
<Context useHttpOnly="true">
<!-- other code -->
</Context>
server. xml
<Connector port="80" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="my key file location"
keystorePass="keystore password" />
После перезапуска сервера я подтвердил, что изменения вступили в силу с помощью инструментов chrome dev :
:
Полагаю, это фактически не делает сайт невосприимчивым к перехвату сеансов, поскольку, если злоумышленник смог получить действительный идентификатор сеанса нюхая Если пользователя заставляют аутентифицировать себя с помощью известного идентификатора сеанса, а затем перехватывать подтвержденный пользователем сеанс, зная используемый идентификатор сеанса. Затем злоумышленник может предоставить действительный идентификатор сеанса веб-приложения и попытаться использовать его в браузере жертвы.
Я проверил это с помощью пакета Burp, прослушивая идентификатор сеанса пользователя (с ролью администратора) и используя его в качестве идентификатора сеанса пользователя с другой ролью. Сервер не смог распознать, был ли активный запрос сеанса исходным устройством или злоумышленником, который незаконно использует сеанс. Я полагаю, что здесь приходит SSL! Браузер не доверяет моему самозаверяющему сертификату, и это заставляет меня задуматься о том, как бы это изменилось, если бы я использовал другие SSL. Действительно ли это делает мой сайт более безопасным, чем самозаверяющий сертификат? Или это просто надежность сертификатов, если вы посмотрите с точки зрения браузера? Может ли сервер проверить, поступает ли запрос от аутентифицированного пользователя, а не от злоумышленника, который захватил сеанс?