Ajax 應(yīng)用程序內(nèi)部的某些安全漏洞會(huì)導(dǎo)致惡意黑客嚴(yán)重危害您的應(yīng)用程序。身份竊取、對(duì)敏感信息進(jìn)行未受保護(hù)的訪問(wèn)、瀏覽器崩潰、Web 應(yīng)用程序破壞、拒絕服務(wù)攻擊等等,這僅是 Ajax 應(yīng)用程序可能發(fā)生的安全事件的一部分,而開(kāi)發(fā)人員在將 Ajax 功能構(gòu)建到應(yīng)用程序時(shí)需要預(yù)防這些安全問(wèn)題。developerWorks 定期撰稿人 Judith Myerson 推薦了一些可以增強(qiáng)應(yīng)用程序的工具,包括 Firefox 工具和增件,這些工具可以改善或解決 Ajax 應(yīng)用程序內(nèi)的安全問(wèn)題。
簡(jiǎn)介
在這篇文章中,您將了解一些 Ajax 安全工具,并使用它們掃描 SQL 注入和跨站點(diǎn)腳本漏洞、設(shè)置主密碼,并在發(fā)生崩潰后恢復(fù)所有窗口的狀態(tài)。您將查看一些工具和實(shí)用程序,確保應(yīng)用程序中鏈接的站點(diǎn)沒(méi)有出現(xiàn)在黑名單中,這個(gè)黑名單能夠阻止黑客修改瀏覽器功能、危害 Web 應(yīng)用程序以及實(shí)現(xiàn)惡意目的。本文將這些實(shí)用程序分為三大類(lèi):增強(qiáng)工具、Firefox 工具和 Firefox 增件。
增強(qiáng)工具
本節(jié)介紹以下幾種工具:Ajax Secure Service Layer(aSSL)工具可以保護(hù)聊天和博客;HTMLProctector 用于阻止訪問(wèn)者竊取 Ajax Web 頁(yè)面的源代碼和圖像;而 Acunetix Web Vulnerability Scanner 用于掃描并修復(fù)由 SQL 注入和跨站點(diǎn)腳本引起的問(wèn)題。當(dāng)您在自己的 Ajax 頁(yè)面中鏈接其他 Web 站點(diǎn)時(shí),使用 AjaxDNS 工具確保這些鏈接沒(méi)有出現(xiàn)在 Web 站點(diǎn)的黑名單中(考慮使用 Despoof,一個(gè)開(kāi)源的命令行反欺騙檢測(cè)程序,可以檢測(cè)所有 IP 欺騙方法。
aSSL
aSSL 是在 MIT 許可下發(fā)布的一種庫(kù),是 SSL 的開(kāi)源的 Ajax 版本,沒(méi)有附帶 HTTPS。由于對(duì) HTTP 進(jìn)行安全保護(hù),瀏覽器中的 aSSL 無(wú)法像 SSL 那樣檢查 SSL 證書(shū)。相反,aSSL 使用 RSA 算法使客戶機(jī)能夠通過(guò)一個(gè)或多個(gè)服務(wù)器處理隨機(jī)的 128 bit 密匙。建立連接之后,Ajax 工具使用 AES 算法發(fā)送和接收數(shù)據(jù)。aSSL 更適合保護(hù)非關(guān)鍵性站點(diǎn),比如通過(guò)防火墻的聊天和博客站點(diǎn),因?yàn)檫@些站點(diǎn)不需要 SSL 證書(shū)。
aSSL 在瀏覽器調(diào)用服務(wù)器時(shí)開(kāi)始保護(hù)過(guò)程。服務(wù)器接收到調(diào)用之后,它將它的 RSA 模數(shù)(modulus)返回。接著,瀏覽器生成一個(gè)隨機(jī)的 128 bit 交換密匙,使用服務(wù)器的公共匙進(jìn)行加密,并將加密后的交換密匙傳遞給服務(wù)器。服務(wù)器接接收加密交換密匙并使用其私有密匙進(jìn)行解密。最后,瀏覽器接收會(huì)話持續(xù)時(shí)間并設(shè)置一個(gè)超時(shí)以保持連接處于活躍狀態(tài)。
HTMLProtector
該工具超越了防火墻功能,可以幫助您保護(hù)在服務(wù)器上運(yùn)行的 Web 站點(diǎn)的內(nèi)容。在向服務(wù)器發(fā)送受保護(hù)的 Web 頁(yè)面時(shí),您可以在客戶端決定對(duì)哪些內(nèi)容進(jìn)行保護(hù)。HTMLProtector 可以幫助您完成以下任務(wù):
- 阻止訪問(wèn)者查看并打印您的源代碼。
- 阻止發(fā)送垃圾郵件的機(jī)器從您的頁(yè)面中提取電子郵件地址,黑客可能會(huì)使用這些地址發(fā)送垃圾郵件。
- 阻止訪問(wèn)者使用自動(dòng)下載程序?qū)⒛恼麄€(gè) Web 站點(diǎn)下載到他們的硬盤(pán)。
- 當(dāng)訪問(wèn)者將其鼠標(biāo)懸停在您的 Web 站點(diǎn)的某個(gè)鏈接上時(shí),防止電子郵件鏈接出現(xiàn)在狀態(tài)欄。您可以選擇僅保護(hù)頁(yè)面的 BODY 部分、HEADER 部分,或者同時(shí)保護(hù)兩者。
更好的是 HTMLProtector 使您能夠使用密碼保護(hù)頁(yè)面。只要確保您提供給授權(quán)訪問(wèn)者的密碼足夠保密,不易被未授權(quán)訪問(wèn)者破解。如果未授權(quán)的訪問(wèn)者試圖輸入錯(cuò)誤的密碼,您可以選擇顯示一個(gè)空白頁(yè)面、重定向到一個(gè)不同的 URL,或者返回到先前的頁(yè)面。您還可以禁止瀏覽器將您的頁(yè)面保存到本地緩存,從而進(jìn)一步阻止黑客的破壞。
Acunetix Web Vulnerability Scanner Free Edition
Acunetix Web Vulnerability Scanner(AWVS)Free Edition 工具可以查找應(yīng)用程序內(nèi)的 SQL 注入和跨站點(diǎn)腳本漏洞,并在執(zhí)行之前修復(fù)這些問(wèn)題(黑客可以利用 SQL 注入漏洞修改 SQL 命令并訪問(wèn)數(shù)據(jù)庫(kù)的數(shù)據(jù)??缯军c(diǎn)腳本攻擊使黑客能夠?qū)阂饽_本嵌入到訪問(wèn)者的瀏覽器中,然后執(zhí)行該腳本收集數(shù)據(jù))。
Acunetix Web Vulnerability Scanner Free Edition 還對(duì) Web 站點(diǎn)的爬行內(nèi)容啟用黑客 Google 數(shù)據(jù)庫(kù)查詢(xún),并識(shí)別敏感數(shù)據(jù)或可能被利用的目標(biāo)。當(dāng)查詢(xún)結(jié)果顯示出可能被利用的數(shù)據(jù)后,請(qǐng)確保在搜索引擎黑客查找并利用這些數(shù)據(jù)之前修復(fù)這個(gè)問(wèn)題(請(qǐng)確保在測(cè)試環(huán)境而不是生產(chǎn)環(huán)境中進(jìn)行測(cè)試)。
Acunetix 提供的三個(gè)高級(jí)的滲透測(cè)試工具 — HTTP Editor、HTTP Sniffer 和 HTTP Fuzzer — 可以幫助您調(diào)優(yōu) Web 應(yīng)用程序安全檢查。下面介紹了測(cè)試人員使用每種工具可以執(zhí)行的測(cè)試:
工具說(shuō)明
HTTP Editor:構(gòu)建 HTTP/HTTPS 請(qǐng)求并分析 Web 服務(wù)器響應(yīng)。
HTTP Sniffer:攔截 、記錄并修改所有 HTTP/HTTPS 流量并顯示 Web 應(yīng)用程序發(fā)送的所有數(shù)據(jù)。
HTTP Fuzzer:針對(duì)緩沖區(qū)溢出和輸入檢查執(zhí)行復(fù)雜的測(cè)試。使用規(guī)則構(gòu)建器測(cè)試大量的輸入變量。
使用掃描工具可以阻止黑客實(shí)現(xiàn)一些惡意目的,例如:
- 身份竊取
- 訪問(wèn)敏感或受限制的信息
- 免費(fèi)訪問(wèn)屬于收費(fèi)項(xiàng)目的內(nèi)容
- 修改瀏覽器功能
- 危害 Web 應(yīng)用程序
- 拒絕服務(wù)攻擊
- 公開(kāi)毀壞企業(yè)或個(gè)人的聲譽(yù)
AjaxDNS Tools
AjaxDNS Tools 可以方便快捷地檢查 Ajax 應(yīng)用程序中鏈接的 Web 站點(diǎn)的安全性。下面列出并解釋了每種工具的功能:
工具說(shuō)明
WhoisSearch:獲得與域名所有者相關(guān)的信息,除非禁止查看這些信息。
RBL Search:通過(guò)運(yùn)行 Reputation 和 Block Lists(RBL)在服務(wù)器中搜索 Web 站點(diǎn),并確保 Ajax 應(yīng)用程序中的鏈接站點(diǎn)不在這些列表中。
Ping:獲得數(shù)據(jù)包到達(dá)主機(jī)所需時(shí)間的信息。如果 ping 無(wú)法通過(guò)主機(jī)的防火墻,則無(wú)法到達(dá)該主機(jī)。
利用命令行選項(xiàng)可以從 Microsoft® 下載 Whois,或者在 Linux®/UNIX® 系統(tǒng)中使用 who 命令。
Despoof
Despoof 是另一種檢測(cè)欺騙數(shù)據(jù)包的安全工具,這些欺騙數(shù)據(jù)包能夠跨網(wǎng)絡(luò)傳送 Ajax 應(yīng)用程序。如果收到一個(gè)可疑的數(shù)據(jù)包,要嘗試判斷它真正的 Time-to-Live(TTL),并將其與所接收包的 TTL 進(jìn)行比較。
在使用 Despoof 工具之前,確保您的機(jī)器帶有 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 所示的命令運(yùn)行 Despoof:
清單 2. 運(yùn)行 Despoof
#. /despoof -h |
Firefox 工具
您可以使用 Firefox 工具設(shè)置主密碼和隱私選項(xiàng)。
設(shè)置主密碼
您必須輸入一個(gè)主密碼才能訪問(wèn)保存的密碼,以及保存 Web 表單數(shù)據(jù)和密匙。執(zhí)行以下步驟指定新的主密碼:
1.單擊 Tool 菜單下的 Options。
2.在 Options 對(duì)話框中的 Security 選項(xiàng)卡下,轉(zhuǎn)到 Passwords 部分。
3.選中選項(xiàng)框以使用主密碼。
4.在 Change Master Password 對(duì)話框中,輸入一個(gè)新密碼并重新輸入密碼進(jìn)行確認(rèn)。
輸入新密碼的每個(gè)字符都會(huì)看到一些綠色的塊添加到密碼質(zhì)量指示器(password quality meter)。密碼越健壯,指示器顯示的綠色塊越多。如果密碼達(dá)到最健壯的級(jí)別,那么整個(gè)指示器將添滿綠色塊。
當(dāng)系統(tǒng)確認(rèn)輸入的密碼匹配,您將看到一個(gè)提示成功修改主密碼的消息。(確保記住主密碼,否則無(wú)法訪問(wèn)它保護(hù)的任何信息!)
設(shè)置隱私選項(xiàng)
讓我們查看一些 cookie 異常并清除隱私數(shù)據(jù)。單擊 Tool 菜單下的 Options,然后轉(zhuǎn)到 Privacy 選項(xiàng)卡。在 Cookie 部分中,您可以接受來(lái)自所有或某些來(lái)源的 cookie。單擊 Exceptions 指定對(duì)哪些 Web 站點(diǎn)經(jīng)常允許使用或絕不允許使用 cookie。輸入需要管理的站點(diǎn)的精確地址并單擊 Block、Allow for Session 或 Allow。完成這些操作后,單擊 Close。
允許 Firefox 接受來(lái)自站點(diǎn)的 cookie 時(shí),可以選擇處理它們的方式。這些方式包括:等待直到 cookie 過(guò)期、等待直到關(guān)閉 Firefox 或者每次打開(kāi)時(shí)要求 Firefox 進(jìn)行詢(xún)問(wèn)。
要設(shè)置過(guò)期日期,請(qǐng)轉(zhuǎn)到 History 部分,并確保默認(rèn)選擇了允許 Firefox 記住最近 20 天內(nèi)訪問(wèn)過(guò)的頁(yè)面的選框。如果您覺(jué)得過(guò)期時(shí)間不合適,可以進(jìn)行修改。
Firefox 增件
三個(gè)非常有用的 Firefox 擴(kuò)展是 Session Manager(在崩潰后恢復(fù)所有窗口的狀態(tài))、Homeland Security Threat Level(在狀態(tài)欄顯示當(dāng)前級(jí)別)和 WiKID(密碼和證書(shū)的替代選擇)。
Session Manager
Session Manager 在崩潰后重啟時(shí)可以根據(jù)需要或自動(dòng)地保存和恢復(fù)所有窗口的狀態(tài)。它使您能夠重新打開(kāi)意外關(guān)閉的窗口和選項(xiàng)卡。Session Manager 可以加密保存在會(huì)話文件和已關(guān)閉的窗口文件中的會(huì)話數(shù)據(jù)。要啟用這個(gè)特性,請(qǐng)執(zhí)行以下操作:
1.轉(zhuǎn)到 Tools 下的 Session Manager。
2.單擊 Session Manager Options。
3.在 Encryption 部分中,選擇選框加密已保存和關(guān)閉的窗口。如果設(shè)置有主密碼,F(xiàn)irefox 將發(fā)出警告,要求您輸入密碼以加密或解密會(huì)話。
4.單擊 OK。
如果 Firefox 崩潰了,它在重啟時(shí)會(huì)詢(xún)問(wèn)您是否恢復(fù)最近的會(huì)話。Session Manager 不僅可以恢復(fù)當(dāng)前瀏覽的會(huì)話,還能根據(jù)需要恢復(fù)其他會(huì)話。因此,最好不要禁用 Session Manager Options 對(duì)話框 SessionStore 選項(xiàng)卡中的 Crash Recovery。
這個(gè)擴(kuò)展取代了 SessionSaver 和 Tab Mix Plus 的會(huì)話管理器。它存儲(chǔ)的數(shù)據(jù)比這兩個(gè)程序多。建議您只安裝一個(gè)與會(huì)話相關(guān)的擴(kuò)展。
Homeland Security Threat Levels
該擴(kuò)展將當(dāng)前的 U.S. Homeland Security Threat Level(Severe, High, Elevated, Guarded, and Low)顯示為狀態(tài)欄的一個(gè)圖標(biāo),允許您快捷地查看威脅級(jí)別。
WiKID
WiKID Strong Authentication System 是一款基于商業(yè)/開(kāi)源軟件的雙因素身份驗(yàn)證解決方案。WiKID 旨在成為令牌、證書(shū)、密碼的安全替代品。這個(gè) Firefox 擴(kuò)展使用語(yǔ)義 Web 技術(shù)自動(dòng)為用戶輸入一次性代碼。WiKID 令牌支持多個(gè) WiKID 域,因此不再需要令牌 ‘keychain’。
結(jié)束語(yǔ)
本文幫助您提前進(jìn)行一些規(guī)劃,以改善服務(wù)器、客戶端或網(wǎng)絡(luò)中的 Ajax 應(yīng)用程序的安全性。由于安全性對(duì)開(kāi)發(fā)人員、測(cè)試人員、系統(tǒng)管理員和潛在用戶都非常重要,因此覺(jué)察并解決潛在的安全性問(wèn)題可以為開(kāi)發(fā)團(tuán)隊(duì)和用戶提供完美的體驗(yàn)。