0
点赞
收藏
分享

微信扫一扫

PebbleTemplates 默认一些安全处理

PebbleTemplates 支持了不少安全控制(这个是也模版引擎普遍存在的问题)

内容转义

核心是规避xss 问题,包含了自定以及手工处理,包含了html,js,css,url_param 。。。。

方法访问的

因为模版很容易引入一些非安全方法引用,官方包含了一个方法访问校验 MethodAccessValidator
已经包含了一些实现,默认使用的BlacklistMethodAccessValidator 主要的控制如下

 

private static final String[] FORBIDDEN_METHODS = {"getClass",


private p static final String[] FORBIDDEN_METHODS = {"getClass",
  "wait",
  "notify",
  "notifyAll"};
 
@Override
public boolean isMethodAccessAllowed(Object object, Method method) {
boolean methodForbidden = object instanceof Class
    || object instanceof Runtime
    || object instanceof Thread
    || object instanceof ThreadGroup
    || object instanceof System
    || object instanceof AccessibleObject
    || this.isUnsafeMethod(method);
return !methodForbidden;
}

同时创建引擎的时候可以自己控制

PebbleEngine engine = new PebbleEngine.Builder().loader(delegatingLoader).methodAccessValidator(new BlacklistMethodAccessValidator()).extension(new MyExtension()).build();

说明

做好安全控制还是比较重要的,了解提供的基本能力,可以更好的确保安全

参考资料

https://pebbletemplates.io/wiki/guide/extending-pebble/
https://pebbletemplates.io/wiki/guide/escaping/
https://pebbletemplates.io/wiki/filter/escape/
https://pebbletemplates.io/wiki/guide/spring-boot-integration/

举报

相关推荐

0 条评论