xss总结和相应的预防措施

什么是XSS?

  跨站脚本攻击(Cross Site Scripting),为了不和层叠样式表(Cascading Style Sheets,CSS )的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。

XSS分为:存储型和反射型。

  存储型XSS:存储型XSS,持久化,代码是存储在服务器中的,这种XSS比较危险,容易造成蠕虫,盗窃cookie(还有DOM型XSS,也是包括在存储型XSS内)。

  处理措施:

    输入过滤,对用户提交的数据进行有效性验证。

      1:过滤一些些常见的敏感字符,例如:< > ‘ “ & # \ javascript expression ;  // .replace(/src="javascript:/g, 'src="').replace(/src='javascript:/g, 'src=\'')

      2:过滤或移除特殊的Html标签, 例如: <script>, <iframe> 

      3:过滤JavaScript 事件的标签,例如 "οnclick=", "onfocus"

    输出编码:当需要将一个字符串输出到Web网页时,同时又不确定这个字符串中是否包括XSS特殊字符(如< > &‘”等),为了确保输出内容的完整性和正确性,可以使用编码(HTMLEncode)进行处理。

  反射型XSS:非持久化,需要欺骗用户自己去点击链接才能触发XSS代码(服务器中没有这样的页面和内容),一般容易出现在搜索页面。

  

常见的XSS攻击方式:

  1.绕过XSS-Filter,利用<>标签注入Html/JavaScript代码;

  2.利用HTML标签的属性值进行xss攻击。例如:<img src=“javascript:alert(‘xss’)”/>;(当然并不是所有的Web浏览器都支持Javascript伪协议,所以此类XSS攻击具有一定的局限性)

  3. 空格、回车和Tab。如果XSS Filter仅仅将敏感的输入字符列入黑名单,比如javascript,用户可以利用空格、回车和Tab键来绕过过滤,例如:<img src=“javas  cript:alert(/xss/);”/>;

  4. 利用事件来执行跨站脚本。例如:<img src=“#” οnerrοr= “alert(1)”/>,当src错误的视乎就会执行onerror事件;

  5. 利用CSS跨站。例如:Body {backgrund-image: url(“javascript:alert(‘xss’)”)};

  6. 扰乱过滤规则。例如:<IMG SRC=“javaSCript: alert(/xss/);”/>;

  7.利用字符编码,透过这种技巧,不仅能让XSS代码绕过服务端的过滤,还能更好地隐藏Shellcode;(JS支持unicode、eacapes、十六进制、十进制等编码形式)

  8.拆分跨站法,将xss攻击的代码拆分开来,适用于应用程序没有过滤 XSS关键字符(如<、>)却对输入字符长度有限制的情况下;

  9.DOM型的XSS主要是由客户端的脚本通过DOM动态地输出数据到页面上,它不依赖于提交数据到服务器,而是从客户端获得DOM中的数据在本地执行。容易导致DOM型的XSS的输入源包括:Document.URL、Location(.pathname|.href|.search|.hash)、

Document.referrer、Window.name、Document.cookie、localStorage/globalStorage;

// 相关论点来自https://www.cnblogs.com/wqhwe/p/5416976.html

 

NoScript的XSS过滤器(DOMPurify和CSP);

XSS防御手段:

  a) CSP - 基于白名单,基于nonce的,不安全的eval,严格的动态;

  b) XSS filters - Chrome XSSAuditor,Edge,No

  c) HTML净化 - DOMPurify,Closure HTML sanitizer

  d) WAFs - ModSecurity w/CRS

转载于:https://www.cnblogs.com/ey-151210/p/9482235.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值