关于Web安全前端能做的事——XSS攻击与预防

什么是Web安全?

Web安全范围很广,主要包括用户的信息安全、数据安全、程序安全等等,网络的普及以及深化,现在网络已经和我们的生活融在一起,可以说水、电、网可以说是现代生活的必需,web安全越来越重要,面临的形势也越来越严峻。

Web前端安全web攻击

由于技术和环境的纷繁复杂,其中每个环节都可能存在安全漏洞,让“有心者”有机可趁。

当然Web安全不仅仅是前端领域的责任,网络,后端,硬件等所有相关的环节都有责任。web攻击的方式主要有XXS、跨站请求伪造(CSRF)、DDOS、DNS劫持和会话劫持等。本节先来讲讲平常最常见的XSS攻击及其预防。

跨站脚本攻击——XSS

跨站脚本攻击Cross-site scripting,简称XSS攻击,是最为常见和也是最基本的Web攻击方法。原理就是在用户的浏览器执行一段恶意的javascript代码来达到窃取信息,获取数据,操作破坏的目的。

比如攻击者可以在网页上发布包含攻击性代码的数据,当浏览者看到此网页时,特定的脚本就会以浏览者用户的身份和权限来执行。

因为这种攻击方式本质还是是通过执行JS来实现的,所以这种攻击又可以分为三种:

1将恶意js代码伪装在页面中,并诱导用户主动点击该链接,于是发起请求,最终恶意代码得以执行;

2 将恶意代码注入到数据库,用户发起相关请求的时候就会被调用执行到这段代码,造成攻击,这种注入到数据库的方式也是一种web攻击方式,后面会提到;

3 DOM型,可以视为上述两种方式的结合,即将恶意JS代码注入到DOM中,当执行到这部分的时候发起攻击。

其实XSS攻击不仅是针对前端领域,一样可以攻击服务端,只是随着越来越多的业务交给了前端处理,所以针对前端的XSS攻击需要引起足够的重视。

Web前端号——XSS攻击

如何预防XSS攻击?

1 提高安全意识

这一点毫无疑问是最基础的,也是最最容易忽略的。在前端的每一个环节都要有安全这根根弦,时刻问自己,这样做是否会有安全漏洞。

前端的工作不仅仅是是实现(效果),更好的实现(性能),还有安全的实现,没有安全,全部白搭

2 编码和检查

尤其在一些输入输出的环境中,要对输入的信息进行检查过滤,进行转义,获取数据方式的选择以及使用加密传输(https要上),平常的编码就要考虑能否保证代码要符合规范。

3 启用CSP

CSP是主流浏览器本身具备的一个功能,但默认状态下是不启用的。需要通过HTTP 头:Content-Security-Policy来开启。CSP实现的主要原理就是限制浏览器在浏览你的网页的时候限制其只能使用从可信任的源下载的资源,并限制不执行行内的js代码,禁用js的eval()函数(这个之前提到过,但没有说明原因)。