■ 河南 劉建臣
編者按:對于目前的網絡安全形式來說,跨站腳本攻擊是黑客最常用的攻擊方式之一。當然,和SQL調用相關的安全隱患同樣不可忽視,這其實就是大家很熟悉的SQL注入問題。雖說現(xiàn)在網站管理者的安全意識不斷提高,但是還有相當數(shù)量的網站存在SQL注入漏洞,這給黑客帶來了可乘之機。因此,對SQL調用進行嚴格的管理,對于提高網站安全性是極為重要的。
對于SQL注入漏洞來說,主要是因為SQL語句調用方法不當所產生的安全隱患。如果在網站程序中存在該漏洞,就會招致黑客直接對服務器進行主動攻擊,導致數(shù)據(jù)庫中的信息被竊取或被惡意篡改、讓登錄認證形同虛設、對服務器上的文件進行非法讀取或修改、隨意執(zhí)行服務器程序等不良后果。
可以說只要是調用SQL語句的位置,都可能存在注入漏洞,其可能影響到所有的頁面。
兵法云,知己知彼百戰(zhàn)不殆,只有對黑客的注入手法充分了解,才可以有針對性的采取防御措施。
下面就針對實際的例子,對黑客的攻擊手法進行抽絲剝繭的分析。例如對于某在線圖書銷售網站來說,在其PHP網頁開發(fā)語言中存在“$con = " pg_connect("host=localhost dbname=newdb user=postgres password=xxx")"”語句,連接后臺的PostgreSQL數(shù)據(jù)庫,使用“postgres”超級管理員,“xxx”為該賬戶密碼。
在后臺Ubuntu系統(tǒng)中執(zhí)行“su - postgres”命令,切換到“postgres”賬戶環(huán)境,執(zhí)行“psql”命令,在提示符下執(zhí)行“c newdb;”命令連接到數(shù)據(jù)庫,在其中可以查詢各種表的內容。在網站的查詢頁面中輸入作者的名稱,可以查詢到相關的書籍。在查詢頁面中存在“$sql= "SELECT * FROM Books WHERE uname ='$uname'ORDER BY id"”之類的語句,執(zhí)行搜索后,將符合條件的內容顯示出來。
但是,這卻存在很嚴重的安全問題。如果黑客在地址欄的提交語句后面添加某些內容,發(fā)起注入攻擊,雖然該語句會出現(xiàn)執(zhí)行錯誤的提示,但會讓黑客非法查詢到數(shù)據(jù)庫中的用戶表的內容,將敏感賬戶名稱和密碼顯示出來,用戶表中的信息用于網站認證之用。
該非法注入語句中有“'”符號,實現(xiàn)了針對原查詢語句的閉合作用,并使用后面的“and”語句連接非法的查詢語句。而查詢語句針對用戶表中的賬戶ID和密碼進行搜索,并將兩者連接在一起返回,并故意使用轉換函數(shù)進行錯誤操作,讓網頁出現(xiàn)報錯提示,這樣在頁面上就會顯示非法查詢的內容了。
當然,狡猾的黑客為避開禁止顯示錯誤信息的限制,會使用聯(lián)合查詢方式進行滲透。例如其可以將上述非法查詢語句進行修改,直接將當前的表和用戶表的相關內容拼接在一起顯示。
在網站的登錄界面,要求輸入正確的賬戶名和密碼才可以通過認證。在認證頁面中存在諸如“