We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
可以落地的才是好的方案~
不安全还提什么优化?
跨网站指令码(英语:Cross-site scripting,通常简称为:XSS)
如何攻击
XSS 攻击是指,通过执行恶意脚本,以实现窃取用户登陆态、劫持会话等目的的攻击方式。恶意脚本的输入源有,Cookies、Post 表单、Get 请求、HTTP 头内容等。通常,我们将一段 XSS 攻击的代码片段称之为 XSS 向量。
如何防御
cookie不可被获取:
cookie
输入输出的内容,对于引号,尖括号,斜杠进行转义:
function escape(str) { str = str.replace(/&/g, "&"); str = str.replace(/</g, "<"); str = str.replace(/>/g, ">"); str = str.replace(/"/g, "&quto;"); str = str.replace(/'/g, "'"); str = str.replace(/`/g, "`"); str = str.replace(/\//g, "/"); return str; }
通过转义可以将攻击代码 <script>alert(1)</script> 变成
<script>alert(1)</script>
// escape('<script>alert(1)</script>'); <script>alert(1)</script>
对于显示富文本来说,不能通过上面的办法来转义所有字符,因为这样会把需要的格式也过滤掉。这种情况通常采用白名单过滤的办法,当然也可以通过黑名单过滤,但是考虑到需要过滤的标签和标签属性实在太多,更加推荐使用白名单的方式(如 sanitize-html)。
var xss = require("xss"); var html = xss('<h1 id="title">XSS Demo</h1><script>alert("xss");</script>'); // -> <h1>XSS Demo</h1><script>alert("xss");</script> console.log(html);
以上示例使用了 js-xss 来实现。可以看到在输出中保留了 h1 标签且过滤了 script 标签
h1
script
CSP 通过白名单控制,仅允许加载指定的资源:
通常可以通过 HTTP Header 中的 Content-Security-Policy 来开启 CSP
Content-Security-Policy
Content-Security-Policy: default-src ‘self’
Content-Security-Policy: img-src https://*
Content-Security-Policy: child-src 'none'
更多属性可以查看 这里
跨站请求伪造(英语:Cross-site request forgery)
⬆ 返回顶部
两个思路方向:降低网络请求数量与加快网络速率
减少网络请求数量:
精灵图,HTTP Cache
加快网络速率:
CDN,DNS 预解析,gzip
注意:只有 get 类型的资源可以被 http 缓存。
我们可以使用强缓存加协商缓存共同处理。配置合适的 Cache-Control max-age时间,这样在这段时间内浏览器可以复用本地缓存的资源。
Cache-Control
max-age
需要后端同学配合实现~
一、SEO
二、资源加载
三、优化打包体积
The text was updated successfully, but these errors were encountered:
因为HTTP2的支持范围的提高,以往在 HTTP1.1时代的优化策略早就已经过时了。现在减少网络请求数量已经不太能算是好的优化方法
Sorry, something went wrong.
No branches or pull requests
前言
可以落地的才是好的方案~
目录
安全
不安全还提什么优化?
XSS
如何攻击
XSS 攻击是指,通过执行恶意脚本,以实现窃取用户登陆态、劫持会话等目的的攻击方式。恶意脚本的输入源有,Cookies、Post 表单、Get 请求、HTTP 头内容等。通常,我们将一段 XSS 攻击的代码片段称之为 XSS 向量。
如何防御
cookie
不可被获取:输入输出的内容,对于引号,尖括号,斜杠进行转义:
通过转义可以将攻击代码
<script>alert(1)</script>
变成对于显示富文本来说,不能通过上面的办法来转义所有字符,因为这样会把需要的格式也过滤掉。这种情况通常采用白名单过滤的办法,当然也可以通过黑名单过滤,但是考虑到需要过滤的标签和标签属性实在太多,更加推荐使用白名单的方式(如 sanitize-html)。
以上示例使用了 js-xss 来实现。可以看到在输出中保留了
h1
标签且过滤了script
标签CSP 通过白名单控制,仅允许加载指定的资源:
通常可以通过 HTTP Header 中的
Content-Security-Policy
来开启 CSP更多属性可以查看 这里
CSRF
⬆ 返回顶部
网络
两个思路方向:降低网络请求数量与加快网络速率
减少网络请求数量:
精灵图,HTTP Cache
加快网络速率:
CDN,DNS 预解析,gzip
HTTP Cache
注意:只有 get 类型的资源可以被 http 缓存。
我们可以使用强缓存加协商缓存共同处理。配置合适的
Cache-Control
max-age
时间,这样在这段时间内浏览器可以复用本地缓存的资源。需要后端同学配合实现~
⬆ 返回顶部
性能优化
一、SEO
二、资源加载
三、优化打包体积
参考链接
The text was updated successfully, but these errors were encountered: