httponly网络安全

1.什么是HttpOnly?
 
如果您在cookie中设置了HttpOnly属性,那么通过js脚本将无法读取到cookie信息,这样能有效的防止XSS攻击,具体一点的介绍请google进行搜索

2.javaEE的API是否支持?
 
目前sun公司还没有公布相关的API,但PHP、C#均有实现。搞javaEE的兄弟们比较郁闷了,别急下文有变通实现
 
3.HttpOnly的设置样例
 

javaEE

?
1
2
response.setHeader( "Set-Cookie" , "cookiename=value;
Path=/;Domain=domainvalue;Max-Age=seconds;HTTPOnly");

具体参数的含义再次不做阐述,设置完毕后通过js脚本是读不到该cookie的,但使用如下方式可以读取
?
1
Cookie cookies[]=request.getCookies();
C#
?
1
2
3
HttpCookie myCookie = new HttpCookie( "myCookie" );  
myCookie.HttpOnly = true ;  
Response.AppendCookie(myCookie);

VB.NET
?
1
2
3
Dim myCookie As HttpCookie = new HttpCookie( "myCookie" )  
myCookie.HttpOnly = True  
Response.AppendCookie(myCookie)


   但是在 .NET 1.1 ,中您需要手动添加
?
1
Response.Cookies[cookie].Path += ";HTTPOnly" ;

PHP4
?
1
header( "Set-Cookie: hidden=value; httpOnly" );


PHP5
?
1
setcookie( "abc" , "test" , NULL, NULL, NULL, NULL, TRUE);

    最后一个参数为HttpOnly属性

网站的Cookie管理除了限定Domain增强安全性之外,.net 2.0新增一个Cookie属性HttpOnly。很棒!

在做一个cookie功能时用到了Cookie的一个属性HttpOnly

Code

 

原以为这样后,客户端应该无法访问该Cookie了! 

结果,如图

感觉比较诡异,于是再查MSDN

得知原来有两个cookie类。System.Web.HttpCookie  类 和 System.Net.Cookie 类

注意命名空间不同。

两个类的说明分别如下:

 
Cookie 类提供一组用于管理 Cookie 的属性和方法。无法继承此类。 命名空间:System.Net

 HttpCookie 类提供创建和操作各 HTTP Cookie 的类型安全方法。命名空间:System.Web

 

 

 两个类都有HttpOnly属性,分别说明如下:

Cookie.HttpOnly 属性注意:此属性在 .NET Framework 2.0 版中是新增的。确定页脚本或其他活动内容是否可访问此 Cookie。

HttpCookie.HttpOnly 属性注意:此属性在 .NET Framework 2.0 版中是新增的。获取或设置一个值,该值指定 Cookie 是否可通过客户端脚本访问。

问题来了,关键的理解点在于通过什么东东来访问。

不太理解微软机器翻译的“页脚本或其他活动内容”究竟指什么玩意?

于是做测试,建立一个Web Application,

在TestCookie.aspx页面,的Page_Load事件中加入 

Code

 

该段代码的功能主要是测试能否正确读写Cookie

结果如下:

Code

 

 

 

 再建一ConSole Application,

看看能否获取并修改该页面的Cookie

代码如下:

Code

 

运行结果

Code

 

 请注意, c.Value = ck.Value+"--Update";这句在修改Cookie.value后并没有成功写入该页面的Cookie集合中,换言之,一个未知的客户端应用程序并没有通过读取一个页面的Cookie并修改再写入该页面的Cookie集合。

我的理解是:

1、System.Web.httpCookie主要是服务器端应用。System.Net.Cookie主要是客户端程序应用,后者可以读取前者的Cookie属性和值,而不能修改服务器定义的Cookie。

2、System.Web.httpCookie.HttpOnly=true后,客户端脚本无法访问该Cookie,但其他程序仍然可以访问。

 System.Net.Cookie.HttpOnly=true后,因其是客户端程序,故有更多的限制,不允许”页面脚本及其他程序“访问该Cookie, 只有创建它的应用程序可以访问。并且在特定的Domain下。

 

值得注意的是:HttpOnly属性仅对IE 6 SP1以上的版本才有效,在FireFox3.01下也可以!但对于IE5.x的机器,可能就****

本文主要来源:http://www.cnblogs.com/downmoon/archive/2008/09/11/1289298.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值