Web安全漏洞——X

1.原理

Xss(跨站脚本攻击),英文名“Cross Site Sripting”,在一开始,这种攻击的案列是跨域(同源策略)的,所以叫做“跨站脚本”,但是今天,由于js的强大功能以及网站前端的复杂性,是否跨域已经不再重要。Xss也是注入攻击,即本质是把用户输入的数据当成代码执行当web应用对用户输入过滤不严格,攻击者写入恶意的脚本代码(html、js)到网页中时,如果用户访问了带有恶意代码的页面,恶意脚本就会被浏览器解释执行导致用户被攻击。
常见的危害有:cookie窃取,session劫持,钓鱼攻击,蠕虫,ddos等。

2.分类

xss根据其特性和利用方式可以分为三大类:反射型,存储型,DOM(文档对象模型)型

  1. 反射型
    反射型xss只是简单的把用户输入的数据“反射”给浏览器。一般出现在url参数中及网站搜索栏中,需要点击包含恶意代码的链接才能触发,并且只能触发一次,所以也叫作“非持久型xss
  2. 存储型
    存储型xss会把用户输入的数据“存储”在服务器端,这种xss就有很强的稳定性。比如一个论坛评论区由于对用户输入的过滤不严格,导致攻击者在写入一段窃取cookie的恶意js代码后,这段恶意代码会写入数据库,当其他用户访问这个带有恶意代码的页面时,网站从数据库读取恶意代码显示到网页中被浏览器执行,导致用户cookie被窃取。也被称为“持久性xss”。
  3. DOM型
    这种类型的xss并非按照“数据是否保存在服务器端”来划分,DOM Based Xss从效果来说也是反射型xss。前端脚本通过dom动态修改页面,由于不与服务端进行交互,而且代码是可见的,从前端获取dom中的数据在本地执行。通过修改页面的DOM节点形成的xss,称为DOM Based Xss
    常见的可以操纵DOM的对象:URL、location、referrer

3.防御

  1. 设置HttpOnly属性。浏览器将阻止页面访问带有httponly属性的cookie。
  2. 输入检查
  3. 输出检查。一般来说,除了富文本的的输出外,当变量输出到html页面时,可以使用编码或转义的方式来防御xss攻击。
  4. 安全的编码函数
    编码防御具体:https://juejin.im/post/5bf214e151882579cf011c2a

猜你喜欢

转载自blog.csdn.net/weixin_42095265/article/details/84285202