繁体   English   中英

针对 https 请求缓解 java 中的 session 劫持

[英]Mitigating session hijacking in java for an https request

I have already set useHttpOnly=true in tomcat context.xml and is using a self-signed certificate generated using java keytool in server.xml connector element support to support SSL as follows:

上下文.xml

<Context useHttpOnly="true">
<!-- other code -->
</Context>

服务器.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工具确认更改已经生效:

在此处输入图像描述

我想这实际上并不能使网站免受 session 劫持,因为如果攻击者能够通过嗅探获得有效的 session ID。 如果让用户使用已知的 session ID 进行身份验证,然后通过使用 Z21D6F40CFB511982E4424E0E250A957Z 的知识劫持用户验证的 session。 然后,攻击者可以提供合法的 web 应用程序 session ID 并尝试让受害者的浏览器使用它。

我已经通过嗅探用户(具有管理员角色)的 session ID 并将其用作具有另一个角色的用户的 session ID 使用 burp 套件对此进行了测试。 服务器无法识别活动的 session 请求是来自原始设备还是来自非法使用 session 的攻击者。 我想这就是 SSL 出现的地方。浏览器不信任我的自签名证书,这让我想知道如果我使用其他 SSL 会有什么不同? 它真的让我的网站比自签名证书更安全吗? 或者如果从浏览器的角度来看,它只是证书的可信度? 服务器有什么方法可以检查请求是否来自经过身份验证的用户而不是劫持会话的攻击者?

然后攻击者可以提供一个合法的 web 应用程序 session ID 并试图让受害者的浏览器使用它

以上称为session 固定

To mitigate session fixation after successful login, store the user information temporarily, invalidate the current session, create a new session, copy the user information to the new session.

这样,如果攻击者使用他生成的 session id 生成的 session id,则不会是受害者的 session。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM