XSS
XSS全称是跨站剧本进击(Cross Site Scripting),所以我们能够缩写成CSS,下面我们最先引见CSS,先讲挑选器。听着是不是是很新鲜,为了与层叠样式表辨别开来,我们挑选XSS做为其缩写。 XSS进击能猎取页面数据、cookie、挟制前端逻辑、发送要求,盗取网站恣意数据、用户材料、诳骗用户,所以是我们迥殊须要注重的前端安全题目。 我在腾讯云上架了一个网站,特地用来承接种种进击,欢迎来玩。 XSS进击能猎取页面数据、cookie、挟制前端逻辑、发送要求,盗取网站恣意数据、用户材料、诳骗用户,所以是我们迥殊须要注重的前端安全题目。
XSS进击分为反射型XSS进击,直接经由历程URL注入、存储型XSS进击 存储到DB后读取时注入。
XSS进击能够泉源
能够经由历程 动态HTML节点内容、 HTML属性、Javascript、 富文原本对页面举行进击。
浏览器自带防备步伐
X-XSS-Protection, 0
http://123.207.46.233/?from=<script>alert(1)</script>
<img src="2" onerror="alert(1)">
http://123.207.46.233/?from=111";alert(1);"
发出要求时,XSS代码出现在URL里,作为输入提交到服务器端,服务器端剖析后相应,XSS代码随浏览器一同传回给浏览器,末了浏览器剖析实行XSS代码。这个历程像一次反射,故叫反射性XSS。
localhost:3000/?xss=<img src=”null” onerror=”alert(1)”>
浏览器防备功用很有线,只能接见反射型进击且不能防备来自富文本的进击。
HTML内容和属性转译
function html_encode(str) {
if (!str) {
return str;
}
return str.replace(/[<>&"']/g, (all) => {
return {
'<': '<',
'>': '>',
'&': '&',
'"': '"'
"'": '''
}[all]
});
}
然则用以上的要领并不能处理统统的题目,假如将用于的输入当做一个js变量,我们
var escapeForJs = function(str) {
if (!str) {
return ''
}
str = str.replace(/\/g, '\\\\');
str = str.replace(/"/g, '\\"');
return str;
}
富文本防备
运用黑名单风险迥殊大,我们只能运用白名单来过滤。我们起首要知道这个标签是不是正当,其次看标签上的
属性是不是正当。
var cheerio = require('cheerio');
var xssFilter = function (html) {
if (!html) {
return '';
}
var $ = cheerio.load(html);
var whiteList = {
'img': ['src'],
'font': ['color', 'size'],
'a': ['href']
}
$('*').each(function (index, elem) {
let name = elem.name;
if(!whiteList[name]) {
$(elem).remove();
return;
}
for (var attr in elem.attribs) {
if (whiteList[name].indexOf('attr') === -1) {
$(elem).attr(attr, null);
}
}
})
}
下面给人人引见一个神器xss模块,var xss = require(‘xss’),满足你对XSS的统统空想。
CSP
Content Security Policy内容安全战略,用于指定哪些内容能够实行。
比方:
Content-Security-Policy: default-src 'self' // 只允许同域的剧本实行
Cookie特征
cookie是用于前端数据存储,后端经由历程http头设置,要求时经由历程http头传给后端,前端能够读写,恪守同源战略(协定、域名、端口悉数一致)。
域名 有效期 途径 http-only secure(https)
存储个性化设置
存储未上岸时用户的唯一标识符
存储已上岸用户的凭据
存储其他营业数据
用户ID + 署名
sessionId
cookieID
署名防串改
私有变化
http-only
CSRF进击
cross site request forgy,跨站要求捏造
用户上岸A网站、A网站确认身份、B网站向A网站提议要求(带A网站身份)
应用用户上岸态
用户并不知情
完成营业要求
禁用第三方的cookie,same-site
经由历程referer