设置Jetty服务器的cookie为secure和httponly

前一阵在搞一些服务器安全加固的需求,因为用到Jetty服务器,用户要求发送的cookie必须设置secure和httponly。从网上找了些资料,验证了半天,分享出来。

比较简单的方式是直接修改Jetty的配置文件,默认情况下Jetty安装后没有这个文件。

新建一个文件命名为jetty-web.xml,放到WEB-INF目录下,文件内容:

<?xml version="1.0"  encoding="ISO-8859-1"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure.dtd">

<Configure class="org.eclipse.jetty.webapp.WebAppContext">
    <Get name="sessionHandler">
        <Get name="sessionManager">
            <Set name="secureCookies" type="boolean">true</Set>
            <Set name="httpOnly" type="boolean">true</Set>
        </Get>
    </Get>
</Configure>
重启一下Jetty服务器就能够看到新的Cookie上带有secure和httponly的标志了。

简单解释一下工作原理,相关类的关系如下:

设置Jetty服务器的cookie为secure和httponly_第1张图片

归根结底是要设置SessionManager的两个属性,通过类的关联关系可以找到对应的方法。同时,设置WebAppContext的工作由类JettyWebXmlConfiguration来实现,这个类会在WEB-INF目录下依次查找 jetty6-web.xml, jetty-web.xml 或者 web-jetty.xml配置文件。


除此之外,网上也有人尝试通过修改Java代码的方式实现此功能,但没有验证过


你可能感兴趣的:(DB,cookie,jetty,服务器安全)