Velocity中有一个机制可以对值进行转义操作,提供了对java、javascript、sql、xml等style的支持。我们用的javascript style。
转义类在core包中EscapeJavaScriptReference.java
在jsonVelocityUtils加入如下逻辑
velocityProperties.setProperty("eventhandler.referenceinsertion.class",EscapeJavaScriptReference.class.getName() );
velocityProperties.setProperty("eventhandler.escape.javascript.match", "/^(?!\\$\\!.*?Json).*/");
针对我们系统的特点做了如下特殊处理:
1. 去掉对中文字符的处理
2. 去掉对/的转义 因为我们的值中有html样式信息 例如:<label></label>
3. 针对变量中有Json字样的不进行转义处理,涉及附件等数据的填充
4. 修改md页面,去掉针对小列表等项初始值 例如initData值最外面的双引号,让其作为json对象解析,避免进行转义,
并对相关小列表进行修改,对initData进行decode 。
因此我们如果要用velocity填充json格式字符串时需将变量名定义中加入Json,例如attachJson
其他情况下如果要避免进行转义也可以这样命名
分享到:
相关推荐
Velocity Template,作为Apache开源组织提供的一个Java模板引擎,最初被设计用于Web开发中的视图层,帮助开发者将静态页面与动态数据分离。然而,它的应用并不仅限于此,正如标题所示,“Velocity Template的另类...
- **Velocity**则相对简单,支持基本的字符转义。 7. **数据绑定**: - **FreeMarker**支持更灵活的数据绑定方式,能够轻松地访问和操作Java对象的属性。 - **Velocity**的数据绑定功能虽然不如FreeMarker强大,...
5. **事件驱动的处理机制**:Velocity 提供了一套事件驱动的处理机制,允许用户自定义处理器对模板进行预处理或后处理,如自动转义特殊字符,防止XSS攻击。 **velocity-tools-2.0.jar** `velocity-tools-2.0.jar`...
- **逃逸机制**: 使用`\`来转义`$`,防止意外的变量解析。 3. **Velocity与MVC模式** - 在MVC(模型-视图-控制器)架构中,Velocity作为视图层,负责渲染数据,控制器负责处理请求并填充上下文,模型则存储业务...
总的来说,防止Velocity中的XSS攻击需要多方面的考虑,包括输入验证、数据转义、模板限制和及时更新。`EscapeRequestReference.java`这一文件可能是这些措施的一个具体实现,通过编码和处理请求引用,帮助开发者构建...
在Velocity的实现中,还可以通过转义字符实现对VTL特殊字符的转义,同时在输出文本时也可以使用转义字符以达到预期的显示效果。例如,可以使用转义字符来插入一个美元符号“$”而不引起变量解析。 VTL格式化问题...
此外,了解Velocity的内置工具和宏库,如Escaper工具,可以帮助你更好地处理HTML转义和防止XSS攻击。 这个压缩包中的“velocity学习资料”很可能包含以下内容: 1. 基本教程:介绍Velocity的概念、安装和基本用法。...
4. **内置方法**:Velocity提供了一些内置的方法,如`escape()`用于转义特殊字符,`format()`进行格式化输出。 **二、Velocity与Freemarker比较** 虽然Velocity和Freemarker都是视图模板引擎,但它们有各自的特性...
### Apache Velocity - Velocity User Guide 知识点解析 #### 一、关于本指南(About this Guide) 本指南旨在帮助页面设计师和内容提供商熟悉 Velocity 及其简单却强大的脚本语言——Velocity 模板语言 (VTL)。...
4. **逃逸机制(Escaping)**:Velocity 提供了 `##` 符号用于注释,`@` 符号用于转义特殊字符,防止变量或指令被误解析。 ** VelocityProject 示例** 在 "VelocityProject" 中,我们可能看到以下结构: - **...
6. **转义**: 如果需要输出`$`字符本身而不是引用变量,可以使用`\`进行转义,如`\$price`。 7. **引用安全**: Velocity支持安全引用,即使变量不存在,也不会抛出异常,而是返回空字符串。例如,`$...
Velocity模板技术语法详细介绍,包括很详细的示例代码 1.变量………………………………………………………………………………1 2.循环………………………………………………………………………………2 3.条件语句...
Velocity 还提供了对字符串、数值、范围操作的支持,以及对特殊字符的转义机制,确保模板的安全性和正确性。例如,货币符号和 VTL 引用的转义,以及大小写的替换。 在实际应用中,Velocity 不仅限于 Web 开发,还...
3. **逃逸机制**:使用`\`可以转义特殊字符,如`\$`表示输出美元符号。 4. **自定义工具类**:开发者可以创建自己的工具类,通过`#set`指令注入到模板环境中,供模板使用。 5. **模板继承**:通过`#extends`指令...
4. **函数和宏**:Freemarker提供了内置函数,如`htmlEscape`用于转义HTML特殊字符,同时用户可以自定义宏来封装重复的模板片段。 5. **模板配置**:可以通过`freemarker.cfg.properties`文件配置模板解析的全局选项...
Velocity会自动处理变量的转义和安全问题,确保模板的输出是安全的。 在实际应用中,Velocity通过一个上下文(Context)对象来传递数据到模板。开发者可以在Java代码中设置Context对象的属性,这些属性可以在模板中...
4. **转义机制**:为了防止`$`符号被误解为变量引用,可以使用`\`进行转义,如`\$`将输出一个美元符号。 5. **比较运算符**:Velocity支持常见的比较运算符,如`=`, `!=`, `, `>`, `, `>=`。 6. **字符串连接**:...
- **输出控制(Output Control)**: `#set` 用于设置变量,`#escape` 和 `#noescape` 控制 HTML 实体转义。 - **注释(Comments)**: `#comment` 和 `##` 分别用于单行和多行注释。 3. **最佳实践** - **保持...
6. **自动转义(Auto-escaping)**:为了防止XSS攻击,Velocity提供了自动转义机制,确保模板中的动态内容安全输出。你可以根据需求开启或关闭这个功能。 在Velocity Demo中,你可能会看到以下的步骤: 1. **初始...