我如何防止src等属性中的XSS攻击?

use*_*427 9 c# security xss html-agility-pack

因此,我一直在使用带有白名单的html敏捷性构建C#html清理程序.它工作正常,除了这样的情况:

<img src="javascript:alert('BadStuff');" />
<img src="jav&#x09;ascript:alert('BadStuff');"> 
Run Code Online (Sandbox Code Playgroud)

我想要允许src属性,显然不是其中的恶意内容.我查找过的所有内容都推荐了一个标签及其属性的白名单.你会怎么处理这样的事情呢?我知道这在任何较新的浏览器中都不起作用,但我对安全性不是很熟悉,而且我确信攻击者可以做一些其他聪明的事情.

Abd*_*man 5

跨站点脚本(XSS)攻击通过注入客户端脚本代码来利用网页验证中的漏洞.使Web应用程序容易受到跨站点脚本攻击的常见漏洞包括无法正确验证输入,无法编码输出以及信任从共享数据库检索的数据.要保护您的应用程序免受跨站点脚本攻击,请假设所有输入都是恶意的.约束并验证所有输入.对可能包含HTML字符的所有输出进行编码.这包括从文件和数据库读取的数据.

当攻击者编写脚本以检索提供对可信站点的访问的身份验证cookie然后将cookie发布到攻击者已知的Web地址时,会发生跨站点脚本攻击的最严重示例之一.这使攻击者能够欺骗合法用户的身份并获取对网站的非法访问权限.

使Web应用程序容易受到跨站点脚本攻击的常见漏洞包括:

  • 未能约束和验证输入.
  • 无法编码输出.
  • 信任从共享数据库中检索的数据.

方针

防止跨站点脚本攻击的两个最重要的对策是:

  • 约束输入.
  • 编码输出.

步骤摘要

要防止跨站点脚本,请执行以下步骤:

步骤1.检查是否已启用ASP.NET请求验证.

步骤2.查看生成HTML输出的ASP.NET代码.

步骤3.确定HTML输出是否包含输入参数.

第4步.查看具有潜在危险的HTML标记和属性.

第5步.评估对策.

有关详细信息,请参阅第2篇参

参考文献:

跨站点脚本解释:如何防止XSS攻击

如何:防止ASP.NET中的跨站点脚本


Ale*_*kov 0

像“必须是有效的 Uri,无论是相对还是绝对的 http/https 方案”都是一个很好的起点。