是否可以让编译器支持强制清理数据(XSS 编码)?
这个问题让我想到了双重编码以及其他需要编码的时候。似乎它对 Linq 很有用,但可能我在其他情况下也可能需要这个功能。
是否可以让编译器支持强制清理数据(XSS 编码)?
这个问题让我想到了双重编码以及其他需要编码的时候。似乎它对 Linq 很有用,但可能我在其他情况下也可能需要这个功能。
是的,鉴于类型系统的表现力和强大程度,这确实是可能的。
例如,Ur/Web是一个用 Ur 编程语言编写的 Web 应用程序框架,其中类型系统保证了几个有趣的属性:
Ur 和 Ur/Web 的作者 Adam Chlipala在 Emerging Languages Camp 2010 上发表了演讲。
Haskell、OCaml 和 Scala 中也有一些 Web 框架(尝试)做(其中一些)。他们的类型系统足够强大,至少可以保证其中的一些属性。例如,在 Haskell 中嵌入了类型安全的 SQL,或者 OCaml 中的 HTML 模板语言不允许用户生成无效的 HTML。
在重新呈现时,这是一个 UI 问题,因为只有 UI 知道目标是什么(因此知道适当的编码)。因此,我不确定您如何在语言级别或在 LINQ(作为数据访问组件)上做到这一点。然而; 在 ASP.NET MVC2 中MvcHtmlString
(用于表示安全的html 字符串)以某种方式提供了这一点,以及新的<%:foo%>
语法,它根据需要自动编码,但没有双重编码。