代码安全 | 第十五期:跨站脚本漏洞
本期主题为跨站脚本漏洞的相关介绍。
一、什么是跨站脚本漏洞?
从用户控制的输入到输出之前,软件没有对其进行过滤或没有正确过滤,这些输出用作向其他用户提供服务的网页。
二、跨站脚本(XSS)漏洞通常在哪些情况下发生?
1、不可信数据进入网络应用程序,通常通过网页请求;
2、网络应用程序动态地生成一个带有不可信数据的网页;
3、在网页生成期间,应用程序不会阻止Web浏览器可执行的内容数据,例如JavaScript、HTML标签、HTML属性、鼠标事件、Flash、ActiveX等;
4、受害者通过浏览器访问的网页包含带有不可信数据的恶意脚本;
5、由于脚本来自于通过web服务器发送的网页,因此受害者的web浏览器会在web服务器域的上下文中执行恶意脚本;
6、违反web浏览器的同源策略,同源策略是一个域中的脚本不能访问或运行其他域中的资源或代码。
三、跨站脚本漏洞的构成条件有哪些?
满足一以下条件,就构成了一个该类型的安全漏洞:
1、数据从不可靠来源(包含但不局限于不可靠用户的输入信息或是不可靠用户可能更改的文件)进入应用程序;
2、该数据未经过滤或不正确地过滤特殊字符后,直接使用。
四、跨站脚本漏洞会造成哪些后果?
关键词:执行未经授权的代码或命令;旁路保护机制;读取应用程序数据
1、盗取各类用户账号。如机器登录账号、用户网银账号、各类管理员账号;
2、控制企业数据。包括读取、篡改、添加、删除企业敏感数据的能力;
3、盗窃企业重要的具有商业价值的资料;
4、非法转账;
5、强制发送电子邮件;
6、网站挂马;
7、控制受害者机器向其它网站发起攻击。
五、跨站脚本漏洞的防范和修补方法有哪些?
1、输入验证:对输入的信息进行验证。仔细检查每个输入参数,以确定允许的特定字符和格式。
2、输出编码:使用并指定下游组件可处理得输出编码格式。常用编码包括ISO-8859-1,UTF-7和UTF-8。
六、跨站脚本漏洞样例:
用静态代码检测分析上述程序代码,则可以发现代码中存在着“跨站脚本” 导致的代码缺陷,如下图:
跨站脚本在CWE中被编号为CWE-79: Improper Neutralization of Input DuringWeb Page Generation ('Cross-site Scripting')
软件安全 网络安全的最后一道防线