浏览器进程,渲染进程,插件进程,扩展进程javascript
X-content-security-policy:allow 'self' ;img-src *;media-src media.com
复制代码
反射型 xss 只是简单的把用户输入的数据“反射”给浏览器。黑客须要诱导用户“点击”一个恶意连接,才能攻击成功。html
存储型 XSS 会把用户输入的数据“存储”在服务器端java
经过修改页面的 DOM 结点造成 XSS。从效果来看是反射型 XSS。ajax
在没有设置 HttpOnly 的 cookie 中,攻击者能够经过 document.cookie 获得网站的 cookie。HttpOnly 是在 Set-Cookie 时服务端标记的。浏览器
输入检查通常是检查用户输入的数据中是否包含一些特殊的字符,如 <,> 等。若是发现特殊符号,则将这些字符过滤或者编码。安全
比较智能的“输入检查”,可能会匹配 XSS 的特征。好比查找用户数据中是否包含<script>,javascript 等敏感字符。这种输入检查,叫作“XSS filter”bash
输出检查服务器
防护 DOM Based XSScookie
事实上,DOM Based XSS 是从 javascript 中输出数据到 html 页面里。而前面的防护手段是针对从服务器应用输出到 html 页面的xss 漏洞。session
解决方法:从 javascript 输出到 html 页面,至关于一次 xss 输出的过程,须要分语境使用不一样的编码函数。(javascriptencode,htmlencode)
会触发DOm based xss 的地方:
概念:是攻击者利用用户身份操做帐户的一种攻击方式。
浏览器所持有的 cookie 分为两类:一种是“session cookie”,也称为“临时 cookie”。另外一种是“ third-party cookie”,也称为 “本地 cookie”。
二者的区别在于,third-party cookie 在 set-cookie 时设置了 expire 过时时间,到达过时时间时,cookie 才会失效。session cookie 没有设置过时时间,浏览器关闭,session cookie 就会过时。
session cookie 保存在浏览器进程中。而 third-party cookie 保存在本地。
若是浏览器从一个域的页面中,要加载另外一个域的资源。因为安全缘由,某些浏览器会阻止 third-party cookie 的发送。
P3P Header 是 W3C 制定的一项关于隐私的标准,全称是 The Platform for Privacy Preferences。
若是网站返回给浏览器的 http 头中包含 P3P 投,则在某种程度上来讲,将容许浏览器发送第三方 cookie 。在 IE 下即使是 <iframe>,<script> 等标签也将再也不拦截第三方 cookie 的发送。
验证码被认为是对抗 CSRF 攻击最简洁而有效的防护方法。可是因为处于用户体验考虑,不可能每一个请求都加上验证码的。
referer check 在互联网中最多见的应用就是“防止图片盗链”。同理,referer check也能够被用于检查是否来自合法的“源”
即便咱们能够经过检查 referer 是否合法来判断用户是否被 csrf 攻击,也仅仅是知足了防护的充分条件。
referer check 的缺陷在于,服务器并非何时都能去到 referer。(不少用户出于隐私保护的考虑,限制了 referer 的发送。在某些状况下,浏览器也不会发送referer,好比从 https 跳转到 http ,出于安全的考虑,浏览器也不会发送 referer)
CSRF 可以攻击成功,其本质的缘由是重要操做的全部参数都是能够被攻击者猜想到的。
出于这个缘由,能够经过,把参数加密,或者使用一些随机数,从而让攻击者没法猜想到参数值。
可是因为加密或混淆猴的 URL 将变得很是难读,对于用户体验来讲不是很好。对于数据分析工做来讲,会带来很大的困扰。
因此,请求携带一个 token(一个随机值)是最好的方法。
防护 CSRF 的 Token,是根据 “不可预测性原则”设计的方案,因此 Token 的生成必定要足够随机,须要使用安全的随机数生成器生成 Token。
在使用 Token 时,应该尽可能把 Token 放在表单中。把敏感操做由 GET 变成 POST,以 form 表单(或者 ajax)的形式提交,避免 token 泄露。