Security Testing 简明教程

AJAX Security

异步 Javascript 和 XML (AJAX) 是用于开发 Web 应用程序的最新技术之一,旨在提供丰富的用户体验。由于它是一项新技术,因此还有很多要建立的安全问题,以下是 AJAX 中的一些安全问题:

  1. 攻击面较大,因为有更多要保护的输入内容。

  2. 它还暴露了应用程序的内部功能。

  3. 未能保护身份验证信息和会话。

  4. 客户端和服务器端之间有一条很细的界线,因此有可能会犯安全错误。

Example

以下是 AJAX 安全的一个例子:

2006 年,一个蠕虫病毒感染了 yahoo 邮件服务,它利用了 Yahoo 邮件 onload 事件处理中的一个漏洞,该蠕虫利用了 XSS 和 AJAX。当打开受感染的电子邮件时,蠕虫会执行其 JavaScript,向受感染用户的全部 Yahoo 联系人发送一封副本。

Hands ON

Step 1 − 我们需要尝试使用 XML 注入来向已获准的奖励集中添加更多奖励。以下是该场景的快照。

xml injection

Step 2 − 确保使用 Burp Suite 拦截 请求和响应。设置如下所示。

burp settings

Step 3 − 输入场景中给出的帐号。我们能够获得我们有资格享受的所有奖励的列表。我们有资格享受 5 个奖励中的 3 个。

xml injection1

Step 4 − 现在,让我们点击“提交”,看看在响应 XML 中会看到什么。如下所示,我们有资格享受的 3 个奖励都以 XML 形式传给了我们。

xml injection2

Step 5 − 现在,让我们编辑那些 XML,加上另外两个奖励。

xml injection3

Step 6 − 现在,用户可以选择所有奖励。选择我们添加的那些奖励,然后点击“提交”。

xml injection4

Step 7 − 出现以下消息,显示“* 恭喜。您已成功完成此课程”。

Preventive Mechanisms

客户端 -

  1. 使用 .innerText 代替 .innerHtml。

  2. Do not use eval.

  3. 不要依赖于客户端逻辑进行安全保护。

  4. Avoid writing serialization code.

  5. Avoid building XML dynamically.

  6. 不要向客户端传输机密信息。

  7. 不要在客户端代码中执行加密。

  8. 不要在客户端执行影响安全的逻辑。

服务器端-

  1. Use CSRF protection.

  2. Avoid writing serialization code.

  3. 用户可以直接调用服务。

  4. 避免手动构建 XML,使用框架。

  5. 避免手动构建 JSON,使用现有框架。