1. 程式人生 > >設定Jetty伺服器的cookie為secure和httponly

設定Jetty伺服器的cookie為secure和httponly

前一陣在搞一些伺服器安全加固的需求,因為用到Jetty伺服器,使用者要求傳送的cookie必須設定secure和httponly。從網上找了些資料,驗證了半天,分享出來。

比較簡單的方式是直接修改Jetty的配置檔案,預設情況下Jetty安裝後沒有這個檔案。

新建一個檔案命名為jetty-web.xml,放到WEB-INF目錄下,檔案內容:

  1. <?xmlversion="1.0"encoding="ISO-8859-1"?>
  2. <!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure.dtd">
  3. <Configureclass="org.eclipse.jetty.webapp.WebAppContext">
  4.     <Getname="sessionHandler">
  5.         <Getname="sessionManager">
  6.             <Setname="secureCookies"type="boolean">true</Set>
  7.             <Setname="httpOnly"type="boolean">true</Set>
  8.         </Get>
  9.     </
    Get>
  10. </Configure>
重啟一下Jetty伺服器就能夠看到新的Cookie上帶有secure和httponly的標誌了。

簡單解釋一下工作原理,相關類的關係如下:


歸根結底是要設定SessionManager的兩個屬性,通過類的關聯關係可以找到對應的方法。同時,設定WebAppContext的工作由類JettyWebXmlConfiguration來實現,這個類會在WEB-INF目錄下依次查詢 jetty6-web.xml, jetty-web.xml 或者 web-jetty.xml配置檔案。

除此之外,網上也有人嘗試通過修改Java程式碼的方式實現此功能,但沒有驗證過