`
conkeyn
  • 浏览: 1502782 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

cookie的secure、httponly属性设置

 
阅读更多
一、属性说明:
1 secure属性
当设置为true时,表示创建的 Cookie 会被以安全的形式向服务器传输,也就是只能在 HTTPS 连接中被浏览器传递到服务器端进行会话验证,如果是 HTTP 连接则不会传递该信息,所以不会被窃取到Cookie 的具体内容。
 
2 HttpOnly属性
如果在Cookie中设置了"HttpOnly"属性,那么通过程序(JS脚本、Applet等)将无法读取到Cookie信息,这样能有效的防止XSS攻击。
 
对于以上两个属性,
首先,secure属性是防止信息在传递的过程中被监听捕获后信息泄漏,HttpOnly属性的目的是防止程序获取cookie后进行攻击。
其 次,GlassFish2.x支持的是servlet2.5,而servlet2.5不支持Session Cookie的"HttpOnly"属性。不过使用Filter做一定的处理可以简单的实现HttpOnly属性。GlashFish3.0(支持 servlet3.0)默认开启Session Cookie的HttpOnly属性。
也就是说两个属性,并不能解决cookie在本机出现的信息泄漏的问题(FireFox的插件FireBug能直接看到cookie的相关信息)。
 
 
二、实例
项目架构环境:jsp+servlet+applet
 
1 添加HttpOnly和secure属性
根 据之前的说明,GlassFish2不支持Session Cookie的HttpOnly属性,以及secure属性也需要自己进行设置,所以最后的处理方法是:在工程各添加一个Filter,对请求的入口页面 (或者是请求后跳转到的第一个客户可见的页面,一般是登陆页面),重新设置客户端的session属性。 (response.setHeader("SET-COOKIE", "JSESSIONID=" + sessionid + ";Path=/ccrl;secure;HttpOnly"); 可以看出,这句话的前提是这里只能使用Session  Cookie这唯一一个Cookie,不能使用其他Cookie在浏览器和服务器之间交互,否则会清除其他Cookie信息,如果一定要支持其他的 Cookie,可以在Header下功夫)
 
2 修改程序中不兼容的代码(ccrl113)
(1)现象:在Session Cookie被设置为HttpOnly属性后,因为程序再也取不到客户端Session Cookie的内容,导致Applet发送URLConnection请求到服务器时,无法从浏览器中读取到sessionID,致使一些依赖于session中内容的URLConnection无法返回正确的结果。
         解决:在启动Applet时先将SessionID信息传入到applet中,然后在URLConnection发送请求时,重新设置Session Cookie信息。urlCon.setRequestProperty("Cookie", "JSESSIONID=" + ssid + ";Path=/ccrl113;secure;HttpOnly");
 
(2)现象:在Dynamic Analysis启动时,在jsp页面中存在使用URLConnection访问servlet的情况,可是在HTTPS的情况下,不允许jsp使用URLConnection访问servlet(从现象推论)。
         解决:将servlet中的内容重构抽取成工具类或是实体类供jsp页面使用。因为jsp页面和servlet都是服务器端,所以完全可以避免jsp页面通过URLConnection访问servlet。
 
 
(3)JBOSS的设置
找到<myJBossServerInstancePath>/deploy/jbossweb.sar/context.xml
 
<Context cookies="true" crossContext="true">
    <SessionCookie secure="true" httpOnly="true" />
    ......
</Context>
 
可以使用专门的工具(fiddler2burp)对安全性进行测试。
分享到:
评论

相关推荐

    cookie设置httpOnly和secure属性实现及问题

    该文档整合了cookie的httponly和secure的简介,已经设置该属性时会遇到的问题,以及设置属性的方式

    Session Cookie的HttpOnly和secure属性

    首先,secure属性是防止信息在传递的过程中被监听捕获后信息泄漏,HttpOnly属性的目的是防止程序获取cookie后进行攻击。 其次,GlassFish2.x支持的是servlet2.5,而servlet2.5不支持Session Cookie的"HttpOnly"属性...

    session配置secure和httpOnly

    本文档描述了关于cookie的http-only和secure的简介,和如何设置该属性,以及设置该属性会遇到的问题解决方法

    web常见漏洞

    本ppt根据当前Web应用的安全情况,列举了Web应用程序常见的漏洞及危害,并给出防范措施。

    饼干

    HttpOnly属性) 同一站点的cookie(属性SameSite的值可以为Strict,Lax或None) 第三方Cookie(横幅广告) 执行 设置或更新cookie,在HTTP响应中使用Set-Cookie标头 读取cookie使用HTTP请求中的Cookie标头 删除...

    nginx-goodies-nginx-sticky-module-ng-08a395c66e42.zip

    Sticky是nginx的一个模块,它是基于cookie的一种nginx的负载均衡解决方案,通过分发和识别cookie,来使同一个客户端的请求...[secure] 设置启用安全的cookie,需要HTTPS支持 [httponly] 允许cookie不通过JS泄漏,没用过

    psr7-cookies::cookie:烘烤cookie以获取PSR-7消息

    // Set a cookie with custom values.$ cookie = new SetCookie ( 'name' , 'value' , time () + 3600 , '/path' , 'domain.tld' , $ secure , $ httpOnly , $ sameSite );// Set a cookie to delete a cookie.$ ...

    带你了解web的本地储存

    5.1 设置5.1.1 客户端设置5.1.2 服务器端设置5.2 读取5.3 修改 cookie5.4 删除5.5注意6、cookie的属性(可选项)6.1过期时间7、cookie的域概念(domain选项)7.1客户端设置7.1服务端设置8、cookie的路径概念(path...

    PHP7创建COOKIE和销毁COOKIE的实例方法

    setcookie ( string $name [, string $value = "" [, int $expire = 0 [, string $path = "" [, string $domain = "96net.com.cn" [, bool $secure = false [, bool $httponly = false ]]]]]] ) : bool setrawcookie...

    secure_headers:使用许多安全默认值管理安全头的应用

    它还可以使用Secure,HttpOnly和SameSite属性标记所有http cookie。 这是默认设置,但可以使用config.cookies = SecureHeaders::OPT_OUT 。 secure_headers是一个具有全局配置,每个请求覆盖和机架

    幻影Webzine.1.7z

    就可以设置abc这个cookie,将其设置为HttpOnly,document将不可见这个Cookie。因为 setcookie函数本质就是个header,所以一样可以使用header来设置HttpOnly。然后再使用 [removed]就可以看到已经取不到这个Cookie了...

    Go语言Cookie用法分析

    本文实例讲述了Go语言Cookie用法。分享给大家供大家参考,具体如下: web 开发免不了要和 cookie 打交道。Go 的 http 库也提供了 cookie 的相关操作。 ... Secure bool  HttpOnly bool  Raw 

    parse-cookie-phantomjs:解析cookie以在PhantomJS中使用

    不推荐使用 解析cookie-phantomjs 解析cookie以在PhantomJS中使用 接受一个cookie字符串,并返回一个准备好传递给 。... httponly: false, secure: false, expires: 'Infinity' } */ 执照 麻省理工学院:copyright:

    Cookies:基于Keygrip的已签名和未签名的Cookie

    饼干 Cookies是用于获取和设置HTTP(S)cookie的模块。 可以使用对Cookie进行签名... 安全:默认情况下,所有cookie均为httponly ,默认情况下,通过SSL发送的cookie是secure的。 如果您尝试通过不安全的套接字发送安

    CyberDragon Browser:Cyber​​Dragon Browser - 隐私增强的便携式浏览器-开源

    默认情况下,只允许设置了 Secure 和 HttpOnly cookie 属性的会话 cookie。 此外,默认情况下会阻止所有 3rd 方 cookie。 这些设置可以被站点覆盖,阻止或允许特定的 cookie,允许非常细粒度的 cookie 控制。 - ...

    simplesession:对Golang的基于文件的会话支持

    "/", Domain: "example.com", //your domain Expires: time.Unix(1, 1) // Optional time for cookie persistent on browser MaxAge: 24 * 60 * 60, //expiry time of session cookie Secure: false, HttpOnly: ...

    会话:Express的简单会话中间件

    表达会议 安装 这是通过提供的模块。 使用完成 : $ npm install express-session API var session = require ( 'express-session' ) ... 默认值为{ path: '/', httpOnly: true, secure: false, maxAge: null }

    node.js中express-session配置项详解

    官方地址:阅读 作用:用指定的参数创建一个session中间件,sesison...cookie:也就是session ID的cookie,默认是{ path: ‘/’, httpOnly: true, secure: false, maxAge: null }. var Cookie = module.exports = fun

    http-master 源码

    auto coro = coro::start([]{ try { ... "{ \"UserId\": \"matt\", \"Password\": \"matt\"} " ); ... auto sessionId = res.cookie("SessionId");... std::cout ... std::cout &lt;&lt; sessionId.secure() &lt;&lt; std::end

Global site tag (gtag.js) - Google Analytics