java - 使用 AntiSamy 进行 CSS 验证

标签 java antisamy

我有一个字符串,我想验证它是否是有效的 CSS 值。在 AntiSamy 的文档中,我发现我可以使用 CSSValidator.isValidProperty ( http://javadox.com/org.owasp/antisamy/1.4/org/owasp/validator/css/CssValidator ) 来执行此操作。但是,第二个参数的类型需要 LexicalUnit。

还有其他方法可以使用 AnitSamy 验证字符串吗?

最佳答案

我想你想要的是CssScanner。

/****** pull out style tag from html *****/
Pattern p = Pattern.compile("<style>([\\s\\S]+?)</style>");
Matcher m = p.matcher(validHTML);

// if we find a match, get the group 
if (m.find()) {

// get the matching group
    codeGroup = m.group(1);
}
/****** block for checking all css for validity *****/

InternalPolicy policy = null;
try {
    policy = (InternalPolicy) InternalPolicy.getInstance("antisamy-ebay.xml");
} catch (PolicyException e) {
    e.printStackTrace();
}
ResourceBundle messages = ResourceBundle.getBundle("AntiSamy", Locale.getDefault());

CssScanner scanner = new CssScanner(policy, messages);
CleanResults results = scanner.scanStyleSheet(codeGroup, Integer.MAX_VALUE);
validCSS = results.getCleanHTML().toString();

这就是对我有用的代码部分。如果其中任何一个对您不起作用,请告诉我,我在代码顶部声明了变量,因为我也在此处处理 html 验证。所以有些变量不在这段代码中。但它应该为您指明正确的方向。另外,您需要制定一个策略,我选择了 eBay 策略,它指导了 css 允许结果输出的白名单。我没有使用过 CssValidator,所以我不确定它们如何比较,但 CssScanner 在返回干净的 css 方面做得很好。

关于java - 使用 AntiSamy 进行 CSS 验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39566495/

相关文章:

java - 为应用程序设计保存文件

java - 开始使用 Netbeans 平台?

java - Android自定义ListView创建

java - OWASP AntiSamy 正在将换行符替换为空格 (JAVA)

java - 无法将套接字从 Android 客户端应用程序连接到服务器

java - JavaFX 中的 "automatic injection of location and resources properties into the controller"是什么?

xml - 自定义 Antisamy 策略 xml 以允许更多 html 和 grails 标签

java - 从Google代码编译java项目的说明

xss - 如何在 cq 5.5 中配置 antisamy?

java - XSS 清理嵌套 html 标签输入