根据我对ASP.NET的作用以及我自己对各种XSS测试的个人测试的理解,我发现我的ASP.NET 4网站不需要任何XSS预防.
您认为ASP.NET 4.0网站是否需要添加XSS安全性而不是默认选项?我无法在我的文本字段中输入任何javascript或任何标记,然后立即将其打印到页面上.
免责声明 - 这是基于对"可信输出"的非常偏执的定义,但是当谈到网络安全时,我认为你不会太偏执.
摘自链接到下面的OWASP页面:不受信任的数据通常是来自HTTP请求的数据,以URL参数,表单字段,标题或cookie的形式.但是,从安全角度来看,来自数据库,Web服务和其他来源的数据通常是不可信的.也就是说,它可能没有完全验证.
在大多数情况下,如果您从任何来源获取输入并将其输出到HTML,则需要更多保护.这包括从文件,数据库等检索的数据 - 不仅仅是您的文本框.您可以拥有一个完全锁定的网站,让某人通过其他工具直接访问数据库,并能够插入恶意脚本.
即使您从只有受信任的用户能够输入数据的数据库中获取数据,您也不会知道该受信任的用户是否会无意中从网站复制并粘贴某些恶意脚本.
除非您绝对肯定地信任将在您的网站上输出的任何数据,并且没有可能的方法让脚本无意中(或恶意地遇到攻击者或心怀不满的员工)将危险数据放入系统,您应该清理所有输出.
如果您还没有,请在此处熟悉这些信息:https://www.owasp.org/index.php/XSS_%28Cross_Site_Scripting%29_Prevention_Cheat_Sheet
并浏览网站上的其他已知威胁.
万一你想念它,Microsoft.AntiXss库是一个非常好的工具,你可以随意使用.除了更好的HtmlEncode函数版本之外,它还具有很好的功能,如GetSafeHtmlFragment(),当你想在输出中包含不受信任的HTML并对其进行消毒时.本文显示了正确的用法:http://msdn.microsoft.com/en-us/library/aa973813.aspx 这篇文章很旧,但仍然相关.