人们经常将跨站脚本攻击(Cross Site Scripting)缩写为CSS,但这会与层叠样式表(Cascading Style Sheets,CSS)的缩写混淆。因此,有人将跨站脚本攻击缩写为XSS。
跨站脚本攻击(XSS),是最普遍的Web应用安全漏洞。这类漏洞能够使得攻击者嵌入恶意脚本代码到正常用户会访问到的页面中,当正常用户访问该页面时,则可导致嵌入的恶意脚本代码的执行,从而达到恶意攻击用户的目的。
攻击者可以使用户在浏览器中执行其预定义的恶意脚本,其导致的危害可想而知,如劫持用户会话,插入恶意内容、重定向用户、使用恶意软件劫持用户浏览器、繁殖XSS蠕虫,甚至破坏网站、修改路由器配置信息等。
常见的XSS攻击有两种,一种是反射型,一种是持久型。
攻击者诱使用户点击一个嵌入恶意脚本的链接,达到攻击目的,如图所示。
现实中,攻击者可以采用XSS攻击,偷取用户的cookie,密码等重要数据,进而而伪造交易、盗窃用户财产、窃取情报等。
黑客提交含有恶意脚本的请求,将脚本保存在网站的服务器的数据库中,用户浏览该网站时,恶意脚本被包含在了用户访问网页中,达到攻击的目的,如图所示。
xss攻击者一般都是通过嵌入恶意脚本达到攻击目的的,这一脚本一般都是些特殊代码,正常用户不会在网站中输入使用的,如果对用户请求进行过滤和转义处理,如过滤掉">","<","="这些字符,或者转换为">"、"<"、"&eq"等。为了避免对不必要的内容的错误过滤或者转义,需要进行文本匹配后在转义如果"
注入攻击主要有两种形式,sql注入和os注入攻击。
sql注入的攻击原理时攻击者在http请求中注入恶意的sql命令(如drop table users;),服务器收到请求执行sql命令时,恶意sql被一起执行。
sql注入攻击需要攻击者对数据库结构有所了解才能进行,攻击者获取数据库结构的手段有一下几种:
如果网站用的是开源软件代码搭建的,如用dz搭建的论坛网站,那么网站的数据库结构是公开的,攻击者可以直接获得。
如果网站开启错误回显,即服务器内部错误500会显示在浏览器上,攻击者通过构造非法参数,使服务器异常信息输出到浏览器端,为攻击者获取数据结构信息提供的便利。
攻击者利用多数开发着长年经验和习惯,猜测数据库结构信息。
同xss注入防御一样,利用正则匹配,过滤掉请求中的sql 关键词信息,比如select \update\delete\drop\whre等。
os注入攻击和sql注入攻击差不多,区别时,注入的os操作系统的命令。
跨站请求伪造(英语:Cross-site request forgery),也被称为 one-click attack 或者 session riding,通常缩写为 CSRF 或者 XSRF, 是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。跟跨网站脚本(XSS)相比,XSS 利用的是用户对指定网站的信任,CSRF 利用的是网站对用户网页浏览器的信任。
CSRF的主要手法是利用跨站请求,在用户不知情的情况下,以用户的身份信息伪造请求,其核心原理是利用了浏览器的cookie或者服务器的session策略。
CSRF攻击防御
CSRF是有一个伪造用户请求的操作,所以需要构造用户请求的所在参数才可以,表单token通过在请求参数中增加随机数的办法来阻止攻击者获得所有请求参数。表单token通过在请求参数中增加一个随机数作为token,每次响应页面的token都不同,从正常页面提交的请求都会包含token值,而伪造的请求无法获取到token值,后端可以验证token的值是否合法来判断是正常请求还是非法请求。
相对于一种,验证码,则更加简单有效,即用户提交时,需要输入验证码,以避免用户不知情的情况下,被攻击着伪造请求,但是频繁输入验证码是一个糟糕的用户体验,所以请在必要时使用,如用户登录页面,支付页面等关键页面中使用。
HTTP请求头的Referer域中记录着请求来源,可以通过检查请求来源,验证请求是否合法。
除上面讲的几种常见攻击以外,还有一些漏洞也常被黑客利用。
也成为错误回显,很多网站第一事故默认打开异常信息输出的,即服务器未处理异常的堆栈信息会被直接输出到客户端浏览器,黑客通过故意制造非法输入,使系统运行时报错,获取异常信息,从而寻找系统漏洞进行攻击,防御很简单,通过控制代码异常的抛出,配置web参数使页面跳转到设定的500错误的页面。
为了方便开发调试,有时候程序员会把代码的说明信息,注释到代码上,这些代码煮熟会最终显示到客户端浏览器上,给黑客制造了便利。
如果网站上传没有限制上传文件格式的话,黑客上传服务器可执行的程序文件,并通过该程序文件,获得服务器的控制权,那么黑客就可以为所欲为。所以网站上传文件时候一定要限制文件的格式。
WEB应用防火墙是集WEB防护、网页保护、负载均衡、应用交付于一体的WEB整体安全防护设备的一款产品。它集成全新的安全理念与先进的创新架构,保障用户核心应用与业务持续稳定的运行。
WEB应用防火墙还具有多面性的特点。比如从网络入侵检测的角度来看可以把WAF看成运行在HTTP层上的IDS设备;从防火墙角度来看,WAF是一种防火墙的功能模块;还有人把WAF看作“深度检测防火墙”的增强。
开源web防火墙: ModeSecurity
商业web防火墙: siteShell
和计算机漏洞一样,网站也有漏洞需要惊醒安全漏洞扫描。
开发者可以根据的自己的经验对网站的漏洞进行定期排查,也是也用漏洞检查工具的不定期进行扫描,检测。