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一样?任何人都有更好的主意吗?
谢谢!
使用Castle Project的PS: Stackoverflowers 会使用这样的补丁吗?答案 0 :(得分:2)
NVelocity 可以自动转义输出而无需更改模板,也无需更改NVelocity的代码。
请参阅Automatically HTML Encoding NVelocity Output (EventCartridge & ReferenceInsert)
答案 1 :(得分:1)
亲爱的,亲爱的。然后你需要做很多代码修复。NVelocity默认情况下不会转义任何内容
无法将文本放入HTML中并不是失败的,您可以在事后纠正。是的,有些库可以过滤出明显的错误输入,但它们只是隐藏了这个问题,而且不是很好。鉴于浏览器会接受各种奇怪的构造,总会有方法通过它们偷偷摸摸坏HTML,同时它们会给你误报 - 例如,这篇文章会被阻止讨论标签{{1 }}
它们充其量只是一种临时粘贴膏药,直到你能解决真正的问题。