0

是否可以让编译器支持强制清理数据(XSS 编码)?

这个问题让我想到了双重编码以及其他需要编码的时候。似乎它对 Linq 很有用,但可能我在其他情况下也可能需要这个功能。

Microsoft AntiXSS - 是否需要解码?

4

2 回答 2

3

是的,鉴于类型系统的表现力和强大程度,这确实是可能的。

例如,Ur/Web是一个用 Ur 编程语言编写的 Web 应用程序框架,其中类型系统保证了几个有趣的属性:

  • 不能有死链接(在应用程序内)
  • 不可能生成无效的 HTML
  • 不可能有 XSS 攻击
  • SQL注入是不可能的
  • 表单字段总是有一个相应的服务器端处理程序
  • AJAX 调用总是有一个对应的服务器端处理程序
  • 客户端表单字段、服务器端处理程序和数据库表的类型匹配
  • ... 多很多 ...

Ur 和 Ur/Web 的作者 Adam Chlipala在 Emerging Languages Camp 2010 上发表了演讲

Haskell、OCaml 和 Scala 中也有一些 Web 框架(尝试)做(其中一些)。他们的类型系统足够强大,至少可以保证其中的一些属性。例如,在 Haskell 中嵌入了类型安全的 SQL,或者 OCaml 中的 HTML 模板语言不允许用户生成无效的 HTML。

于 2010-10-03T05:06:40.723 回答
0

在重新呈现时,这是一个 UI 问题,因为只有 UI 知道目标是什么(因此知道适当的编码)。因此,我不确定您如何在语言级别或在 LINQ(作为数据访问组件)上做到这一点。然而; 在 ASP.NET MVC2 中MvcHtmlString(用于表示安全的html 字符串)以某种方式提供了这一点,以及新的<%:foo%>语法,它根据需要自动编码,但没有双重编码

于 2010-10-03T07:40:18.607 回答