天天看点

前端安全性问题

**

1、XSS攻击(跨站脚本攻击)

**

XSS(Cross Site Scripting)是常见的web攻击技术之一。所谓的跨站脚本攻击是指:恶意攻击者往web页面里注入代码,当用户浏览这些网页时就会执行其中的恶意代码,可以对用户进行cookie信息、会话劫持等各种攻击。

解决方案:

(1)输入过滤。永远不要相信用户的输入,对用户输入的数据做一定的过滤。这样可以初步对XSS漏洞进行防御。这些措施只是在web端做了限制,攻击者通过抓包工具如Fiddler还是可以绕过前端输入的限制,修改请求注入攻击脚本。

因此,后台服务器需要在接收到用户数据以后,对特殊危险字符进行过滤或者转义处理,然后再存储到数据库中。

(2)输出编码。服务器端输出到浏览器端的数据可以使用系统的安全函数来进行编码或者转义来防范xss攻击。比如js的编码方式可以使用JavaScriptEncode。

(3)安全编码。开发时候需要尽量避免Web客户端文档重写、重定向或者其他敏感操作,同时需要避免使用客户端数据,这些操作尽量在服务器端使用动态页面来实现。

(4)HTTPOnly Cookie。这是预防XSS攻击窃取用户cookie最有效的防御手段。web应用程序在设置cookie时将其属性设置为HttPOnly,可以避免该网页的cookie被客户端恶意JavaScript窃取从而保护用户的cookie信息。

(5)WAF(Web Application Firewall),web应用防火墙,主要功能是防范网页木马、XSS攻击以及一些其他web漏洞攻击,由第三方公司开发。

## **

2、CSRF攻击(跨站请求伪造)

** ##

CSRF(Cross Site Request Forgery)即跨站请求伪造是一种常见的web攻击。

攻击原理:

a、用户打开浏览器,访问受信任网站A,输入用户名和密码请求登录网站A;

b、在用户信息通过验证之后,网站A产生Cookie信息并返回给浏览器,此时用户登录网站A成功,可以正常发送请求到网站A;

c、用户未退出网站A之前,在同一浏览器中打开一个TAb网页访问网站B;

d、网站B在接收到用户请求后返回一些攻击性代码,并发出一个请求要求访问第三方站点A;

e、浏览器在接收到这些攻击性代码后,根据网站B的请求,在用户不知情的情况下携带Cookie信息,向网站A发出请求。网站A并不知道该请求其实是由B发起的,所以会根据用户的Cookie信息以用户的权限处理该请求,导致来自网站B的恶意代码被执行。

解决方案:

(1)验证HTTP Referer字段。根据HTTP协议,在HTTP头中有一个字段交Referer,它记录了HTTP请求的来源地址。当浏览器向web服务器发送请求时,一般会带上Referer信息告诉服务器这是从哪个页面链接过来的,服务器就可以得到一些信息来检查请求的来源来防御CSRF攻击。但是在某些情况下如从https跳转到http,浏览器处于安全考虑,不会发送referer,这样服务器就无法进行检查了,所以验证HTTP Referer字段并不能作为防御CSRF攻击的主要手段,但是可以用来监控CSRF攻击的发生。

(2)在请求地址中添加token并验证。发送请求时在HTTP请求中以参数的形式加入随机产生的一个token,并在服务器端建立一个拦截器来验证这个token。但是在处理多个页面共存问题时,当某个页面消耗掉token时,其他页面的表单保存的还是被消耗的那个token,当提交表单时就会发生token错误。

3、SQL注入攻击

SQL注入(SQL Injection),应用程序在向后台数据库传递SQL时,攻击者将SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,达到欺骗服务器执行恶意的SQL命令。

解决方案:

(1)防止系统敏感信息泄露。

(2)数据转义。

(3)增加黑白名单验证。

4、文件上传漏洞

该漏洞允许用户上传任意文件可能会让攻击者注入危险内容或恶意代码,并在服务器上运行。

原理:由于文件上传功能实现代码没有严格限制用户上传的文件后缀以及文件类型,导致允许攻击者向某个可通过web访问的目录上传任意PHP文件,并能够将这些文件传递给PHP解释器,就可以在远程服务器上执行任意PHP脚本。

解决方案:

(1)检查服务器是否判断文件上传类型和后缀。

(2)定义上传文件类型的白名单,也就是只允许白名单里面类型的文件上传。

(3)文件上传目录禁止执行脚本解析,避免攻击者进行二次攻击。