Ajax 应用程序内部的某些安全漏洞会导致恶意黑客严重危害您的应用程序。身份窃取、对敏感信息进行未受保护的访问、浏览器崩溃、Web
应用程序破坏、拒绝服务攻击等等,这仅是 Ajax 应用程序可能发生的安全事件的一部分,而开发人员在将 Ajax 功能构建到应用程序时需要预防这些安全问题。developerWorks
定期撰稿人 Judith Myerson 推荐了一些可以增强应用程序的工具,包括 Firefox 工具和增件,这些工具可以改善或解决
Ajax 应用程序内的安全问题。
在我的前一篇 developerWorks 文章 “Ajax
性能工具” 中,我讨论了如何通过降低 HTTP 请求的数量来监视 I/O 磁盘问题、分析网络流量、发现过度调用、减少内存消耗,并解决其他性能问题。
在这篇文章中,您将了解一些 Ajax 安全工具,并使用它们扫描 SQL 注入和跨站点脚本漏洞、设置主密码,并在发生崩溃后恢复所有窗口的状态。您将查看一些工具和实用程序,确保应用程序中链接的站点没有出现在黑名单中,这个黑名单能够阻止黑客修改浏览器功能、危害
Web 应用程序以及实现恶意目的。本文将这些实用程序分为三大类:增强工具、Firefox 工具和 Firefox 增件。
本节介绍以下几种工具:Ajax Secure Service Layer(aSSL)工具可以保护聊天和博客;HTMLProctector
用于阻止访问者窃取 Ajax Web 页面的源代码和图像;而 Acunetix Web Vulnerability Scanner
用于扫描并修复由 SQL 注入和跨站点脚本引起的问题。当您在自己的 Ajax 页面中链接其他 Web 站点时,使用 AjaxDNS
工具确保这些链接没有出现在 Web 站点的黑名单中(考虑使用 Despoof,一个开源的命令行反欺骗检测程序,可以检测所有 IP
欺骗方法(参见 参考资料)。
aSSL
aSSL 是在 MIT 许可下发布的一种库,是 SSL 的开源的 Ajax 版本,没有附带 HTTPS。由于对 HTTP 进行安全保护,浏览器中的
aSSL 无法像 SSL 那样检查 SSL 证书。相反,aSSL 使用 RSA 算法使客户机能够通过一个或多个服务器处理随机的
128 bit 密匙。建立连接之后,Ajax 工具使用 AES 算法发送和接收数据。aSSL 更适合保护非关键性站点,比如通过防火墙的聊天和博客站点,因为这些站点不需要
SSL 证书。
aSSL 在浏览器调用服务器时开始保护过程。服务器接收到调用之后,它将它的 RSA 模数(modulus)返回。接着,浏览器生成一个随机的
128 bit 交换密匙,使用服务器的公共匙进行加密,并将加密后的交换密匙传递给服务器。服务器接接收加密交换密匙并使用其私有密匙进行解密。最后,浏览器接收会话持续时间并设置一个超时以保持连接处于活跃状态。
HTMLProtector
该工具超越了防火墙功能,可以帮助您保护在服务器上运行的 Web 站点的内容。在向服务器发送受保护的 Web 页面时,您可以在客户端决定对哪些内容进行保护。HTMLProtector
可以帮助您完成以下任务:
- 阻止访问者查看并打印您的源代码。
- 阻止发送垃圾邮件的机器从您的页面中提取电子邮件地址,黑客可能会使用这些地址发送垃圾邮件。
- 阻止访问者使用自动下载程序将您的整个 Web 站点下载到他们的硬盘。
- 当访问者将其鼠标悬停在您的 Web 站点的某个链接上时,防止电子邮件链接出现在状态栏。您可以选择仅保护页面的 BODY
部分、HEADER 部分,或者同时保护两者。
更好的是 HTMLProtector 使您能够使用密码保护页面。只要确保您提供给授权访问者的密码足够保密,不易被未授权访问者破解。如果未授权的访问者试图输入错误的密码,您可以选择显示一个空白页面、重定向到一个不同的
URL,或者返回到先前的页面。您还可以禁止浏览器将您的页面保存到本地缓存,从而进一步阻止黑客的破坏。
Acunetix Web Vulnerability
Scanner Free Edition
Acunetix Web Vulnerability Scanner(AWVS)Free Edition 工具可以查找应用程序内的
SQL 注入和跨站点脚本漏洞,并在执行之前修复这些问题(黑客可以利用 SQL 注入漏洞修改 SQL 命令并访问数据库的数据。跨站点脚本攻击使黑客能够将恶意脚本嵌入到访问者的浏览器中,然后执行该脚本收集数据)。
Acunetix Web Vulnerability Scanner Free Edition 还对 Web 站点的爬行内容启用黑客
Google 数据库查询,并识别敏感数据或可能被利用的目标。当查询结果显示出可能被利用的数据后,请确保在搜索引擎黑客查找并利用这些数据之前修复这个问题(请确保在测试环境而不是生产环境中进行测试)。
Acunetix 提供的三个高级的渗透测试工具 — HTTP Editor、HTTP Sniffer 和 HTTP Fuzzer
— 可以帮助您调优 Web 应用程序安全检查。下面介绍了测试人员使用每种工具可以执行的测试:
工具 |
说明 |
HTTP
Editor |
构建 HTTP/HTTPS 请求并分析 Web 服务器响应。 |
HTTP Sniffer |
拦截、记录并修改所有 HTTP/HTTPS 流量并显示 Web 应用程序发送的所有数据。 |
HTTP Fuzzer |
针对缓冲区溢出和输入检查执行复杂的测试。使用规则构建器测试大量的输入变量。 |
使用扫描工具可以阻止黑客实现一些恶意目的,例如:
- 身份窃取
- 访问敏感或受限制的信息
- 免费访问属于收费项目的内容
- 修改浏览器功能
- 危害 Web 应用程序
- 拒绝服务攻击
- 公开毁坏企业或个人的声誉
AjaxDNS Tools
AjaxDNS Tools 可以方便快捷地检查 Ajax 应用程序中链接的 Web 站点的安全性。下面列出并解释了每种工具的功能:
工具 |
说明 |
WhoisSearch |
获得与域名所有者相关的信息,除非禁止查看这些信息。 |
RBL Search
|
通过运行 Reputation 和 Block Lists(RBL)在服务器中搜索 Web 站点,并确保 Ajax
应用程序中的链接站点不在这些列表中。 |
Ping |
获得数据包到达主机所需时间的信息。如果 ping 无法通过主机的防火墙,则无法到达该主机。 |
利用命令行选项可以从 Microsoft® 下载 Whois,或者在 Linux®/UNIX® 系统中使用
who 命令。
Despoof
Despoof 是另一种检测欺骗数据包的安全工具,这些欺骗数据包能够跨网络传送 Ajax 应用程序。如果收到一个可疑的数据包,要尝试判断它真正的
Time-to-Live(TTL),并将其与所接收包的 TTL 进行比较。
在使用 Despoof 工具之前,确保您的机器带有 libpcap 0.4 和 libnet 1.0(或最新版本)。 使用清单
1 中的命令解压文件,切换到 despoof 目录,然后安装 Despoof:
清单 1. 安装 Despoof
#tar xvzf despoof*tgz
#cd despoof*
#gcc 'libnet-config-defines' -o despoof despoof.c -lnet -lpca |
输入清单 2 所示的命令运行 Despoof:
清单 2. 运行 Despoof
您可以使用 Firefox 工具设置主密码和隐私选项。
设置主密码
您必须输入一个主密码才能访问保存的密码,以及保存 Web 表单数据和密匙。执行以下步骤指定新的主密码:
- 单击 Tool 菜单下的 Options。
- 在 Options 对话框中的 Security 选项卡下,转到 Passwords 部分。
- 选中选项框以使用主密码。
- 在 Change Master Password 对话框中,输入一个新密码并重新输入密码进行确认。
输入新密码的每个字符都会看到一些绿色的块添加到密码质量指示器(password quality meter)。密码越健壮,指示器显示的绿色块越多。如果密码达到最健壮的级别,那么整个指示器将添满绿色块。
当系统确认输入的密码匹配,您将看到一个提示成功修改主密码的消息。(确保记住主密码,否则无法访问它保护的任何信息!)
设置隐私选项
让我们查看一些 cookie 异常并清除隐私数据。单击 Tool 菜单下的 Options,然后转到 Privacy
选项卡。在 Cookie 部分中,您可以接受来自所有或某些来源的 cookie。单击 Exceptions 指定对哪些
Web 站点经常允许使用或绝不允许使用 cookie。输入需要管理的站点的精确地址并单击 Block、Allow
for Session 或 Allow。完成这些操作后,单击 Close。
允许 Firefox 接受来自站点的 cookie 时,可以选择处理它们的方式。这些方式包括:等待直到 cookie 过期、等待直到关闭
Firefox 或者每次打开时要求 Firefox 进行询问。
要设置过期日期,请转到 History 部分,并确保默认选择了允许 Firefox 记住最近 20 天内访问过的页面的选框。如果您觉得过期时间不合适,可以进行修改。
三个非常有用的 Firefox 扩展是 Session Manager(在崩溃后恢复所有窗口的状态)、Homeland Security
Threat Level(在状态栏显示当前级别)和 WiKID(密码和证书的替代选择)。
Session Manager
Session Manager 在崩溃后重启时可以根据需要或自动地保存和恢复所有窗口的状态。它使您能够重新打开意外关闭的窗口和选项卡。Session
Manager 可以加密保存在会话文件和已关闭的窗口文件中的会话数据。要启用这个特性,请执行以下操作:
- 转到 Tools 下的 Session Manager。
- 单击 Session Manager Options。
- 在 Encryption 部分中,选择选框加密已保存和关闭的窗口。如果设置有主密码,Firefox 将发出警告,要求您输入密码以加密或解密会话。
- 单击 OK。
如果 Firefox 崩溃了,它在重启时会询问您是否恢复最近的会话。Session Manager 不仅可以恢复当前浏览的会话,还能根据需要恢复其他会话。因此,最好不要禁用
Session Manager Options 对话框 SessionStore 选项卡中的 Crash Recovery。
这个扩展取代了 SessionSaver 和 Tab Mix Plus 的会话管理器。它存储的数据比这两个程序多。建议您只安装一个与会话相关的扩展。
Homeland Security Threat
Levels
该扩展将当前的 U.S. Homeland Security Threat Level(Severe, High, Elevated,
Guarded, and Low)显示为状态栏的一个图标,允许您快捷地查看威胁级别。
WiKID
WiKID Strong Authentication System 是一款基于商业/开源软件的双因素身份验证解决方案。WiKID
旨在成为令牌、证书、密码的安全替代品。这个 Firefox 扩展使用语义 Web 技术自动为用户输入一次性代码。WiKID 令牌支持多个
WiKID 域,因此不再需要令牌 ‘keychain’。
本文帮助您提前进行一些规划,以改善服务器、客户端或网络中的 Ajax 应用程序的安全性。由于安全性对开发人员、测试人员、系统管理员和潜在用户都非常重要,因此觉察并解决潜在的安全性问题可以为开发团队和用户提供完美的体验。
学习
获得产品和技术
讨论 |