接受列表方法解释AntiXSS



在一个网站上,我在文章中发现了这个状态:

AntiXSS库采用可接受列表方法,而.NET框架采用阻止列表方法。

请解释一下accepted-list approachblocked-list approach是什么意思???

在安全术语中,接受列表方法被称为白名单方法阻止列表方法称为黑名单方法。

请参阅此处的讨论"什么是白名单和黑名单数据?"?或者谷歌黑名单与白名单。

好莱坞小说:让我们想象一下一场影响整个世界的病毒爆发(就像《生化危机》电影中的生物病毒爆发)。你没有被感染,你独自一人,你有一种预感,有些人和你一样没有被感染。病毒攻击后,一个人需要2-3个小时才能意识到感染并成为僵尸。你想建立一个安全的设施来避免自己被感染。在无线电通讯中,你会听到一些制药公司发明了一种针对这种病毒的疫苗。

您现在有两种方法来为您的安全设施构建外围安全系统:

  1. 不允许感染病毒的僵尸[但允许其他人]===>黑名单方法
  2. 只允许接种疫苗的人[拒绝其他人]===>白名单方法

让我们谈谈哪种方法更安全。

  1. 不允许感染病毒的人,但允许其他人当病毒感染需要2-3小时才能出现时,这种方法就会失败。受到病毒攻击但尚未意识到感染的人将通过并感染安全设施
  2. 只允许接种疫苗的人,拒绝其他人接种疫苗的人不会被感染,而你只允许他们感染。你不在乎人类是否被病毒感染或攻击(还没有意识到感染者),你否认他们。你只允许接种疫苗的人,因为你信任疫苗。这是一种更安全的方法,不是吗

让我们把所有这些放在跨站点脚本(XSS)的上下文中

  1. 黑名单方法:阻止所有标签/字符串,如<script>,javascript,src,object,class,input,image,href 。更全面的列表-https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet

    缺点:这个黑名单过滤器会错过新引入的html5标签的漏洞,比如<video>,<picture>等,因为黑名单还不知道视频图片标签可能被滥用,谁知道可能会有更多类似的情况。https://html5sec.org/

  2. 白名单方法:只允许已知安全的标签,例如<p><b><i><strong><ul><li>

    优点:你比黑名单方法更安全,因为你信任<p><b>(就像他们接种了疫苗一样)并否认其他一切。其他一切都包括潜在的不安全标签和你不关心的标签。你所关心的只是已知的安全,而你只接受这一点。

白名单验证通常超出标签,其中还包括css类和javascript事件。如果不是Microsoft AntiXSS,请尝试OWASP AntiSamy。

更多阅读:

  1. 为什么要使用白名单进行HTML清理
  2. https://kevtownsend.wordpress.com/2011/08/24/whitelisting-vs-blacklisting/
  3. 什么是白名单和黑名单数据

最新更新