6.1 HTTPS请求中的Cookie
在浏览器的Web页面同源判定中,端口、协议(HTTP/HTTPS)都是要区分的。但是如果HTTP和HTTPS的Cookie也如此区分,那用户从HTTP切换到HTTPS的时候,就又会丢失许多已经保存的状态。不过还好,这个问题不会发生。Cookie与网页的同源判定不同,它有如下特征:
因为Cookie不区分协议,所以不区分端口的特性很好理解。因为这些协议本身就运行在端口上,但是同样的,如果攻击者控制了某站点任意一个协议下的页面,那么它就可以读取到这个站点保存的Cookie。
在Cookie中的Secure标记可以让某个Cookie仅能在HTTPS会话中传输,这可以让Cookie变得稍稍安全一些。但是[RFC6265]也同时指出,攻击者可以通过在非HTTP域中设置Cookie来覆盖掉带有Secure标记的Cookie。即便如此,还是建议在传输时加上Secure标记,因此攻击者只能通过覆盖的方式来覆写Cookie,而不能强迫带有Secure标记的Cookie通过HTTP传输。
7 响应数据的安全检查-XSS过滤器
XSS攻击能成功主要还是依靠网站程序的漏洞,而要让网站管理员消除所有漏洞几乎是不可能的,为了减少XSS攻击给用户造成的损失,浏览器厂商推出了XSS过滤器,以判断代码行为的方式阻断可疑的代码注入攻击,从而保护用户的数据安全。
Chrome和IE浏览器中都引入了原生的XSS,这是防护XSS攻击的一个较为有效的手段。
7.1 IE XSS Filter的实现原理
从IE8 Beta2开始,微软引入了XSS Filter。IE中的XSS Filter基于正则表达式匹配来过滤用户输入中存在的可能有害的内容。IE的XSS Filter在mshtml.dll中实现,因此规则信息也存放在mshtml.dll中。
使用findstr /C:”str{r}”%WINDOW%SYSTEM32mshtml.dll|find”{” 命令可找到本机IE支持的所有规则。微软在更新浏览器时,也会根据情况适时更新规则信息。IE在判断时会扫描URL,对匹配上正则表达式的URL报警,提示发现XSS攻击并将字符替换为“#”。
发起请求且页面有响应时,会触发XSS Filter的扫描过程。在IE读取返回数据前,先XSS Filter会先对HTTP请求数据进行分析。针对文档加载,XSS Filter的处理过程大致描述如下(下载文件、请求资源并不会触发XSS Filter)。
1. 首先,浏览器判断浏览器设置中是否启用了XSS过滤功能,如果开启了,继续下一步,否则中止流程;
2. 对URL进行解析,判断是否为HTTP/HTTPS协议,如果是HTTP/HTTPS协议,继续下一步,否则中止流程;
3. 检查HTTP响应头是否包含X-XSS-Protection字段,如果包含这个字段,则根据值为1或0来准备进行或取消XSS过滤,然后到步骤6。如果没有这个字段,则开始验证URL,到步骤4;
4. 判断要加载的网站所在的安全域设置是否开启了XSS过滤,如果开启了过滤,到步骤5,如果没有开启,则中止流程;
5. 通过Referrer判断这次请求是否是一个跨站请求,如果是,则到步骤6,否则中止流程;
6. 这一步浏览器正式判断是否存在XSS。这是一个比较复杂的过程,首先,浏览器对可能的XSS进行预检测,如URL中输入的标签是否输出到了文档中,只有通过预检测后,才会开始规则检测,也就是上面我们介绍的正则式匹配,如果匹配,认为有XSS,发出提示并修改输出。
但是,IE的解析只是基于文字意义上的解析,许多并不是脚本的输出由于符合了IE的过滤规则,也会被当作跨站脚本过滤。例如
<TEXTAREA><SCRIPT>alert(“userinput”)</ SCRIPT ></ TEXTAREA >
被<TEXTAREA>标签对括起来的部分应当是文本节点,浏览器在解析到文本节点时并不会把它当作HTML代码渲染,但是IE依然会将其当作跨站脚本过滤。这导致IE的误报率偏高。
7.2 Chrome XSSAuditor的工作原理
Chrome的XSS过滤器称为XSSAuditor。类似于IE的XSS Filter,Chrome的XSSAuditor也被整合到了渲染引擎WebKit中,Chrome这么做的原因是因为过滤器可以在脚本执行前拦截它们,而且整合进去之后过滤器可以被任何基于WebKit的浏览器使用。
当页面加载时,XSSAuditor会在页面渲染之前评估用户的输入。它首先检查用户输入是否包含有恶意内容,如果有就拦截。XSSAuditor也会检查用户输入是否会“反射”到正在渲染的页面中,每个HTML页面都有5种类型的元素:HTML实体、HTML属性、Javascript、CSS和URL。因为输出上下文通常有不同的结构和格式,所以XSSAuditor会评估用户输入的上下文是否合法,在遇到非法的内容时将其过滤。
8/13 首页 上一页 6 7 8 9 10 11 下一页 尾页