随着互联网的高速发展,安全问题已成为企业最关注的焦点之一。而前端又是容易引起安全问题的“窗口”,做为开发人员的咱们,更须要充分了解如何预防和修复安全漏洞。本文将列举常见的前端安全问题,但愿对你有所帮助。前端
本文将从如下几种安全问题展开介绍:git
XSS攻击全称跨站脚本攻击(Cross-Site Scripting),为区别CSS,在安全领域叫作XSS。攻击者经过在目标网站上注入恶意脚本并运行,获取用户的敏感信息如 Cookie、SessionID等,影响网站与用户数据安全。github
开始这种攻击的案例是跨域的,因此叫作“跨站脚本”。可是发展到今天,因为JS的强大以及网站前端应用的复杂化,是否跨域已经再也不重要。但因为历史缘由,XSS这个名字却一直保留下来。web
本质是恶意代码未通过滤,与网站正常的代码混在一块儿,浏览器没法分辨哪些脚本是可信的,致使恶意脚本执行。shell
XSS攻击要素数据库
XSS攻击分类segmentfault
类型 | 存储区 | 插入点 |
---|---|---|
反射型XSS | URL | HTML |
存储型XSS | 后端数据库 | HTML |
DOM型XSS | 后端数据库/前端存储/URL | 前端JS |
反射型XSS攻击后端
反射型XSS只是把用户输入的数据“反射”给浏览器,攻击者每每须要诱使用户操做一个恶意连接,才能攻击成功。反射型XSS也叫作“非持久型XSS”(Non-persistent XSS)跨域
存储型XSS攻击浏览器
存储型XSS会把用户输入的数据“存储”在服务器端,这种XSS具备很强的稳定性
比较常见的一个场景就是,黑客写下一篇包含有恶意JS代码的博客文章,发表后,全部访问该博客文章的用户都会在他们的浏览器中执行这段恶意的JS代码。黑客把恶意的脚本保存到服务器端,因此这种XSS攻击就叫作“存储型XSS”
存储型XSS一般也叫作“持久型XSS”(Persistent XSS)
DOM型XSS攻击
DOM型XSS从效果上来讲也是反射型XSS,经过修改页面的DOM节点造成XSS,称之为DOM型XSS
实际上,这种类型的XSS并不是按照“数据是否保存在服务器端”来划分,单独划分出来,是由于DOM型XSS的造成缘由比较特别,发现它的安全专家专门提出了这种类型的XSS。出于历史缘由,也就把它单独做为一个分类了。
XSS攻击类型区别
存储型XSS的恶意代码存在数据库里,反射型XSS的恶意代码存在URL里
DOM型XSS攻击中,取出和执行恶意代码由浏览器端完成,属于前端JS自身的安全漏洞,而其余两种XSS都属于服务端的安全漏洞
XSS攻击检测
使用XSS攻击字符串手动检测XSS漏洞 github.com/0xsobky/Hac…
使用扫描工具自动检测XSS漏洞 例如Arachni、Mozilla HTTP Observatory、w3af等
XSS攻击防护
针对以上总结的XSS攻击的防护方法,咱们再来针对CSP与HttpOnly进行进一步的了解与分析:
CSP (Content Security Policy)
HttpOnly Cookie
禁止JS读取敏感Cookie,攻击者完成XSS注入后也没法窃取Cookie
XSS攻击带来的不光是Cookie劫持问题,还有窃取用户信息、模拟用户身份执行操做 攻击者利用AJAX构造HTTP请求,以用户身份完成的操做,就是在不知道用户Cookie的状况下进行的。
CSRF(Cross-site request forgery)跨站请求伪造,攻击者盗用受害人身份,以受害人的名义发送恶意请求。 其本质是重要操做的全部参数都是能够被攻击者猜想到的,攻击者只有预测出URL的全部参数与参数值,才能成功地构造一个伪造的请求;反之,攻击者将没法攻击成功。
CSRF攻击要素
CSRF攻击防护
阻止不明外域的访问
提交时要求附加本域才能获取的信息
CSRF测试
经过Web应用接口注入SQL语法,破坏原有SQL结构,达到攻击行为。 若是网站存在注入漏洞,至关于将数据库直接暴露在攻击者面前 根据注入位置及方式不一样分分为POST注入、GET注入、cookie注入、盲注、延时注入、搜索注入、base64注入等
SQL注入要素
SQL注入防护
XXE (XML External Entity)外部实体漏洞,当应用程序解析XML输入时,若是没有禁止外部实体的加载,致使可加载恶意外部文件和代码,形成任意文件读取、命令执行、内网端口扫描等攻击。只在可以接收XML格式参数的接口才会出现
XXE漏洞防护
JSON劫持(JSON Hijacking)是用于获取敏感数据的一种攻击方式,属于CSRF攻击的范畴
JSON劫持防护
XST攻击(cross-site tracing)当Web服务器启用TRACE时,提交的请求头会在服务器响应Body中完整返回,其中HTTP头极可能包括Session Token、Cookies或其它认证信息,攻击者能够利用漏洞获取用户信息
XST攻击防护
禁用HTTP TRACE方法
弱密码(Weak Password)被他人猜到或被破解工具暴力破解
暴力破解防护
Web服务器或应用程序没有正确处理一些特殊请求,泄露 敏感信息,如用户名、密码、源代码、服务器信息、配置信息等
信息泄漏防护