在Podcast 58(约20分钟)中,Jeff抱怨问题,HTML.Encode()
并且Joel谈到使用类型系统来获得普通字符串和HTMLStrings:
关于默认情况下无法进行HTML编码的视图引擎的恶意的简短政治咆哮.这种设计选择的问题在于它不是"默认安全",这对于框架或API来说总是错误的选择.忘记在Web应用程序中的一个臭名单中对用户输入的数据进行编码,您将完全拥有XSS.相信它.我知道,因为它发生在我们身上.多次!
Joel坚持认为,使用强类型语言和正确的框架,(理论上)可以完全消除XSS - 这需要使用特定的数据类型,这是将数据发送到浏览器的唯一方式.该数据类型将在编译时验证.
博客文章中的评论提到使用静态分析来发现潜在的弱点.该成绩单维基尚未完成.
如果没有新的ASP.NET框架,是否可以实现Joel的建议?
可能只需通过子类化每个控件并基于HTMLString强制实施新接口来实现它吗?如果大多数人已经将控件子类化,以便能够更好地注入特定于站点的功能,那么实现起来不是很容易吗?
是否值得这样做而不是投资静态分析?