在 Web 开发中,有可能通过编译器支持(类型安全)来避免反XSS 过程中的双重编码吗?

12 浏览
0 Comments

在 Web 开发中,有可能通过编译器支持(类型安全)来避免反XSS 过程中的双重编码吗?

是否有可能通过编译器支持来强制执行数据的清理 (XSS 编码)?

这个问题让我考虑到双重编码以及其他需要编码的时候。似乎对于 Linq 来说这很有效,但可能我在其他场景中也需要这个功能。

Microsoft AntiXSS - 是否需要解码?

admin 更改状态以发布 2023年5月23日
0
0 Comments

在再次呈现的时候,这是一个用户界面的关注点,因为只有用户界面知道目标是什么(因此是适当的编码方式)。所以我不确定你怎么可以在语言级别或LINQ(作为数据访问组件)中做到这一点。然而,在ASP.NET MVC2中,MvcHtmlString(用于表示安全的HTML字符串)为此提供了一些帮助,以及新的<%:foo%>语法,它会根据需要自动编码,但不会进行双重编码

0
0 Comments

是的,如果有一个表达能力强大和可扩展的类型系统,这确实是可能的。例如,Ur/Web是一种用Ur编程语言编写的Web应用程序框架,在其中类型系统保证了几个有趣的特性:\n\n- 不能有死链(在应用程序内部)\n- 不可能生成无效的HTML\n- 不可能发生XSS攻击\n- 不可能发生SQL注入\n- 表单字段始终有相应的服务器端处理器\n- AJAX调用始终有相应的服务器端处理器\n- 客户端表单字段、服务器端处理器和数据库表的类型匹配\n- …等等…\n\nUr和Ur/Web的作者Adam Chlipala在Emerging Languages Camp 2010上做了一个有关这方面的演讲。此外,在Haskell、OCaml和Scala中也有一些Web框架(尝试)实现了(某些)这些特性。它们的类型系统足够强大,可以保证至少一些这些特性(例如,在Haskell中有SQL的类型安全嵌入,或在OCaml中有一个HTML模板语言,不允许用户生成无效HTML)。

0