Uploaded image for project: 'Velocity'
  1. Velocity
  2. VELOCITY-884

希望Velocity能够增加一个新语法(比如:$#{...}),为了方便解决XSS漏洞问题。

    XMLWordPrintableJSON

    Details

    • Type: New Feature
    • Status: Closed
    • Priority: Minor
    • Resolution: Invalid
    • Affects Version/s: 2.0
    • Fix Version/s: None
    • Component/s: Engine
    • Labels:

      Description

      Velocity 的默认 $[!]{...} 语法输出是原始内容输出,没有对造成 XSS 漏洞的特殊字符(比如:< > 等)进行转义,这样对于 Web 开发来说很容易就引入了 XSS 漏洞;虽然可以通过定义转义 Tools 来进行二次转义(例如:*$esp.encodeHTML($!

      {issue.description}

      )*),但是这样非常麻烦。

      因此,我有个想法,希望 Velocity 像前端模板引擎一样,变量输出默认是转义的,当你不需要转义时,可以通过特殊的语法(例如:$#

      {...})进行输出,这样我们在开发 Web 页面时就不会因为忘记二次转义而引入了 XSS 漏洞(因为 Web 页面开发大多数情况下是需要转义的)。

      我对 Velocity-1.7 版本的 Parser.jjt 语法树文件进行了修改,增加了 $# 语法前缀,该语法前缀用于原始内容输出,而 *$[!]{...}

      * 则默认转义输出:

      <body>$#{screen_content}</body>
      
      #foreach()
      <li> $!{user.name} </li>
      #end
      

      希望能在 Velocity-2.x 版本中得到默认的实现支持。

      祝愿 Velocity 越来越好!

        Attachments

          Activity

            People

            • Assignee:
              Unassigned
              Reporter:
              yswang Wang yongshan
            • Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: