一.常见的针对web前端的攻击主要有:
1.跨站点脚本攻击(XSS)
概述:XSS攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。这些恶意网页程序通常是JavaScript,但实际上也可以包括Java、 VBScript、ActiveX、 Flash 或者甚至是普通的HTML。攻击成功后,攻击者可能得到包括但不限于更高的权限(如执行一些操作)、私密网页内容、会话和cookie等各种内容。
XSS的类型主要分为三种:反射型XSS漏洞、基于DOM的XSS漏洞以及存储型XSS漏洞。
(1)反射型XSS漏洞:用户访问一个被攻击者篡改后的链接,用户访问该链接时,被植入的攻击脚本被用户游览器执行,从而达到攻击目的。反射型XSS漏洞攻击是一次性的,仅对当次的页面访问产生影响。
(2)存储型XSS漏洞:攻击脚本被存储在了服务器端的数据库或者页面文件中,当用户发起访问请求时,web服务器就对这些脚本进行了解释和执行,从而用户被攻击。
(3)基于DOM的XSS漏洞:基于DOM的XSS漏洞是指受害者端的网页脚本在修改本地页面DOM环境时未进行合理的处置,而使得攻击脚本被执行。在整个攻击过程中,服务器响应的页面并没有发生变化,引起客户端脚本执行结果差异的原因是对本地DOM的恶意篡改利用。
2.跨站请求伪造攻击(CSRF)
概述:CSRF 或者 XSRF, 是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。跟跨网站脚本(XSS)相比,XSS 利用的是用户对指定网站的信任,CSRF 利用的是网站对用户网页浏览器的信任。
3.SQL注入(SQL Injection)
概述:SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。
二.针对这三种攻击的防御措施有:
1.针对跨站点脚本攻击(XSS)
(1)HTTP only防止Cookie劫持。使用HTTP only选项可以防止Cookie被第三方脚本劫持。
(2)严格的输入检查。对于用户输入的信息进行严格的检查,看是否包含一些危险字符,例如:“<”,“>”,“ ” ”,“、”等。若存在这些字符就需要对其进行过滤。
(3)Web服务器应该对页面的输出内容进行检查。若输出的内容包含了异常的脚本,那么说明可能页面已经受到了XSS攻击。
2.针对跨站请求伪造攻击(CSRF)
(1)对HTTP Referer进行验证
HTTP请求头中有一个Referer字段,通常情况下Referer字段应和请求的地址位于同一域名下。如果是CSRF攻击传来的请求,Referer字段会是包含恶意网址的地址,不会位于原本想要请求的地址域名之下,这时候服务器就能识别出恶意的访问。
(2)使用Token进行验证
由于CSRF的本质在于攻击者对用户的请求进行完全的伪造。通过获取Cookie就可以得到用户的信息,从而完成对用户的伪造并发起请求。为了让攻击者不易于伪造验证信息,可以在请求中插入攻击者无法伪造的Token,在Web服务器端设置一个拦截器对Token进行验证,若非法,则拒绝请求。
3.针对SQL注入
可按照以下几步进行:
(1)对用户输入进行正则表达式等方式进行匹配校验。
(2)不应该使用字符串拼接的方式生成SQL指令,最好使用参数化查询甚至使用数据库提供的存储过程功能来完成查询。
(3)对数据库的用户权限进行严格限制。
(4)将重要信息进行加密、隔离处理。
三.防范系统的设计:
功能需求:
(1)针对web前端攻击方式的防御:主要是针对XSS和CSRF攻击的防御。
(2)针对web漏洞扫描工具的防御:大多数漏洞都是攻击者通过Web漏洞扫描工具进行扫描和侦查发现的,从而完成的攻击事件。
(3)告警记录:在遭受攻击后还要对日志进行记录。