AJAX 中的安全威胁






3.91/5 (11投票s)
本文描述了 AJAX 中的漏洞
什么是 AJAX?
AJAX,是“异步”JavaScript和XML的缩写,是一种用于创建交互式Web 应用程序的Web 开发技术。它的目的是通过在后台与服务器交换少量数据,使网页感觉更具响应性,这样用户每次进行更改时不必重新加载整个网页。这旨在提高网页的交互性、速度和可用性。
为什么选择AJAX?
人们选择 AJAX 有很多原因。在过去几年里,人们厌倦了同步方法,而这些方法让人们等待服务器响应。之后,AJAX 被引入以克服同步调用方法。我们需要了解同步和异步调用方法。
“同步调用”就像您单击一个按钮,请求已发送到服务器并正在等待响应,在此期间您无法访问用户界面的任何部分。“异步调用”提供了通过访问用户界面的其他部分来发出另一个请求的机会。
AJAX 的优点是
- 比传统 Web 应用程序性能更好
- 更好的带宽利用率
- 易于与 DOM 对象交互
- 无需刷新页面
- 一个屏幕可以处理多个任务,因此无需多个页面
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 而不是
{"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")
此数组由一个拍卖网站用于一台二手台式电脑。如果此数组对象未在服务器端正确进行清理,用户可以在最后一个字段中注入脚本。这种注入可能会危及浏览器,并可能被攻击者利用。
跨域访问和回调
此回调给开发人员增加了额外的负担,需要进行浏览器内验证。如果浏览器未验证传入的对象流,则开发人员会将最终客户的命运置于跨域目标的怜悯之中。有意或无意中,此跨域服务可能会将恶意内容注入浏览器。此跨域调用在当前 DOM 上下文中运行,因此也使当前会话易受攻击。在将此整个跨域机制集成到应用程序之前,需要非常仔细地进行审查。
结论
本文介绍了一些 AJAX 编程中的安全威胁。请注意,AJAX 还有一些其他威胁。本文无意让读者避免 AJAX 编程,而是旨在推荐一些保护 Web 的方法。