NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

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

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

    阅读完需:约 4 分钟

跨站点脚本(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:491499
用户头像

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

关注

评论

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

Things3 for Mac(日程和任务管理软件) 3.19.3中文激活版

mac

任务管理工具 苹果mac Windows软件 Things 3

Macos音乐制作工具:Ableton Live 11 Suite 附 完整安装教程

繁星

音乐制作 Ableton Live 11

设计模式-建造者模式

设计模式-责任链模式

写在 Chappyz 即将上所之前:基于 AI 技术对 Web3 营销的重新定义

股市老人

目前软件定制app开发方式主要是那种?

Geek_16d138

app定制开发 软件开发定制

tools-重命名

合成数据如何改变制造业

3D建模设计

机器学习 机器视觉 合成数据 人工自能 合成数据生成

2023-11-11:用go语言,字符串哈希+二分的例题。 给定长为 n 的源串 s,以及长度为 m 的模式串 p, 要求查找源串中有多少子串与模式串匹配, s‘ 与 s 匹配,当且仅当 s‘ 与 s

福大大架构师每日一题

福大大架构师每日一题

Oracle的to_date()函数解决sql语句日期格式问题

知识浅谈

Java oracle

VPS:搭建自己的私有云

薛定谔的皮皮虾

Nextcloud

es笔记七之聚合操作之桶聚合和矩阵聚合

Hunter熊

elasticsearch 聚合操作 桶聚合 矩阵聚合

最高2000万元扶持!2024 年度宁波市甬江人才工程公告

科兴未来News

宁波甬江 甬江工程 人才政策 创业政策 创业资源

MySQL 数据库查询与数据操作:使用 ORDER BY 排序和 DELETE 删除记录

小万哥

Python 程序员 软件 后端 开发

Linux RPM包安装、卸载和升级

智趣匠

如果有一款专门用于3D纹理贴图的工具,大家会愿意用吗?

3D建模设计

Stable Diffustion AI纹理 AI 贴图 稳定扩散模型

2023年10 种用于最佳稳定扩散最佳方案

3D建模设计

人工智能 Stable Diffusion Ai绘图 AI纹理 AI 贴图

稳定扩散AI 纹理生成器

3D建模设计

AI Stable Diffusion AI自动纹理 AI 绘图 AI贴图

ZkSync是不可错的Layer 2 四大龙头之一

币离海

以太坊 layer2 zkSync

合成数据加速机器视觉学习 合成数据即将改变人工智能。如今,机器学习被用于各种基于视觉的

3D建模设计

机器学习 机器视觉 合成数据 合成数据生成

鸿蒙组件化构建

SkyFire

鸿蒙 OpenHarmony

什么是UV贴图?

3D建模设计

人工智能 UV贴图 AI纹理

Macos数据备份工具:BeLight Get Backup Pro 3 附 注册机

繁星

数据备份 数据备份工具 Get Backup Pro 3

开发者眼中的向量数据库应用领域

三掌柜

亚马逊云科技

Tower 10.11.1 macOS下Git版本控制客户端

晴雯哥

架构实战营-模块六作业

王朝阳

超越服务器:VPS 在开发领域的崭新前景

E₀=mc²

AWS 虚拟化 亚马逊 Amazon Lightsail

完整的APP开发流程|软件定制

Geek_16d138

app定制开发 软件开发定制

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