web安全

同源策略(Same Origin Policy)是一种约定,它是浏览器最核心也最基本的安全功能。
同源是指host、子域名、端口、协议。
在浏览器中,一些标签(<script>、<img>、<iframe>、<link>等)是可以跨域加载资源的而不受同源策略影响的。
对于浏览器来说,除了dom、cookie、xhr会受到同源策略限制外,浏览器加载的一些第三方插件也有各自的同源策略。比方说,flash它主要通过目标网站提供的crossdomain.xml文件(策略文件)判断是否允许当前“源”的flash跨域访问目标资源。
浏览器通过多进程架构和sandbox的保护,提高安全性。浏览器还会周期性地从服务端获取一份最新的恶意网址黑名单,实现对恶意网址的拦截。

 

XSS(跨站脚本攻击):通常指黑客通过“HTML注入”篡改了网页,插入了恶意的脚本,从而在用户浏览网页时,控制用户浏览器的一种攻击。
反射型XSS:恶意代码并没有保存在目标网站,通过引诱用户点击一个链接到目标网站的恶意链接来实施攻击的。
存储型XSS:恶意代码会被存储在服务器端。
常见的XSS payload(恶意脚本),通过读取浏览器Cookie对象,从而发起“cookie挟持”攻击。
XSS攻击利用的技巧:利用字符编码,绕过长度限制(location.hash本身没有长度限制,但是浏览器的地址栏是有长度限制的,要是地址栏的长度也不够用,还可以再使用加载远程JS的方法,来写更多的代码),使用<base>标签,window.name(很多时候window对象不受同源策略限制)等。
XSS防御:
Cookie的“HttpOnly”标识可以防止“Cookie劫持”。
验证码、修改密码前输入旧密码这样的功能都能有效的防止XSS payload。但这并不能限制住XSS攻击。
输入(输出)检查(客户端和服务端都检查)。

 

csrf(跨站点请求伪造)
浏览器所持有的cookie分两种,session cookie和Third-party cookie(本地cookie,保存在本地)。在浏览器进程的生命周期内,tab页内session cookie都有效。利用这点,可以跨站点伪造一些请求,带上这个session cookie,以实现某种目的。

csrf能成功伪造一个请求,主要是能预测url的所有参数和参数值。

预防csrf:参数加密(某些url无法被用户收藏了,给数据分析工作带来困扰),新增参数token等

 

ClickJacking(点击挟持)
一种视觉上的欺骗手段。通过透明不可见的iframe,诱使用户恰好点击在iframe页面的一些功能性按钮上。

 

有关安全的http响应头
X-Frame-Options:deny(拒绝当前页面加载iframe),SAMEORIGIN(frame页面的地址只能为同域名下的页面),ALLOW-FROM(定义可以允许frame加载的页面地址)。

Content-Security-Policy:可以在响应头设置,也可以在meta设置。具体设置查阅MDN。

X-XSS-Protection:当检测到跨站脚本攻击 (XSS)时,浏览器将停止加载页面。
除非显式修改,否则浏览器默认为1:启用XSS过滤。如果检测到跨站脚本攻击,浏览器将清除页面(删除不安全部分)

 

CORS:跨域资源共享。
出于安全原因,浏览器限制从脚本内发起的跨源HTTP请求。 例如,XMLHttpRequest和Fetch API遵循同源策略。但如果响应报文包含正确的cors响应头,可以访问跨域资源。
对于“非简单请求”,浏览器先使用options方法发起预检请求,从而获取服务端是否允许该跨域请求。服务端确认后才发起实际的http请求。

 

 参考:

 

posted @ 2019-04-07 10:52  Dida-1209  阅读(97)  评论(0编辑  收藏  举报