关于xss:XSS攻击

36次阅读

共计 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 表达式代码(新版本浏览器曾经能够防备)。
正文完
 0