簡體   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