龙空技术网

web安全-客户端脚本安全

木槿花开001 64

前言:

今天小伙伴们对“js监听iframe关闭”都比较着重,我们都想要了解一些“js监听iframe关闭”的相关知识。那么小编也在网上搜集了一些关于“js监听iframe关闭””的相关知识,希望我们能喜欢,姐妹们一起来了解一下吧!

web安全--客户端

浏览器安全跨站脚本攻击攻击Xss(Cross Site Scripting)跨站点请求伪造CSRF(cross site Request Forgery)点击劫持clickKackingCookie和set-Cookie浏览器安全

首先,浏览器不是看见啥就解析啥。

同源策略规定(same origin policy):不同域的客户端脚本(js,flash)在没有明确授权(比如,ajax默认不允许跨域)的情况下,不能读写对方的资源(比如,读document中的cookie信息)。比如:同域资源可以使用iframe可以允许嵌套,或者脚本同源

(注意:window,script,iframe,linkimg这几个标签是可以实现跨域,浏览器没有做限制)

解决方案

对应的安全策略:csp安全策略

Csp(content security policy)安全策略:

Content-Security-Policy:script-src 'self' 'unsafe-inline' 'unsafe-eval' *;// csp内容安全策略

X-Content-Type-Options

不开启:浏览器会可以使用内容或者MIME嗅探覆盖响应Content-Type,使用隐式内容类型猜测和处理数据(可能会把不可执行的MIME转为可执行的MIME类型)

Nosniff:反(禁止)MIME嗅探头行为-用来确保文件不会监听到其他内容,防止基于MIME混淆:设置后,浏览器加载资源的时候,则一定会根据响应头的类型Content-Tytpe首部对MIME类型的设定去解析资源并执行,Script和styleSheet元素会拒绝包含错误MIME类型的响应,文件和Content-Type一一对应

不局限于js和css,还会涉及json,img等,主要是IE,谷歌不影响

跨站脚本攻击

指攻击者利用网站程序对用户输入过滤检查不足的缺陷,对目标网站注入恶意代码html或者js等和正常代码混淆在一起(浏览器不能区分哪些是恶意代码),当用户浏览或执行改网站时,导致恶意代码或者脚本被执行,从而读取cookie,盗用用户资料,利用用户身份的某种动作或者访问者进行病毒侵害的一种方式

反射性跨站攻击(非持久型xss)存储型跨站加攻击(持久型xss)DOM型跨站攻击

解决方案

X-XSS-Protection:HTTP响应首部,针对跨站脚本攻击XSS的一种对策,用于控制浏览去的XSS防护机制开关

可选值:

Ø 0:将xss过滤设置成无效状态

Ø 1:将xss过滤设置成有效状态

Ø 1;modeblock:启用xss保护,并在检查到xss攻击时,停止渲染页面(比如:ie8会被#替换页面内容,不加载危险内容)

1.尽量不要从url,document.from,document.referrer中直接拿数据去页面渲染,渲染前校验escape转义,取消可以识别的标签。

2.避免使用eval()解析

3.过滤/验证输入数据,客户端,服务端进行双重校验

4.编码输出(用来确保输入的字符被视为数据,而不是作为html被浏览器所解析)

5.确保输出数据不会影响html渲染

6.Cookie安全

7.输入检查,必须对所有输入中的script、iframe等字样进行严格的检查和html escape转义,特殊字符,比如‘’,>结尾,完整标签类,事件类

跨站点请求伪造CSRF(cross site Request Forgery)

CSRF(Cross Site Request Forgery),即跨站请求伪造,是一种常见的Web攻击,它利用用户已登录的身份,在用户毫不知情的情况下,以用户的名义完成非法操作。

攻击者诱导进入第三方网站,在第三方网站中向被攻击的网站发起攻击,借用目标用户的权限(挟持用户在当前已经登录的网站上)做一些借刀杀人的事情(借用不是盗用权限,盗取一般是xss做的),达到冒充用户对被攻击网站去造成攻击。

伪造:所有不是用户意愿执行的操作都属于伪造,不仅仅局限于get

解决方案

1.refer检查,防止盗链

2. csrfToken:url中附加token不对不允许提交,不同域防重复提交,session中用一个token校验是不是当前session内有效的。Token不要放在html中,因为html可以xss攻击

3. 参数加密,或者随机数达到不可预测

4. 为每个窗体生成唯一的nonce,侧重于重要表单,比如有重要敏感信息的form。目的:不可预测,不可篡改(与上类似)例如:form防重复提交-主要是验证,不是防重复

问题:csrfToken和cookie都在header中,为什么csrfToken可以防止csrf?

Cookie会自动带上,如果cookie还未失效,则被网站的当做是用户的正常请求。

csrfToken不会自动带上,验证不通过

点击劫持clickKacking

点击劫持是一种视觉欺骗(本质)的攻击手段。攻击者将需要攻击的网站通过 iframe 嵌套的方式嵌入自己的网页中,并将 iframe 设置为透明,在web页面中透出一个按钮诱导用户点击,实际执行的是隐藏的jframe的执行操作

js禁止iframe嵌套:frame busting

安全头X-frame-options :http响应首部字段,用于给浏览器指示允许一个页面是否可以在<frame>,<iframe>,<embed>或者<object>。控制网站内容在其他web网站的frame标签内的显示问题,主要防止点击劫持

DENY:拒绝任何嵌套iframe,不加载任何iframe页面 SAMEORIGIN:只有同源可嵌ALLOW_FROM origin:只有执行origin可嵌套

1.高版本废弃使用,用csp替代

2.http响应首部字段,设置在MIME里面无效<meta http-equiv=”X-Frame-Options” content=”DENY”>没有任何作用

Cookie

Cookie:服务器接收到的cookie的信息--请求首部字段

Set-Cookie:开始状态管理使用的cookie信息,---响应首部字段

Set-Cookie: USERID=c7888882e039b32fd7b4d3; expires=Tue, 01 Jan 2030 00:00:00 GMT; path=/; domain=.foo.com

Cookie设置:

Expires:cookie的过期时间(客户端时间),若不明确指定默认为浏览器关闭为止;

domain:指定了哪些主机可以接受cookie,作为cookie使用对象的域名;

Path:指定了主机下哪些path可以接受cookie,作为cookie使用对象的path,可访问资源;

httpOnly:只读标志;设置后客户端脚本就无法读写改cookie,限制js访问:document.cookie,可以有效的防止跨站脚本攻击对cookie的窃取(ie9)

secure:标志,表明cookie仅通过https协议进行安全传输,如果是http则不带此cookie。【chrome52+,firefox52+ http无法使用用secure】

标签: #js监听iframe关闭