写点什么

AntiSamy 1.0 发布:保护 Web 应用免受恶意 HTML 和 CSS 攻击

  • 2007-12-05
  • 本文字数:1256 字

    阅读完需:约 4 分钟

AI 大模型超全落地场景&金融应用实践,8 月 16 - 19 日 FCon x AICon 大会联诀来袭、干货翻倍!

跨站点脚本(Cross Site Scripting —— XSS),是允许用户提交包含 HTML 和 CSS 内容的开发者所面对的主要安全问题。 OWASP 上出现了一个的叫做 “ AntiSamy ” 的新项目,其目标是提供一个全面的、策略驱动的 API 来检验和清理用户的输入,同时在过滤过程中提供用户反馈。项目的主页描述了 API:

从技术上来说,AntiSamy API 可以保证用户提供的 HTML/CSS 内容遵从一个应用的规则。另外一种说法是:AntiSamy API 可以帮助你确保客户不会在他们提供的简介、评论等保存在服务器上的 HTML 中包含恶意代码。就 Web 应用而言,术语恶意代码通常仅指 JavaScript。样式表仅仅在它们调用 JavaScript 引擎的时候才被认为是恶意的。然而,有很多时候“正常的”HTML 和 CSS 也可以以一种恶意的方式来使用。

根据 AntiSamy 的领导开发者 Arshan Dabirsiaghi 的说法,这个 API 的特点是它的用户友好性:

AntiSamy 的方法的独特之处在于它是建立在一个积极的安全模型之上的,不论对 HTML 文档的格式还是文档的内容都是如此。另外的独特之处在于它试图以合作的精神来帮助用户调整他们的输入来通过校验,不是像当代的所有其他安全机制那样把用户当作潜在的攻击者来对待。

在论文 《向检测和除去恶意代码前进》 (PDF) 中,Dabirsiaghi 描述了过滤过程中包括的阶段:

  1. 预处理。使用 NekoHTML 来执行 HTML 清理。
  2. 处理。Tag/CSS 校验规则按照深度优先的算法应用三种处理模型——过滤,截尾和校验。过滤动作去掉不允许的标签,但是保留标签内的内容。截尾删除禁止的标签属性和标签的子节点。校验使用在策略文件中的规则来匹配标签 / 属性的组合,以确保只包含合法的标签。
  3. 补救。如果在处理过程中校验失败,可以与策略文件交互来决定如何处理标签和它的内容。选项包括删除标签以及它的内容,过滤掉标签而保留它的内容和从标签中删除属性。

AntiSamy 的第一个版本包括一个 Java 的实现,随后会提供.Net 和 PHP 的实现。

AntiSamy 易于与一个 Java 应用集成:

import org.owasp.validator.html.*;<p>Policy policy = new Policy(POLICY_FILE_LOCATION);</p><br></br>AntiSamy as = new AntiSamy();<br></br>CleanResults cr = as.scan(dirtyInput, policy);<br></br>MyUserDAO.storeUserProfile(cr.getCleanHTML()); // some custom function<br></br>``CleanResults类提供了访问过滤过程的有用信息的方法:

  • getErrorMessages() —— 一个字符串错误信息列表
  • getCleanHTML() —— 干净的,安全的 HTML 输出
  • getCleanXMLDocumentFragment() —— 反应产生的干净的,安全的XMLDocumentFragment
  • getCleanHTML()
  • getScanTime() —— 返回以秒为单位的扫描时间

AntiSamy 采用 BSD 许可,可以在 Google Code 项目主页下载。

查看英文原文 AntiSamy 1.0 Released - Protecting web applications from malicious HTML and CSS - - - - - -

译者简介: 曹云飞,西安交通大学计算机软件硕士。现就职于 Ethos ,热衷于新技术的钻研,软件架构与敏捷开发,目前从事 Home Control 方面的工作。参与 InfoQ 中文站内容建设,请邮件至 china-editorial[at]infoq.com

2007-12-05 18:491526
用户头像

发布了 47 篇内容, 共 10.2 次阅读, 收获喜欢 3 次。

关注

评论

发布
暂无评论
发现更多内容

jmeter 扩展自定义java 插件

kcnf

记一次网络安全应急响应流程

网络安全学海

黑客 网络安全 信息安全 渗透测试 WEB安全

软件架构 & 研发效率

agnostic

研发效能

【web 开发基础】PHP 自定义函数之函数声明 -PHP 快速入门 (24)

迷彩

函数 10月月更 web开发基础 PHP基础 函数的定义

整合Mybatis、Servlet、Mysql、Axios、Filter、Session写一个入门级项目:非常适合初接触JavaWeb的小白白来进阶

游坦之

10月月更

【分布式技术专题】「架构实践于案例分析」总结和盘点目前常用分布式技术特别及问题分析

洛神灬殇

分布式 微服务 10月月更 微服务化

【资损】发布环境中的兼容性控制设计

小明Java问道之路

Java 架构 安全 10月月更 资损

Java | Date类

陌上

Java 编程 10月月更

程序的地址分配

计算机基础

数据库&基本SQL语法

w010w

数据库 sql 10月月更

如何对查询结果进行排序

芯动大师

Python 排序 10月月更

CountDownLatch源码硬核解析

JAVA旭阳

Java 线程 10月月更

【一Go到底】第二十九天---切片入门

指剑

Go golang 10月月更

【漏洞介绍】驱动文件Microsoft32k.sys中的漏洞分析

网络安全学海

网络安全 安全 信息安全 渗透测试 漏洞挖掘

游族网络xStarRocks:高效助力数据查询,灵活应对多维分析

StarRocks

数据库

【JavaWeb】一篇承载Ajax、Axios、Json的学习笔记~

游坦之

10月月更

从AI生成视频看人工智能未来发展趋势​

felix

人工智能 AI 图片生成

Java | StringBuilder类/StringBuffer类

陌上

Java 编程 10月月更

计算图中两个顶点的所有路径,你会吗

JAVA旭阳

Java 算法 10月月更

达梦数据库主备安装部署

For

Vue复刻华为官网 (二)

游坦之

10月月更

Vue实现日期选择器

游坦之

10月月更

Storm概念与架构

穿过生命散发芬芳

Storm 10月月更

统计匹配检索规则的物品数量

掘金安东尼

算法 10月月更

String源码分析(三)

知识浅谈

string 10月月更

Vue复刻华为官网 (一)

游坦之

10月月更

调度线程池ScheduledThreadPoolExecutor源码解析

JAVA旭阳

Java 线程池 10月月更

StarRocks极客营 | 90天,17名新晋贡献者,SQL Planner 实战回顾

StarRocks

数据库

【JavaWeb】过滤器和监听器,就这?

游坦之

10月月更

3分钟了解CDN的工作原理

阿泽🧸

CDN 10月月更

【资损】系统迭代过程中的兼容性设计

小明Java问道之路

Java 架构 安全 10月月更 资损

AntiSamy 1.0 发布:保护Web应用免受恶意HTML和CSS攻击_Java_Gavin Terrill_InfoQ精选文章