【发布时间】:2009-06-22 19:58:33
【问题描述】:
在Podcast 58(大约 20 分钟)中,Jeff 抱怨HTML.Encode() 的问题,Joel 谈到使用类型系统拥有普通字符串和 HTMLStrings:
关于不支持 HTML 的视图引擎的邪恶的简短政治咆哮 默认编码。问题与 这种设计选择是它不是 “默认安全”,这始终是 框架或 API 的错误选择。 忘记编码一些 用户输入的数据在一个单一的 您的网络应用程序中的臭地方,以及 你将完全拥有 XSS。 相信它。我知道,因为它是 发生在我们身上。多次!
Joel 坚持认为,使用强类型语言和正确的 框架,这是可能的(理论上) 彻底消除 XSS——这 需要使用特定的数据 类型,这是你唯一的方法 向浏览器发送数据。那个数据 类型将在编译时验证 时间。
博客文章中的 cmets 提到使用静态分析来发现潜在的弱点。 transcript Wiki 尚未完成。
是否可以在没有新的 ASP.NET 框架的情况下实现 Joel 的建议?
是否可以简单地通过子类化每个控件并基于 HTMLString 强制执行新接口来实现它?如果大多数人已经将控件子类化以更好地注入特定于站点的功能,这不是很容易实现吗?
是否值得这样做而不是投资于静态分析?
【问题讨论】:
标签: html architecture xss strong-typing