(备注:以下为个人学习笔记)
一、什么是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转义(&-->&;<---><;>---->;"--";`----`;'------->';空-------F;)不要使用反引号(`)。除了字母数字字符,用格式(或者命名实体,如果可用)转义所有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,字符串,属性 From: https://www.cnblogs.com/zwj611/p/16643087.html