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