【转】HTTP-only Cookie 脚本获取JSESSIONID的方法
彻底避免xss攻击的方法。
别人可以通过注入js脚本获取你的session cookie,如果幸运的话还可以获取通过js遍历你的dom树获取你的用户的用户名和密码。
如果只是通过正则表达式验证输入的话,各大富文本编辑器总还是可能出现各种漏洞,这样下去是很难达到万无一失的程度的。不过还好有个http头
可以禁用js访问cookie,这个就叫做http only cookie.有此http头,xss漏洞就可以彻底歇菜 了。。
以下转自:http://blog.sina.com.cn/s/blog_539f058a01013rea.html
一般扫描报告等级定为低危,如appscan。
一般的Cookie都是从document对象中获得的,现在浏览器在设置 Cookie的时候一般都接受一个叫做HttpOnly的参数,跟domain等其他参数一样,一旦这个HttpOnly被设置,你在浏览器的 document对象中就看不到Cookie了,而浏览器在浏览的时候不受任何影响,因为Cookie会被放在浏览器头中发送出去(包括ajax的时候),应用程序也一般不会在js里操作这些敏感Cookie的,对于一些敏感的Cookie我们采用HttpOnly,对于一些需要在应用程序中用js操作的cookie我们就不予设置,这样就保障了Cookie信息的安全也保证了应用。
Secure属性:
当设置为true时,表示创建的 Cookie 会被以安全的形式向服务器传输,也就是只能在 HTTPS 连接中被浏览器传递到服务器端进行会话验证,如果是 HTTP 连接则不会传递该信息,所以不会被窃取到Cookie 的具体内容。
HttpOnly属性:
如果在Cookie中设置了"HttpOnly"属性,那么通过程序(JS脚本、Applet等)将无法读取到Cookie信息,这样能有效的防止XSS攻击。
在Java的web应用里,我们要保护的有JSESSIONID这个cookie,因为类似于tomact的容器就是用这个cookie来辨别你的服务器端会话的。所以这个cookie是不应该由客户端脚本来操作的,它很适合用HttpOnly来标识它。
在tomcat6之前只能按照如下方法设置HttpOnly:
String sessionid = request.getSession().getId(); response.setHeader("SET-COOKIE", "JSESSIONID=" + sessionid + "; HttpOnly");
对于tomcat6支持对JSESSIONID的cookie设置HttpOnly, 具体的设置是在context.xml配置文件中进行设置的,为Context标签添加如下属性即可开启或禁止HttpOnly:
<Context path="" docBase="D:/WORKDIR/oschina/webapp" reloadable="false"useHttpOnly="true"/>
也可以在 web.xml 配置如下: <session-config> <cookie-config> <http-only>true</http-only> </cookie-config> </session-config>
可以看出weblogic在10.3.3中支持在weblogic.xml里配置 <session-descriptor> <cookie-http-only>false</cookie-http-only> </session-descriptor>
经过进一步查看10.3.4和10.3.5中都支持该参数的配置 而9.2版本也支持该参数的配置 如下路径http://download.oracle.com/docs/cd/E13222_01/wls/docs92/webapp/weblogic_xml.html#wp1071982 所以好像这个参数出现的版本不太固定
相关路径: http://www.iteye.com/topic/1114228 http://download.oracle.com/docs/cd/E13222_01/wls/docs92/webapp/weblogic_xml.html
http://serverfault.com/questions/151107/http-only-cookies-in-weblogic-what-versions-support-them-how-and-why-are-they-su
http://cn.forums.oracle.com/forums/thread.jspa?threadID=1518073
http://cn.forums.oracle.com/forums/thread.jspa?threadID=953056
对于 .NET 2.0 应用可以在 web.config 的 system.web/httpCookies 元素使用如下配置来启用 HttpOnly
1 |
<httpCookies httpOnlyCookies = "true" …> |
而程序的处理方式如下: C#:
1 |
HttpCookie myCookie = new HttpCookie( "myCookie" ); |
2 |
myCookie.HttpOnly = true ; |
3 |
Response.AppendCookie(myCookie); |
VB.NET:
1 |
Dim myCookie As HttpCookie = new HttpCookie( "myCookie" ) |
2 |
myCookie.HttpOnly = True |
3 |
Response.AppendCookie(myCookie) |
.NET 1.1 只能手工处理:
1 |
Response.Cookies[cookie].Path += ";HttpOnly" ; |
PHP 从 5.2.0 版本开始就支持 HttpOnly
1 |
session.cookie_httponly = True |
【转】HTTP-only Cookie 脚本获取JSESSIONID的方法的更多相关文章
- js读取cookie 根据cookie名称获取值的方法
//方法1 //存在问题:如果cookie中存在 aaaname=aa;name=bb 获取name的值就会出现错误function getCookie(c_name){ if (document.c ...
- 怎样指定当前cookie不能通过js脚本获取
所谓" 不能通过js脚本获取 " 主要指的是: 使用document.cookie / XMLHttpRequest对象 / Request API 等无法获取到当前cookie. ...
- Jmeter中动态获取jsessionid来登录
Jmeter中很多请求的url里会包含jsessionid,如 http://www.xxx.com/xxx_app;jsessionid=xxxxxxxxxx?a=x&b=x.jsessio ...
- 浅谈 php 采用curl 函数库获取网页 cookie 和 带着cookie去访问 网页的方法!!!!
由于近段时间帮朋友开发一个能够查询正方教务系统的微信公众平台号.有所收获.这里总结下个人经验. 开讲前,先吐槽一下新浪云服务器,一个程序里的 同一个函数 在PC测试可以正常运行,在它那里就会挂的 ...
- 在 shell 脚本获取 ip、数字转换等网络操作
在 shell 脚本获取 ip.数字转换等网络操作 ip 和数字的相互转换 ip转换为数字 :: function ip2num() { local ip=$1 local a=$(echo $ip ...
- linux c程序中获取shell脚本输出的实现方法
linux c程序中获取shell脚本输出的实现方法 1. 前言Unix界有一句名言:“一行shell脚本胜过万行C程序”,虽然这句话有些夸张,但不可否认的是,借助脚本确实能够极大的简化一些编程工作. ...
- shell脚本获取mysql插入数据自增长id的值
shell脚本获取mysql插入数据自增长id的值 在shell脚本中我们可以通过last_insert_id()获取id值,但是,需要注意的是,该函数必须在执行插入操作的sql语句之后,立即调用,否 ...
- Python 通过脚本获取Android的apk的部分属性,再通过加密算法生成秘钥。
Python 通过脚本获取Android的apk的部分属性,再通过加密算法生成秘钥. #!/usr/bin/env python # -*- coding: utf- -*- import os im ...
- 设置cookie,获取cookie,删除cookie,修改cookie
怎么设置cookie,怎么设置cookie以及删除cookie和cookie详解 在操作cookie之前,先来看一下cookie长什么样. 可以看到,cookie是一个个键值对(“键=值”的形式)加上 ...
随机推荐
- Bootstrap 基本用法
使用bootstrap框架的步骤: 1.引用bootstrap的css框架,这样可以通过bootstrap来布局: <link rel="stylesheet" href=& ...
- 继承Animation
package cativity.cyq.alphaanimal; import android.view.animation.Animation; import android.view.anima ...
- OC Protocol----协议
类似Java的泛型与接口的结合体,用于类型的<>中,可以多继承(按照OC的说法叫遵从某些协议) 1.定义协议 @protocol Client <NSObject> -(voi ...
- php中magic_quotes_gpc对unserialize的影响
昨天朋友让我帮他解决下他网站的购物车程序的问题,程序用的是PHPCMS,换空间前是好的(刚换的空间),具体问题是提示成功加入购物车后跳转到购物车页面,购物车里为空. 我看了下代码,大致的原理就是将产品 ...
- 零基础Android学习笔记-02 安卓程序生命周期
一个安卓程序生命周期会经历7中状态,并不一定是每次都全部经历.Create,Start,ReStart,Pause,Resume,Stop,Destory. 重载方法,用helloWorld程序去体验 ...
- NAT
WRITE BY YANGWJ 一. 配置静态Nat 实验图如下: 1. 将网络基本条件配置好,包括路由要可达,即pc1可以ping到server1 2. ...
- JS 提示框 alert()、confirm()、prompt()的三者的区别
使用消息框 使用警告.提示和确认 可以使用警告.确认和提示消息框来获得用户的输入.这些消息框是 window 对象的接口方法.由于 window 对象位于对象层次的顶层,因此实际应用中不必使用这些消息 ...
- (转)Yale CAS + .net Client 实现 SSO(6)
第一部分:安装配置 Tomcat 第二部分:安装配置 CAS 第三部分:实现 ASP.NET WebForm Client 第四部分:实现基于数据库的身份验证 第五部分:扩展基于数据库的身份验证 第六 ...
- ubuntu 常用参数设置
在Linux下,对于参数的设置,一般来说,都遵循这个规律.每一个功能程序,一定对于一个对于名字的配置文件. 涉及到多用户的功能配置,一定有一个全局的配置文件,对所有用户都生效,而每个用 ...
- 简明Python中的一个小错误
最近在学Python,先看的是<Python基础教程>,后来经别人推荐,感觉网络上的<简明Python教程>也挺好的,在里面发现一个小错误. 网址如下:http://sebug ...