WEB安全之浅谈XSS漏洞

     XSS漏洞是什么--cross-site script跨站脚本攻击,为了与HTML中CSS样式区分,故改名为XSS,今天本文带大家初步了解XSS的原理,成因,以及个人对于XSS漏洞的防御策略。

漏洞成因

首先,XSS漏洞有三种类型:
1.反射型,由带有编辑框,输入框等嵌入前端代码的参数触发,与服务器后端有交互,例如前端参数输入脚本语言后由服务器解析并发送给前端,前端的HTML代码拼接后有诸如”,是不是你每次登陆后都能看到页面显示你的评论?那这一小段代码是不是每次都会被拿出来拼接到前端HTML代码,这个时候HTML的语法在经过编译器解析时就会被触发,你每次登陆都会看到页面有弹窗将你的cookie打印出来。。)

     下图为存储型XSS的示例,模拟用户将脚本代码提交到编辑框中,编辑框中的内容会被记录到数据库(图2),除初次提交时会被后端解析触发一次脚本代码外(图1),每次载入该页面时都会执行数据库查询操作(图3),这时库中的脚本又被拿出来拼接在前端html中一次,又触发一次脚本代码(图1)。。WEB安全之浅谈XSS漏洞_第1张图片

 WEB安全之浅谈XSS漏洞_第2张图片

 WEB安全之浅谈XSS漏洞_第3张图片

    

    综上所述,个人认为XSS漏洞的根本在于,前端的输入无论中间经没经过服务器后端处理,数据库处理,只要最终响应回显的前端HTML代码中拼接出了脚本代码,那么就可以判定此网站存在XSS漏洞!!

防御策略

1.定期对数据库中的记录做扫描,把涉及敏感的字段记录做转义或直接清除;

2.对于前端的输入,引用htmlspecialchars()做转义,此函数能够屏蔽大部分脚本代码拼接到前端;

     效果如图所示,若不对输入进行转义,则输入会被拼接到HTML中形成脚本代码执行(图1),若启用转义,则输入中的一些特殊字符,如<>会被转义成<,页面回显会将输入作为文本处理(图3),拼接出来的html代码中的脚本代码也被转义成了其他字符型的文本(图2),个人认为是此函数虽然将输入转义,但是在最后一步页面渲染时,浏览器将转义后的特殊字符复原了,从而绕开了在html编译时脚本语言没有被及时转义导致执行的情况。

WEB安全之浅谈XSS漏洞_第4张图片

 WEB安全之浅谈XSS漏洞_第5张图片

 WEB安全之浅谈XSS漏洞_第6张图片

 

你可能感兴趣的:(隔壁老陈带你玩转信息安全,web安全,xss)