# WEB开发的安全之旅(防御篇) | 青训营笔记
这是我参与「第四届青训营 」笔记创作活动的第8天
两个角度看WEB安全问题:攻击与防御
防御篇
1 针对XSS攻击的
- 永远不信任用户的提交内容
- 不要将用户提交内容直接转换成DOM,而是将其作为string对待
防御XSS攻击的现成工具:
-
前端
-主流框架默认防御XSS -google-closure-library
-
服务端(Node)
-DOMPurity
如果要把string直接动态生成DOM,就需要对string转义; 如果允许用户上传svg文件,就要对svg文件进行一次扫描; 尽量避免让用户自定义跳转的链接,否则一定要做好过滤; 如果允许用户自定义样式就也可能会有XSS攻击,需要对能够设置url的地方特别留意。
2 CSP 内容安全策略
SOP同源策略:源就是主机、协议、端口名的一个三元组;同源策略就是同协议、同端口和同主机的一个三同元组。
CSP是一种安全策略,其原理是当浏览器请求某一个网站时,告诉该浏览器申明文件可以执行,什么不可以执行。
- 哪些源(域名)被认为是安全的
- 来自安全源的脚本可以执行,否则直接抛错
- 对eval + inline script 直接拒绝抛错
2 针对CSRF的防御
CSRF--token防御机制
先有页面,后有请求。除了Origin + Referrer,其他判断【请求来自于合法来源】的方式。
if (请求来自合法页面)
then (服务器接收过页面的请求)
then (服务器可以标识)
Token作为识别操作是否是当前用户自己操作的唯一凭证,需要设置为复杂难以被破解的内容。Token需要有一个过期时间。
CSRF--iframe攻击防御机制
界面操作劫持是一种基于视觉欺骗的web劫持攻击,在正常的网页操作按钮上面,放入一个不可见的iframe,实际上用户的操作行为被其不可见的框所劫持,然后执行恶意代码。
HTTPS--不可抵赖:数字签名
个人体会与总结:
安全无小事,注重WEB开发过程中的安全问题!