【发布时间】:2023-11-10 04:11:01
【问题描述】:
Castle Project 功能丰富,包括一些很棒的子项目,使用它进行开发是一种乐趣。
我的团队几乎准备好交付定制的EAM,我们正在完善我们的系统。我们尝试了一些基本的 XSS 攻击并猜测:它们都奏效了。
虽然它会在 Intranet 环境中运行,但我们不希望用户意外破坏整个系统,我们正在研究解决 XSS 问题的解决方案。
NVelocity 默认不会转义任何东西,所以这段代码:
${entity.Field}
字段包含以下内容:
<script>alert('xss!')</script>
会给我们一个很好的 xss 警报。
Microsoft 的 AntiXSS 库看起来不错:可以处理多种可能的 XSS 向量,等等。我们遇到了 AndyPike 的helper,但这个解决方案会让我们重构几千行代码。是的,不好。这在编辑现有实体时不会处理 ActiveRecord/NVelocity 自动绑定。
问题是:使用输出编码技术,是否可以/建议修补 Castle Project 的 NVelocity 引擎?就像他们对 Brail 所做的那样?谁有更好的主意?
谢谢!
PS.: *ers 使用 Castle Project 会使用这样的补丁吗?
【问题讨论】:
-
简短说明:FormHelper 在将值放入输入字段之前会执行 HtmlEncondig。