AJAX 安全性
异步 Javascript 和 XML (AJAX) 是用于开发 Web 应用程序以提供丰富用户体验的最新技术之一。由于它是一项新技术,因此还有许多安全问题尚未完全确定,以下是 AJAX 中的一些安全问题。
由于需要保护的输入更多,因此攻击面更大。
它还暴露了应用程序的内部功能。
无法保护身份验证信息和会话。
客户端和服务器端之间的界限非常狭窄,因此存在犯安全错误的可能性。
示例
以下是 AJAX 安全性的一个例子 −
2006 年,一种蠕虫利用 XSS 和 AJAX 感染了雅虎邮件服务,该蠕虫利用了雅虎邮件的 onload 事件处理中的漏洞。当打开受感染的电子邮件时,蠕虫会执行其 JavaScript,并将副本发送给受感染用户的所有 Yahoo 联系人。
动手操作
步骤 1 − 我们需要尝试使用 XML 注入向您允许的奖励集添加更多奖励。以下是该场景的快照。
步骤 2 − 确保我们使用 Burp Suite 拦截请求和响应。设置如下图所示。
步骤 3 − 输入场景中给出的帐号。我们将能够获得我们有资格获得的所有奖励的列表。我们有资格获得 5 个奖励中的 3 个。
步骤 4 − 现在让我们点击"提交",看看我们在响应 XML 中得到了什么。如下所示,我们有资格获得的三个奖励以 XML 形式传递给我们。
步骤 5 − 现在让我们编辑这些 XML 并添加其他两个奖励。
步骤 6 −现在所有奖励都会显示给用户供他们选择。选择我们添加的奖励并点击"提交"。
步骤 7 −出现以下消息,表示"* 恭喜。您已成功完成本课程。"
预防机制
客户端 −
- 使用 .innerText 而不是 .innerHtml。
- 不要使用 eval。
- 不要依赖客户端逻辑来确保安全。
- 避免编写序列化代码。
- 避免动态构建 XML。
- 切勿将机密传输给客户端。
- 不要在客户端代码中执行加密。
- 不要在客户端执行影响安全的逻辑。
服务器端 −
- 使用 CSRF 保护。
- 避免编写序列化代码。
- 服务可以可由用户直接调用。
- 避免手动构建 XML,使用框架。
- 避免手动构建 JSON,使用现有框架。