【AICon】AI 基础设施、LLM运维、大模型训练与推理,一场会议,全方位涵盖! >>> 了解详情
写点什么

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:491501
用户头像

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

关注

评论

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

神操作:就靠这份“Java核心技能精讲”,竟收割了22个Offer

比伯

Java 编程 架构 面试 计算机

你真的懂 MP4 格式吗?

阿里云视频云

音视频 视频

Kafka 是怎么存储的?为什么速度那么快?

码农架构

Java kafka 架构

MT马特量化机器人软件开发|MT马特量化机器人APP系统开发

系统开发

深入理解Deno是如何借助PowerShell进行安装脚本

梁龙先森

大前端 deno shell脚本编写 PowerShell 28天写作

2021年,是时候把技术债务管理提上日程了

禅道项目管理

效率 产品 创新 技术债

Serverless 如何在阿里巴巴实现规模化落地?

Serverless Devs

阿里云 Serverless 云原生 大前端

第五周作业-流程图及时序图

Au revoir

网络编程入门从未如此简单(二):假如你来设计TCP协议,会怎么做?

JackJiang

TCP 网络编程

程序员需要搞理财吗?

三石

理财 话题讨论

架构设计篇之微服务实战笔记(五)

小诚信驿站

架构师 刘晓成 小诚信驿站 成长笔记 28天写作

Flink 如何实时分析 Iceberg 数据湖的 CDC 数据

Apache Flink

flink

LeetCode题解:152. 乘积最大子数组,动态规划,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

【LeetCode】翻转图像Java题解

Albert

算法 LeetCode 28天写作 2月春节不断更

安卓软件开发文献!阿里P8架构师的Android大厂面试题总结,建议收藏

欢喜学安卓

android 程序员 面试 移动开发

狂补计算机基础知识,让我上了瘾

沉默王二

计算机基础 计算机

Agora 实时音视频调查工具水晶球

john

连接AI与用户,京东云推出视音频通信技术方案

京东科技开发者

IoT 通信 视频会议

API策略量化机器人系统开发|API策略量化机器人APP软件开发

系统开发

大数据时代

Mr.cool

MySQL索引原理,一篇从头到尾讲清楚

数据库 架构

一周信创舆情观察(2.8~2.21)

统小信uos

资深大牛带你了解源码!分析Android未来几年的发展前景,快来收藏!

欢喜学安卓

android 程序员 面试 移动开发

BML CodeLab发布重磅更新 一键配好Windows WSL2 AI开发环境

百度大脑

立足智能化发展,风电能源产业互联网平台加快建设

一只数据鲸鱼

物联网 数据可视化 3D可视化 能源管理 风力发电

新时代计算机技术

细节完美炸裂!GtiHub上点赞已破百万的并发编程四套全彩手册

Java架构追梦

Java 阿里巴巴 架构 面试 并发

中小公司开展NPS的好处

iOS开发前景

ios

C语言重要的知识点

c 考核 重要知识 简单清楚 好看

使用PG_STAT_REPLICATION监视复制

PostgreSQLChina

数据库 postgresql 开源 软件 开源社区

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