2

Castle Project 功能丰富,包括一些很棒的子项目,使用它进行开发是一种乐趣。

我的团队几乎准备好交付定制的EAM,我们正在完善我们的系统。我们尝试了一些基本的 XSS 攻击并猜测:它们都有效。

即使它将运行在 Intranet 环境中,我们也不希望用户意外破坏整个系统,我们正在研究处理 XSS 问题的解决方案。

NVelocity 默认不会转义任何东西,所以这段代码:

${entity.Field}

字段包含以下内容:

<script>alert('xss!')</script>

会给我们一个很好的 xss 警报。

微软的 AntiXSS 库看起来不错:处理几种可能的 XSS 向量,等等。我们遇到了 AndyPike 的helper,但是这个解决方案会让我们重构几千行。是的,不好。这在编辑现有实体时不会处理 ActiveRecord/NVelocity 自动绑定。

问题是:使用输出编码技术,是否可以/建议修补 Castle Project 的 NVelocity 引擎?就像他们对 Brail 所做的那样?有人有更好的主意吗?

谢谢!

PS.:使用 Castle Project 的Stackoverflowers会使用这样的补丁吗?

4

2 回答 2

2

NVelocity可以自动转义输出,无需更改模板,也无需更改 NVelocity 的代码。

请参阅自动 HTML 编码 NVelocity 输出(EventCartridge 和 ReferenceInsert)

于 2011-02-22T19:56:39.180 回答
1

默认情况下,NVelocity 不会转义任何内容

哦亲爱的。然后你有很多代码修复工作要做。

未能将文本转义到 HTML 中并不是您可以在事后纠正的失败。是的,有些库会过滤掉明显的错误输入,但它们只是隐藏了问题,而且不是很好。鉴于浏览器可以接受的各种奇怪的结构,总会有办法通过它们潜入不良 HTML,同时它们会给你带来误报——例如,这篇文章会因为讨论标签而被屏蔽<script>

在您解决真正的问题之前,它们充其量只是一个临时贴膏药。

于 2009-09-11T23:58:12.043 回答