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