cookie的内容,如图所示:

HTTP response header:

Set-Cookie: <name>=<value>[; <Max-Age>=<age>][; expires=<date>][; domain=<domain_name>]=[; path=<some_path>][; secure][; HttpOnly]

1                      2                                   3                                4                                5                            6            7

由上面可以看到,一个Cookie包含上面7个信息

1) Cookie名称:  cookie名称必须使用只能用在URL中的字符。 一般用字母和数字,不能包含特殊字符。

2) Cookie的值: 该值可以进行转码和加密 (javascript中通过escape,unescape进行转码)

3) Expires: 这个Cookie的过期日期,是一个GMT格式的时间。当过了这个时间之后,浏览器就会将这个Cookie删除掉. 如果没有这个设置,Cookie会在浏览器关闭后消失。

4) Domain:  子域,指定在该子域才可以访问Cookie. 比如要让Cookie在a.test.com下可以访问,但在b.test.com下不能访问,则可以将domain设置成a.test.com

5) Path: 一个路径,在这个路径下面的页面才可以访问该Cookie. 一般设为"/", 以此表示同一个站点的所有页面都可以访问这个Cookie.

6)Secure: 安全性,指定Cookie是否只能通过https协议访问。一般的Cookie使用http协议就可以访问。如果设置Secure值为true,则只有当使用https协议连接时,该Cookie才可以被页面访问.

7) HttpOnly:  这个属性设置很重要,设置了HttpOnly=true, 就限制了非HTTP的API(eg: javascript,applet)访问该cookie. 也就是说通过程序(JS脚本,Applet等)将无法读取到该Cookie信息。这个设置,就防止了javascipt等脚本语言的XSS(跨站脚本攻击).

因为HttpOnly=true时,前端脚本就无法访问或操作cookie了(只能通过后台访问),这样XSS就失效了。但cookie在传递过程中被盗窃的威胁并没有解除(需要设置Secure属性). 另外,该项设置仅仅适用于会话管理的Cookie,而不是其他的浏览器        Cookies.

setcookie("abc","test",NULL,NULL,NULL,NULL,TRUE);
<script>alert(document.cookie);</script>
这里,弹出的框里面,什么内容都没有 setcookie("abc","test");
<script>alert(document.cookie);</script>
这里,弹出的框里面,有这个cookie的值

现在,我们再来说说第(6)个属性,secure属性

当设置为true时,表示创建的Cookie会被以安全的形式向服务器传输,也就是只能在HTTPS连接中被浏览器传递到服务器端进行会话验证。如果连接是HTTP连接,则不会传递该信息,也就不会盗取到Cookie的具体内容.

所以:

secure属性是防止信息在传递的过程中被监听捕获后信息泄漏。 6号位true

HttpOnly属性的目的是防止前端脚本程序获取cookie后进行攻击。7号位true

在.net项目的web.config中, 在<system.web></system.web>节点中增加内容:

<httpCookies httpOnlyCookies="true" requireSSL="true"/>

来实现这个设置.

Web.config文件中关于Cookie安全性的考量和设置的更多相关文章

  1. 如何在web.config文件中配置Session变量的生命周期

    实例说明:在网上购物商城中,为了维护在线购物环境,一般只有注册会员才可以购买商品.实现购物功能时,先通过Session变量记录会员的登录名,然后在购买商品页面通过判断会员是否登录确定其能否购买商品. ...

  2. 在Web.Config文件中使用configSource,避免动态修改web.config导致asp.net重启(另添加一个Config文件用于管理用户数据)

    原文:在Web.Config文件中使用configSource,避免动态修改web.config导致asp.net重启(另添加一个Config文件用于管理用户数据) 我们都知道,在asp.net中修改 ...

  3. Web.config 文件中的 system.webServer

    Web.config 文件中的 system.webServer 节用于指定适用于 Web 应用程序的 IIS 7.0 设置.system.WebServer 是 configuration 节的子级 ...

  4. web.config文件中配置数据库连接的两种方式

    web.config文件中配置数据库连接的两种方式 标签: 数据库webconfig 2015-04-28 18:18 31590人阅读 评论(1)收藏举报    分类: 数据库(74)  在网站开发 ...

  5. Web.Config文件中使用configSource

    我们都知道,在asp.net中修改了配置文件web.config后,会导致应用程序重启,所有会话(session)丢失.然而,应用程序的配置信息放在配置文件里是最佳选择,在后台修改了配置后导致所有会话 ...

  6. 在web.Config文件中添加数据库连接配置

    新建一个网站,打开web.config文件,在connectionString配置节点添加add节点进行数据库进行数据库连接配置代码如下: <connectionStrings> < ...

  7. 使用mvc时,在视图view中使用强类型视图,在web.config文件中添加命名空间namespace的引用不起作用,解决方法

    这是view中的model代码: @model t_user_info 这是web.config配置文件只的代码: <namespaces> <add namespace=" ...

  8. Web.Config文件中添加数据库配置文件

    1获取所有配置文件节点的类ConfigurationManager 2数据库节点<ConnectionStrings> <add> name ="Sqlconnect ...

  9. C#中web.config文件详解

    C#中web.config文件详解 一.认识Web.config文件 Web.config 文件是一个XML文本文件,它用来储存 ASP.NET Web 应用程序的配置信息(如最常用的设置ASP.NE ...

随机推荐

  1. 九度OJ 1165:字符串匹配 (模式匹配)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:3219 解决:1149 题目描述: 读入数据string[ ],然后读入一个短字符串.要求查找string[ ]中和短字符串的所有匹配,输出 ...

  2. 九度OJ 1153:括号匹配问题 (DP)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:5193 解决:2248 题目描述: 在某个字符串(长度不超过100)中有左括号.右括号和大小写字母:规定(与常见的算数式子一样)任何一个左括 ...

  3. mac上完整卸载删除.简单粗暴无脑:androidstudio删除方案

    如果你是mac  ,你删除as ,删不干净也正常,你会发现安装的时候,前面的东西也在.配置文件在,会导致你以前的错误不想要的东西都在. 废话不多说,复制粘贴就是干!!!!~~~~~~~~ 第一步: 复 ...

  4. iOS改变UIAlertView、UIActionSheet、UIAlertController系统字体颜色

    废话不多说,直接上代码,效果是最好的说服力 1.改变UIAlertView字体颜色 [UIView appearance].tintColor = [UIColor greenColor]; 个人还是 ...

  5. Docker中部署puppeteer导出pdf

    最近在做puppeteer容器化的过程中发现问题. 在容器中npm install puppeteer仍然会报错,不能launch 随后错误提示中也给出了官方的文档,https://github.co ...

  6. CMMI过程改进反例

     近期一直在看CMMI的资料,越看认为越有意思.今天看到过程改进的时候,突然想起来之前所在的公司发生的过程改进相关的事儿来. 公司通过CMMI3级认证之后.PMO部门经理(公司还有质量管理部门经理 ...

  7. 一起来学linux:SAMBA服务器搭建

    前面介绍的NFS服务器的用来linux和linux系统之间共享文件和目录的,那如果是linux和windows之间需要共享修改文件该如何操作呢.这据需要用到SAMBA系统.我们首先来看下SAMBA系统 ...

  8. 流畅的python学习笔记:第十一章:抽象基类

    __getitem__实现可迭代对象.要将一个对象变成一个可迭代的对象,通常都要实现__iter__.但是如果没有__iter__的话,实现了__getitem__也可以实现迭代.我们还是用第一章扑克 ...

  9. yum安装软件出错解决方法

    造成yum下载安装时语法出错, 一般是由于python多个版本共存的原因.所以,只需将yum 设置文件固定python 版本,也就是python2 下面的操作能解决版本冲突问题. 1.sudo vim ...

  10. smokeping高级配置

    摘自: http://mayulin.blog.51cto.com/1628315/514367 自定义报警 http://www.cnblogs.com/thatsit/p/6395506.html