ACF 简介
作为 ACF 入门的一部分,您必须先理解什么是 Project Zero。如 下内容摘自 Project Zero Web 站点:
“Project Zero 是 IBM 内部发起 的一个孵化器项目,侧重于下一代动态 Web 应用程序的敏捷开发。Project Zero 引入 了一种简单的环境,这种环境支持基于流行的 Web 技术创建、组装和执行应用程序。 Project Zero 环境包括一个面向 Groovy 和 PHP 的脚本运行时,并且具有应用程序编 程接口,这些接口针对 REST 风格服务、集成 mashup 和富 Web 接口的生成进行了优化 ”。
Project Zero 主要针对的是一下代动态 Web 应用程序(通常归类为 Web 2.0),本 文侧重于交互式 Web 应用程序,这些应用程序可能会包含用户提供的内容,比如 mashup、wiki 和 blog。为了支持这些应用程序,Project Zero 提供了 ACF 库,应用 程序开发人员可以将其包括在 Zero 应用程序内。ACF 让开发人员能够避开经常在这类 应用程序出现的跨站点脚本等问题。
关于示例
作者留言:初次写完本文 时,应用程序开发人员必须通过声明方法(在应用程序的 zero.config 中定义显式规则 )或编程方法(使用提供的 API)来利用 ACF。根据 Project Zero 社区和本文读者反 馈的信息,开发团队为以下场景提供某些默认级的 ACF 保护(要求将 zero.acf 添加为 依赖项):
请求参数:从所有发送到 URI 的入站请求参数中删除活动内容(比 如 JavaScript、Applet 和 ActiveX)。这些参数被看作是 HTML 片段。
JSON 内容请求:从发送到 URI 的入站 JSON 对象的所有 String 值中删除活动内容 。在这种情况下,已经指定所有内容的类型。
JSON 内容响应:从 URI 发送的出 站 JSON 对象的所有 String 值中删除活动内容。在这种情况下,已经指定除 “text/html” 以外的所有内容类型。
要取消默认的 ACF 启用,下 面的配置选项包含了示例应用程序的 zero.config"/config/acf/enableByDefault=false"。因为在某些情况下默认启用有可 能不能满足应用程序的要求,本文将把焦点集中在通过声明和编程方法利用 ACF。在适 当的时候,本文将解释通过默认标志利用启用的各个小节。
本文提供的示例旨在 借助由简到难的用例充分展示 ACF 。这些示例均构建在之前的示例之上。如下是这些示 例的一个摘要,每个示例会在随后的章节详细加以介绍:
示例 1 是一个很基本 的、启用了 Ajax 的页面,它允许用户评论从外部接收的文章。这个示例展示了在用户 评论或文章中包含活动内容时(比如 JavaScript)发生的情况。
示例 2 构建在示例 1 的基础上,并包含对 ACF 库的支持。这个示例展示了在文章 中包含活动内容(比如 JavaScript)时 ACF 过滤功能如何工作。
示例 3 构建 在示例 2 的基础上,但支持使用 ACF 过滤请求参数这个功能。这个示例展示了当用户 评论中包含活动内容 — 比如 JavaScript — 时 ACF 过滤功能如何工作。