代码之家  ›  专栏  ›  技术社区  ›  wtaniguchi

如何处理Nvelocity上的XSS

  •  2
  • wtaniguchi  · 技术社区  · 15 年前

    Castle项目有很多特点,包括一些很棒的子项目,开发它是一种乐趣。

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

    尽管它将在内部网环境中运行,但我们不希望用户意外地破坏整个系统,我们正在研究解决XSS问题的解决方案。

    默认情况下,Nvelocity不会转义任何内容,因此此代码:

    ${entity.Field}
    

    包含以下内容的字段:

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

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

    微软的反XSS库看起来不错:处理几种可能的XSS向量,等等。我们碰到了安迪皮克 helper ,但这个解决方案将使我们重构大约几千行。是的,不好。在编辑现有实体时,这不会处理ActiveRecord/Nvelocity自动绑定。

    问题是:使用输出编码技术,是否可能/建议修补Castle项目的Nvelocity引擎?就像他们用布莱叶一样?有人有更好的主意吗?

    谢谢!

    PS.: 堆料溢流装置 使用Castle项目会使用这样的补丁吗?

    2 回复  |  直到 13 年前
        1
  •  1
  •   bobince    15 年前

    Nvelocity默认情况下不会逃避任何事情

    哦,天哪。然后你有很多代码修复工作要做。

    未能转义放入HTML中的文本并不是一个事后可以纠正的错误。是的,有些库会过滤掉明显的错误输入,但它们只是隐藏了问题,而且不是很好。考虑到浏览器会接受各种各样的奇怪结构,总是有办法通过它们来隐藏糟糕的HTML,同时它们会给你带来误报,例如,这篇文章会被阻止讨论标签。 <script> .

    它们充其量只是暂时性的石膏,直到你能解决真正的问题。

        2
  •  2
  •   Community Dunja Lalic    7 年前

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

    Automatically HTML Encoding NVelocity Output (EventCartridge & ReferenceInsert)