前端安全

mac2022-10-06  46

前端安全

说起网络安全,SQL注入、DOS攻击、目录遍历、撞库这些名词哪怕不知道意思,也是耳熟能详。这些都是后台安全的知识,那作为一名前端开发者,我们需要具备哪些基础安全知识呢。

简单讲讲前端安全的两个主要方面,XSS攻击和CSRF攻击

一、XSS

全称跨站脚本攻击,从名字就能看出是注入恶意javascript代码。

按持续时间可分为非持久性xss和持久性xss。

按类型可分为DOM-based型、反射型、存储型。

(1)DOM-based型

属于非持久性 XSS,DOM XSS 不需要服务端参与,可以认为是前端代码漏洞导致。

当用户打开带有恶意代码的 URL,浏览器解析执行,前端取出 URL中的恶意代码并执行。

例子1:

代码:<script> eval(location.hash.substr(1)); </script> 链接:http://www.xss.com#alert(document.cookie)

(2)反射型

也属于非持久型XSS,需要经过服务器但是不经过数据库。

当用户打开带有恶意代码的URL,网站服务端将恶意代码从 URL 中取出,拼接在 HTML 中返回给浏览器。

常见于网站搜索、跳转等。

(3)存储型

属于持久型XSS,经过服务器和数据库。

当用户讲恶意代码提交到目标数据库中(不管是数据库、内存还是文件系统等),下次用户打开目标网站时,网站服务端将恶意代码从数据库取出,拼接在 HTML 中返回给浏览器。

常见于带有用户保存数据的网站功能,如论坛发帖、商品评论、用户私信等。

XSS 防御

1.输入输出格式验证,过滤转义字符

2.innerHTML,outerHTML,document.write 与用户输入有关联时需要注意

3.DOM 中的内联事件监听器,如 location、onclick、onerror、onload、onmouseover 等,a 标签的 href 属性,img 的 src,JavaScript 的 eval()、setTimeout()、setInterval() 等,都能把字符串作为代码运行,拼接数据时需要注意。

二、CSRF

全称跨站信息伪造。用户正常登录并未退出网站A之前,在同一浏览器中访问网站B内容(黄色图片、恶意链接),网站B接收到用户请求后,冒充用户向网站A发出请求。

CSRF防御

1.验证 HTTP referer 验证请求来源

2.使用 httpOnly 防止 Cookie 被劫持

3.使用 token 验证请求 Cookie 安全

4.使用自定义请求头

5.验证码加强与用户交互

最新回复(0)