ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

XSS漏洞

2022-08-31 18:00:54  阅读:200  来源: 互联网

标签:XSS 引号 转义 漏洞 HTML 字符串 属性


(备注:以下为个人学习笔记)

一、什么是XSS

  答:XSS(cross site script)或者说跨站脚本是一种Web应用程序的漏洞, 恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之 时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击 用户的目的。通俗的讲,就是在web页面上插入了一段脚本,这个脚本会执行一些非正常的操作。

二、XSS漏洞风险

  答:1、盗取用户cookie,然后伪造用户身份登录,泄漏用户个人身份及用 户订单信息,

    2、操控用户浏览器,借助其他漏洞可能导致对https加密信息的破解, 导致登录传输存在安全风险。       3、结合浏览器及其插件漏洞,下载病毒木马到浏览者的计算机上执行。     4、修改页面内容,产生钓鱼攻击效果,例如伪造登录框获取用户明文 帐号密码。 三、XSS漏洞类型   答:存储型XSS,反射型XSS,DOM式XSS   (一)、存储型XSS,通俗讲就是存在服务器上的xss。是用户输入的一些信息,没有被验证,就存储到服务器上,同时该数据被获取时没有被编码或者转义直接反馈到响应文中。影响主要有,盗取cookie;重定向到钓鱼页面;重新更改页面内容,假装让客户输入用户名,密码,然后提交到黑客的服 务器;生成蠕虫。           检测方式:1、在任何可以插入的地方<script>  alert ('1')</script>插入这些后会弹窗出现1,这就证明存在xss漏洞;           2、第一种方法受挫后,黑客可能尝试利用img标签。<img src =javascript:alert("1")"></img>    <img dynsrc=javascript:alert('1')"></img>结果还是1,证明还是存在xss漏洞。           3、除img标签之外还有div标签也可以利用,同样是图片载入,DIV STYLE= "background-image: url(javascript:alert('1'))"> ,
          4、利用insertAjacentHTML即使这种方式被防住,我们也可以使用自行构造事件 <font style= "TEST:expression(alert('1'));">;除了font, 还有table,a,ul等标签也可以利用     如何防范:1、第一是对用户输入的特殊字符进行转译,对HTML中不可信字符串进行HTML转义(&-->&amp;<--->&lt;>----&gt;"--&quot;`----&#x60;'------->&#x27;空-------&#2F;)不要使用反引号(`)。除了字母数字字符,用格式(或者命名实体,如果可用)转义所有ASCII值小于256的字符以防止开关的值伸出属性。恰当的为属性加上引号可以只被对应的引号转义。不带引号的属性可以被分解为许多个字符,包括和。。          2、对于事件触发属性中的不可信字符串,先进行JavaScript转义,然 后执行HTML转义,因为浏览器在执行JavaScript字符串解码前执 行HTML属性解码。对于JavaScript中的非可信数据,进行 JavaScript字符串转义并且总是将属性加上引号,无论是( ‘ 或“ ), 但不要使用反引号( ` )。          3、对HTML属性中的URL路径进行转义而不是完整的URL。总是为属 性加上引号,无论是(‘ 或“ ),但不要使用反引号( ` )。绝不允许 或包含格式像或或者他们的组合(如)。          4、对HTML样式属性内的不可信字符串先做CSS字符串转义,然后进行HTML转 义,因为解析器的解析顺序是先HTML解析器然后再CSS解析器。总是给你的 属性加上引号,如本例子中的风格属性加上( “ ) ,CSS字符串加上( ‘ ) ,不 要使用反引号( ` )。为在CSS中的不可信字符串做CSS字符串转义。也要确保 不可信字符串在引号( ‘ 或“ ) 之间,不要使用反引号( ` )。也不要允许 expression以及它的复杂组合,如(expre/**/ssion)。           5、对于JavaScript字符串中不可信的HTML,先执行HTML转义,然 后执行JavaScript字符串转义,保持这个顺序。          6、创建个Web应用程序应该允许的来自用户的标签和属性的白名单。 黑名单可以很容易的被绕过。          7、使用UTF-8为默认的字符编码以及设置content为text/html 。          8、不要将用户可以控制的文本放在标签前。通过使用不同的 字符集注射可以导致XSS。            9、使用告诉你的浏览器遵循标准进行HTML, CSS的渲染以及如何执行。     (二)、反射式XSS:反射式XSS一般是提交信息的一部分内容通过服务器解析后反馈到 浏览器,而不存储到服务器。反射型的一般是在URL请求里面构造的恶意语句,在url中插入了一段代码,http://mydvwa.com/dvwa/vulnerabilities/xss_r/?name=a%3Cscript% 3Ealert%281%29%3C%2Fscript%3E。     (三)、DOM式XSS:不存服务器,不需要服务器解析,利用js代码中提取了url地址中的部分内容。完全是利用JS代码来获取URL地址中信息,此类信息可以利用检测JS代码来避免。可以通过检测一下信息来检查是否存在DOM型xss(document.location ,document.URL,document.referrer )。可以通过以下方式来修复:写入页面前先转义,慎用危险的“eval” ,编写安全的函数方法,从看似“可靠”的数据源获取参数值,参考/使用filter.js库 。

标签:XSS,引号,转义,漏洞,HTML,字符串,属性
来源: https://www.cnblogs.com/zwj611/p/16643087.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有