Fortify--Cross-Site Scripting:DOM

1、简介:

    Cross-Site Scripting:DOM:基于DOM的XSS

  a、起初,这个例子似乎是不会轻易遭受攻击的。毕竟,有谁会输入导致恶意代码的 URL,并且还在自己的电脑上运行呢?真正的危险在于攻击者会创建恶意的 URL,然后采用电子邮件或者社会工程的欺骗手段诱使受害者访问此 URL 的链接。当受害者单击这个链接时,他们不知不觉地通过易受攻击的网络应用程序,将恶意内容带到了自己的电脑中。这种对易受攻击的 Web 应用程序进行盗取的机制通常被称为反射式 XSS。

  b、Fortify 安全编码规则包将就 SQL Injection 和 Access Control 提出警告:当把不可信赖的数据写入数据库时,数据库将出现问题,并且会将数据库当作不可信赖的数据的来源,这会导致 XSS 漏洞。如果数据库在您的环境中是可信赖的资源,则使用自定义筛选器筛选出包含 DATABASE 污染标志或来自数据库源的数据流问题。尽管如此,对所有从数据库中读取的内容进行验证仍然是较好的做法

  c、https://www.cnblogs.com/meInfo/p/9004535.html

·    问题     

    应用程序的客户端代码从document.location、document.URL、document.referrer或 其 他 任 何攻击者可以修改的浏览器对象获取数据,如果未验证数据是否存在恶意代码的情况下 ,就将其动态更新到页面的DOM 节点,应用程序将易于受到基于DOM 的XSS攻击。 例如:下面的JavaScript代码片段可从url中读取msg信息,并将其显示给用户。  

 

    var url=document.URL;

    document.write(url.substring(url.indexOf("msg=")+4,url.length );  

 

    该段脚本解析URL,读取msg参数的值,并将其写入页面。如果攻击者设计一个恶意的URL,并以JavaScript代码作为msg参数,那么Web浏览器就会像显示HTTP响应那样执行 该代码,应用程序将受到基于DOM 的XSS攻击。

 

    解决办法:

  基于DOM 的X SS是将用户可控的JavaScript数据输出到HTML页面中而产生的漏洞,为了避免基于DOM 的XSS攻击,避免将用户控制的数据直接输出到DOM或脚本中执行。如果不能避免,则应进行严格的过滤  。

  

2、https://www.cnblogs.com/phoenix--/articles/2158202.html   (建议阅读)

  XSS解决方案

  常用的防止XSS技术包括:

  (1)与SQL注入防护的建议一样,假定所有输入都是可疑的,必须对所有输入中的script、iframe等字样进行严格的检查。这里的输入不仅仅是用户可以直接交互的输入接口,也包括HTTP请求中的Cookie中的变量,HTTP请求头部中的变量等。

  (2)不仅要验证数据的类型,还要验证其格式、长度、范围和内容。

  (3)不要仅仅在客户端做数据的验证与过滤,关键的过滤步骤在服务端进行。

  (4)对输出的数据也要检查,数据库里的值有可能会在一个大网站的多处都有输出,即使在输入做了编码等操作,在各处的输出点时也要进行安全检查。

  (5)在发布应用程序之前测试所有已知的威胁。

 

3、Fortify报错例子: 

  问题:Cross-Site Scripting:DOM:  data数据从数据库取出后,直接传入了function方法中使用,未进行校验

  

 

 

  解决方法:对data数据进行校验,后传入function中

  最直接的验证方法就是:将function中的data换成别的字符,fortify就检测不出这个问题了。

  例如:换成fata就不会报错

  

 

posted @ 2021-05-17 14:43  Ying501  阅读(2222)  评论(0编辑  收藏  举报