共计 989 个字符,预计需要花费 3 分钟才能阅读完成。
什么是 XSS?
Cross-Site Scripting(跨站脚本攻打)简称 XSS,是一种代码注入攻打。攻击者通过在指标网站上注入歹意脚本,使之在用户的浏览器上运行。利用这些歹意脚本,攻击者可获取用户的敏感信息如 Cookie、SessionID 等,进而危害数据安全。
产生起因
通常页面中蕴含的用户输出内容都在固定的容器或者属性内,以文本的模式展现。
攻击者利用这些页面的用户输出片段,拼接非凡格局的字符串,冲破原有地位的限度,造成了代码片段。
攻击者通过在指标网站上注入脚本,使之在用户的浏览器上运行,从而引发潜在危险。
如何解决
解决办法 :通过 HTML 本义,能够避免 XSS 攻打。
用 escapeHTML 将 < > & ” ‘ 转成字符实体,unescapeHTML 将字符实体转成 < > & ” ‘
应用场景:
(1)用户在页面中录入(比方输入框)<script>alert(2);</script>,js 将该内容提交给后端保留
(2)显示时,后端将字符串返回前端;js 接管到之后:
- 应用 escapeHTML,将字符串转为 <script>alert(2);</script> 此时,浏览器将能正确解析,因为浏览器接管到实体字符后,转成对应的尖括号等。
- 不应用 escapeHTML,浏览器一看到 <,便认为是 html 标签的开始,间接把方才的字符串当脚本执行了,这就是 xss 破绽。
然而 ,做了 HTML 本义,并不等于居安思危。
对于链接跳转,如 <a href=“xxx”或 location.href=“xxx”,要测验其内容,禁止以 javascript: 结尾的链接,和其余非法的 scheme。
XSS 有哪些注入的办法:
- 在 HTML 中内嵌的文本中,歹意内容以 script 标签造成注入。
- 在内联的 JavaScript 中,拼接的数据冲破了本来的限度(字符串,变量,办法名等)。
- 在标签属性中,歹意内容蕴含引号,从而冲破属性值的限度,注入其余属性或者标签。
- 在标签的 href、src 等属性中,蕴含 javascript: 等可执行代码。
- 在 onload、onerror、onclick 等事件中,注入不受控制代码。
- 在 style 属性和标签中,蕴含相似 background-image:url(“javascript:…”); 的代码(新版本浏览器曾经能够防备)。
- 在 style 属性和标签中,蕴含相似 expression(…) 的 CSS 表达式代码(新版本浏览器曾经能够防备)。
正文完