設定Jetty伺服器的cookie為secure和httponly
阿新 • • 發佈:2019-01-07
前一陣在搞一些伺服器安全加固的需求,因為用到Jetty伺服器,使用者要求傳送的cookie必須設定secure和httponly。從網上找了些資料,驗證了半天,分享出來。
比較簡單的方式是直接修改Jetty的配置檔案,預設情況下Jetty安裝後沒有這個檔案。
新建一個檔案命名為jetty-web.xml,放到WEB-INF目錄下,檔案內容:
- <?xmlversion="1.0"encoding="ISO-8859-1"?>
- <!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure.dtd">
- <Configureclass="org.eclipse.jetty.webapp.WebAppContext">
- <Getname="sessionHandler">
- <Getname="sessionManager">
- <Setname="secureCookies"type="boolean">true</Set>
- <Setname="httpOnly"type="boolean">true</Set>
- </Get>
- </
- </Configure>
簡單解釋一下工作原理,相關類的關係如下:
歸根結底是要設定SessionManager的兩個屬性,通過類的關聯關係可以找到對應的方法。同時,設定WebAppContext的工作由類JettyWebXmlConfiguration來實現,這個類會在WEB-INF目錄下依次查詢 jetty6-web.xml, jetty-web.xml 或者 web-jetty.xml配置檔案。
除此之外,網上也有人嘗試通過修改Java程式碼的方式實現此功能,但沒有驗證過