65.9K
CodeProject 正在变化。 阅读更多。
Home

AJAX 中的安全威胁

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.91/5 (11投票s)

2007 年 7 月 24 日

CPOL

4分钟阅读

viewsIcon

28753

本文描述了 AJAX 中的漏洞

什么是 AJAX?

AJAX,是“异步JavaScriptXML的缩写,是一种用于创建交互式Web 应用程序Web 开发技术。它的目的是通过在后台与服务器交换少量数据,使网页感觉更具响应性,这样用户每次进行更改时不必重新加载整个网页。这旨在提高网页的交互性、速度和可用性

为什么选择AJAX?

人们选择 AJAX 有很多原因。在过去几年里,人们厌倦了同步方法,而这些方法让人们等待服务器响应。之后,AJAX 被引入以克服同步调用方法。我们需要了解同步和异步调用方法。

“同步调用”就像您单击一个按钮,请求已发送到服务器并正在等待响应,在此期间您无法访问用户界面的任何部分。“异步调用”提供了通过访问用户界面的其他部分来发出另一个请求的机会。

AJAX 的优点是

  1. 比传统 Web 应用程序性能更好
  2. 更好的带宽利用率
  3. 易于与 DOM 对象交互
  4. 无需刷新页面
  5. 一个屏幕可以处理多个任务,因此无需多个页面

AJAX 中的漏洞

网络是黑客获取敏感数据的场所。因此,最好设计一个网站以避免被黑客攻击的机会。在 AJAX 中,我们在这方面遇到了一些问题。它们是:

注入攻击

注入是指将数据或脚本发送到主代码中。
在以下情况下以及使用以下方法可能会发生注入:

  • PHP 工具包:可能发生代码注入
  • JSON 注入:在解码过程中可能注入代码
  • DOM 注入 - 客户端攻击现在更加容易
  • XML 注入 - 客户端和服务器端
  • 代码注入 - 客户端和服务器端

JSON 问题

JSON 是一种轻量级数据交换格式。它特别有用,因为网页 JavaScript 可以轻松地将其“解码”成对象形式。AJAX- 基于的网页使用 XmlHttpRequest 来响应用户操作从服务器接收数据。虽然返回的数据通常是 XML 格式,但也可以是 JSON 字符串格式,并且在 JavaScript 中更容易处理。许多应用程序可能以 XML 格式存储信息。但是,它们可能希望使用 JSON 将数据发送到客户端。

JSON 对注入

JavaScript 对象表示法 (JSON) 是一种简单有效的轻量级数据交换格式,其中包含对象、数组、哈希表、向量和列表数据结构。JSON 支持 JavaScript、Python、C、C++、C# 和 Perl 语言。JSON 的序列化是 Web 2.0 应用程序中非常有效的交换机制。开发人员选择 JSON 而不是AJAX 非常频繁,并获取所需信息传递给 DOM。这是一个简单的 JSON 对象“favourites”对象,包含不同的名称-值对。

{"favourites":[{"URL":"www.codeproject.com","Visits":"1200",
                    "Shortcut Key":"Control+w"}]}

可以在 URL 或快捷键中注入恶意脚本。如果它被注入到 DOM 并执行,它就属于 XSS 类别。这是将恶意内容序列化到最终用户的另一种方式。

JavaScript 数组中毒

JavaScript 数组是另一种非常流行的序列化对象。它易于跨平台移植,并且在跨语言框架中非常有效。使 JavaScript 数组中毒会破坏 DOM 上下文。可以通过简单的跨站点脚本攻击在浏览器中利用 JavaScript 数组。这是一个示例 JavaScript 数组

new Array("DesktopPC", "DELL", "Used", "400$", "It is a used one")

此数组由一个拍卖网站用于一台二手台式电脑。如果此数组对象未在服务器端正确进行清理,用户可以在最后一个字段中注入脚本。这种注入可能会危及浏览器,并可能被攻击者利用。

跨域访问和回调

AJAX 无法从浏览器访问跨域。浏览器中存在的所有浏览器安全功能之一是阻止跨域访问。有几个 Web 服务提供回调机制用于对象序列化。开发人员可以使用此回调机制将 Web 服务集成到浏览器本身中。回调函数名称可以传递回来,因此一旦浏览器检索到回调对象流,它就会使用从浏览器最初传递的特定函数名称进行执行。

此回调给开发人员增加了额外的负担,需要进行浏览器内验证。如果浏览器未验证传入的对象流,则开发人员会将最终客户的命运置于跨域目标的怜悯之中。有意或无意中,此跨域服务可能会将恶意内容注入浏览器。此跨域调用在当前 DOM 上下文中运行,因此也使当前会话易受攻击。在将此整个跨域机制集成到应用程序之前,需要非常仔细地进行审查。

结论

本文介绍了一些 AJAX 编程中的安全威胁。请注意,AJAX 还有一些其他威胁。本文无意让读者避免 AJAX 编程,而是旨在推荐一些保护 Web 的方法。

© . All rights reserved.