煤炭科學技術研究院有限公司 徐麗娜
?
淺談基于ASP開發(fā)的網(wǎng)站安全性研究及防范方法
煤炭科學技術研究院有限公司 徐麗娜
【摘要】本文旨在介紹基于ASP開發(fā)的企業(yè)網(wǎng)站存在的安全問題,從SQL注入、跨站腳本等方面分析可能會出現(xiàn)的問題,并針對這些問題給出必要的防范措施。
【關鍵詞】ASP;網(wǎng)站;安全
隨著互聯(lián)網(wǎng)的高速發(fā)展,Web技術日新月異,隨著微軟推出的ASP網(wǎng)頁設計語言的廣泛使用,很多地方機關、企業(yè)、事業(yè)單位的網(wǎng)站開發(fā)都使用了這種語言,配合Microsoft的桌面數(shù)據(jù)庫Access和網(wǎng)絡數(shù)據(jù)庫SQL Server的數(shù)據(jù)庫系統(tǒng)一起使用,極大的提高了開發(fā)者的工作效率。就目前國內(nèi)現(xiàn)狀看來,網(wǎng)站使用的腳本語言中,使用ASP+Access或SQLServer的網(wǎng)站仍然占有很大的比例。由于ASP本身存在一些漏洞及數(shù)據(jù)庫的安全問題,如果代碼編寫過程中忽略程序代碼的安全性,就會導致網(wǎng)站在運行中容易被攻擊,出現(xiàn)網(wǎng)站無法運行或者數(shù)據(jù)泄漏等問題。本文以此為例,討論ASP網(wǎng)站數(shù)據(jù)庫建設過程中存在的安全問題。
2.1SQL注入
2.1.1SQL注入概述
SQL 注入就是利用現(xiàn)有應用程序,將惡意構造的SQL查詢命令注入到網(wǎng)站后臺數(shù)據(jù)庫檢索引擎中執(zhí)行從而獲得敏感數(shù)據(jù)甚至執(zhí)行系統(tǒng)命令的一種攻擊方式。SQL 注入是對web應用程序而不是對web數(shù)據(jù)庫或操作系統(tǒng)本身的攻擊,是對數(shù)據(jù)庫查詢添加非預期SQL命令從而以數(shù)據(jù)庫管理員或開發(fā)人員非預期的方式操控數(shù)據(jù)庫的行為。通過這種方式,攻擊者就可以得到網(wǎng)站數(shù)據(jù)庫服務器的數(shù)據(jù),并能夠修改、刪除、添加數(shù)據(jù),從而破壞網(wǎng)站的正常使用。
SQL 注入攻擊是目前網(wǎng)絡攻擊的主要手段之一, 其安全風險性比其他的漏洞要高處很多, 因為其攻擊方式的原因, 目前防火墻無法對SQL注入漏洞進行有效地防范。
2.1.2SQL注入防范方法
只要對客戶端上傳的內(nèi)容按字符進行檢查,就可以解決SQL注入的問題。同時要遵循對數(shù)據(jù)庫配置的最小權限原則。通常使用的防范方法有:
(1)客戶端提交來的查詢語句要使用數(shù)據(jù)庫的參數(shù)化查詢接口,而不能簡單的將客戶端輸入的變量嵌入到查詢語句里。
(2)對需要查詢的比較特殊的字符("、、<>、&、+、*、;、,、.、()、CR、LF、eval等)進行轉義處理,或編碼轉換。
典型的SQL查詢語句為:
Select*from users where username=′admin′and password=′smith′如果分別給username 和password 賦值“admin' or 1=1- - ”和“aaa”。那么, SQL 腳本解釋器中的上述語句就會變?yōu)?select*from users where username=′admin′or 1=1- - and password=′aaa′[1]。該語句里有兩個判斷條件, 只要其中一個條件成立查詢就會自動執(zhí)行, 而1=1 是永遠成立的, 后面的“- - ”表示注釋, 解釋為后面的語句是注釋語句。因此在處理客戶端鍵入的查詢語句的時候,不能在數(shù)據(jù)庫中直接查詢,必須過濾掉危險字符。
(3)明確限制參數(shù)的數(shù)據(jù)類型。
(4)根據(jù)客戶的需求只提供最低限度的數(shù)據(jù)庫操作權限,盡可能降低注入攻擊對數(shù)據(jù)庫的危害。
(5)網(wǎng)站的錯誤信息不要在客戶端顯示,或者顯示自定義的錯誤信息。
2.2跨腳本攻擊
2.2.1跨腳本攻擊概述
跨站腳本攻擊是指攻擊者以正常身份利用Web應用漏洞,攻擊者向其提交包含惡意腳本代碼的輸入,由于該輸入未經(jīng)Web服
務器嚴格驗證,當用戶訪問這些惡意頁面后,瀏覽器將自動加載并執(zhí)行這些惡意腳本,完成攻擊[2]。因此,跨站腳本攻擊是一種間接攻擊技術,不直接攻擊Web服務器,而是以其為跳板攻擊用戶。跨站腳本中的“站”是指被利用的Web服務器[3]。
用戶是跨腳本攻擊的主要受害者,雖然網(wǎng)站及服務器受到的危害不大,但是會間接傷害網(wǎng)站的訪問量和安全性,導致網(wǎng)站訪問量的減少和用戶信任度的損失,因此也需要引起開發(fā)人員足夠的重視。
2.2.2跨腳本攻擊解決方案
(1)對客戶端的所有輸入都進行嚴格的過濾,例如"<"、">"、"JavaScript"等特殊字符直接過濾。并且在開發(fā)的過程中不斷記錄和更新這些特殊字符的編碼形式,才能最大限度的解決這個問題。
(2)用戶輸入的數(shù)據(jù)類型要嚴格驗證其格式、長度、范圍和內(nèi)容等。
(3)服務器端也要增加相應的過濾步驟。
(4)網(wǎng)站數(shù)據(jù)庫的輸出值有很多出口,在輸出數(shù)據(jù)的時候也要進行相應的安全檢查。
2.3WEB應用默認目錄
Web應用程序經(jīng)常使用的目錄名稱如:include、admin等,有可能被惡意攻擊者猜測到并進行利用,作為攻擊網(wǎng)站的入口,從而導致網(wǎng)站產(chǎn)生安全性問題。為解決這個問題,這類目錄的名稱需要網(wǎng)站開發(fā)人員設計不同的命名規(guī)則,在目錄名稱中加上攻擊者不容易猜測到的字符或代碼,這樣就能最大程度上避免目錄名稱被惡意攻擊者猜測成功。
在本文中,列舉了3種現(xiàn)在比較常見的微型網(wǎng)站的安全應用漏洞,同時列出了對應的解決方法。ASP語言因為簡單易學易掌握,成為廣受網(wǎng)站技術開發(fā)人員歡迎的開發(fā)工具,不過很多人在開發(fā)的過程中忽視了網(wǎng)站的安全問題,導致網(wǎng)站正常使用后出現(xiàn)各種安全問題。希望開發(fā)人員能重視ASP的安全性問題,盡量提高網(wǎng)站的安全性。
參考文獻
[1]陳小兵,張漢煜,駱力明,黃河.SQL注入攻擊及其防范檢測技術研究[J].計算機工程與應用,2007,43(11):150-152.
[2]CERT Coordination Center CERT. Advisory CA-2000-02 Malicious HTML Tag Embedded in Client Web Requests[EB/OL]. http://www.cert.org/advisories/CA-2000-02.html,2000.
[3]Mike Ter Louw,V.N.Venkatakrishnan.Blueprint:Robust Prevention.
徐麗娜,女,現(xiàn)供職于煤炭科學技術研究院有限公司,主要研究方向:網(wǎng)站開發(fā)、信息服務等。
作者簡介: