cookie属性

  sre, 开发

secure属性:
该属性高速浏览器只在请求通过如HTTPS的安全通道发送时才加入Cookie。这将有助于防止Cookie通过未加密的请求发送。如果可以通过HTTP与HTTPS同时访问应用程序,那么久存在Cookie以明文传输的可能。
每当cookie包含敏感信息或为一个绘画令牌时,它应该总是通过加密隧道传输。例如,在登录到应用程序并使用cookie设置了绘画令牌之后,测试人员需要验证cookie是有已使用“secure”标志进行标记。如果没有,那么浏览器会允许通过诸如http之类的未加密隧道来传输cookie,这可以让攻击者诱使用户通过不安全的通道提交cookie。

HttpOnly属性:

该属性用于防止如跨站脚本之类的攻击,因为它不允许通过客户端脚本访问Cookie,如Javascript。值得注意的是,并不是所有的浏览器都支持这个功能。
应该总是设置该属性,尽管不是每个浏览器都支持它。该属性可以防止客户端脚本访问cookie,虽然它不能消除跨站脚本所带来的风险,但是的确可以消除一些漏洞利用的向量。请查看是否已设置“httponly”属性

domain属性:
该属性用于比较正在请求URL所在的服务器域。如果域匹配,或者是它的一个子域,那么接下来检查path属性。
注意只有指定域内的主机才可以为该域设置Cookie。同时domain属性不能是顶级域名(如.gov 或 .com),从而防止服务器给另一个域设置任意的Cookie。如果没有设置domain属性,那么生成Cookie的服务器的主机名作为域的默认值。
例如,如果cookie是由位于app.mydomain.com的应用程序设置,但未设置domain属性,随后该cookie便会在发向app.mydomain.com及其子域(如hacker.app.mydomain.com)所有后续请求中重新提交,但不会提交给otherapp.mydomain.com。如果开发人员想放松这个限制,那么他可以把domain设置成mydomain.com 。这种情况下,cookie便会被发送到app.mydomain.com 及其子域的所有请求,如hacker.app.mydomain,甚至是bank.mydomain.com。 如果子域上有一台脆弱的服务器(例如,otherapp.mydomain.com),而且domain属性设置太宽松(例如,mydomain.com),攻击者便可以利用这台脆弱的服务器,来获取Cookie(如会话令牌)。
审查确认domain属性没有设置太松散。正如上面所提到的,它应该设置成需要接收该cookie的服务器。例如,如果应用程序驻留在服务器app.mysite.com上,该属性应设置成“;domain=app.mysite.com”,而不是“;domain=.mysite.com”,因为后者可以允许其他可能存在漏洞的服务器接收到cookie。

Path属性:
除了域,还需为Cookie指定有效的URL路径。如果域和路径都匹配,那么Cookie将会在请求中发送。正如domain属性,如果path设置太松散。可能会导致应用程序易遭受同一服务器上其他应用程序的攻击。例如,如果path属性设置成web服务器根目录“/”,那么应用程序的Cookie可以发送到相同域内的所有应用程序。
正如domain属性,审查path属性有没有设置太松散。即使domain设置足够严格,但如果path设置成根目录“/”,那么该cookie可以写了到统一服务器上安全性较低的应用程序。例如:如果应用程序驻留在/myapp/目录内,我们要验证cookie的路径设置成“;path=/myapp/”,而不是";path=/"或";path=/myapp"。注意结尾“/”必须在myapp后面使用。如果没有的话,浏览器会向任何匹配“myapp”的路径发送cookie,如“myapp-exploited”.

expreies属性:
该属性用于设置永久性Cookie,因此在设定日期之前,Cookie不会失效。该永久性Cookie会被这个浏览器会话及后续会话所使用,直到Cookie过期。一旦超过失效日期,浏览器便会删除这个Cookie。另外,如果没有设置该属性,那么Cookie只在当前浏览器会话中有效,当会话结束时,Cookie便会被删除。
如果该属性设置成一个将来时间,验证cookie没有包含任何敏感的信息。

One Reply to “cookie属性”

LEAVE A COMMENT

Captcha Code