• HttpCookie.HttpOnly VS Cookie.HttpOnly?(downmoon原创)


    网站的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的机器,可能就****

     欢迎大伙指正。

    邀月注:本文版权由邀月和博客园共同所有,转载请注明出处。
    助人等于自助!  3w@live.cn
  • 相关阅读:
    redis的事务、主从复制、持久化
    redis的数据结构与命令
    redis的安装与配置
    JavaEE权限管理系统的搭建(八)--------角色的增删改
    JavaEE权限管理系统的搭建(七)--------管理用户的增删改
    JavaEE权限管理系统的搭建(六)--------使用拦截器实现菜单URL的跳转权限验证和页面的三级菜单权限按钮显示
    JavaEE权限管理系统的搭建(四)--------使用拦截器实现登录认证和apache shiro密码加密
    admin的基础配置
    ERP能解决企业五大不正常现象
    版本控制
  • 原文地址:https://www.cnblogs.com/downmoon/p/1289298.html
Copyright © 2020-2023  润新知