Home / Category / Web Development

一次我在半島冰室用膳,在旁邊的客人,一個介乎脫髮的中青年對著三五位男女同事哈哈大笑道,「聽聞SQL被喻為掃地呀姐都能夠識寫既語言。」我初時想,程式員究竟有多輕視SQL?後來發現自己的想法都有點兒政治不正確(political incorrect)。只能說,他對 SQL 的讚美與他對掃地職業的尊重相稱。或許SQL對掃地姐姐來說十分容易上手,或是寫SQL的人都很腳踏實地「down to earth」,願意落手落腳(get hands dirty)。言歸正傳,所謂的SQL即是代表Structured Query Language。幾乎無程式員把SQL之為程式的語言,它就像是上網時候用來Search搜尋的格式,用來查詢數據庫的數據。就像上google 搜尋 “site:luke.hk Luke”,你只會屬到特定網址的資料一樣,是一種格式。

SQL植入(Sql injection) 常見的駭客攻擊方式

Sql Injection 可以說是目前網路上最常用的駭客攻擊方式,因為攻擊方式簡單,而且毋須使用其他任何軟體,因他是針對網站漏洞來竊取或破壞網站。由於現在大多網站都有數據庫(Database),它們多是開源的資料庫,大多免費的內容管理系統都使用Mysql作為數據庫Database。其本上Database只不過是一個記錄方式,使用文字和數字記錄在一個程式上,而這個程式,是一個包裝好的文件,能夠輕易存取。而它的設計,是為了用家(程式員),方便存或取,不過程式員是使用設計好的指令(Command line),而言埋指令,就是SQL。

SQL植入其實就是程式員錯誤而導致的漏洞,所為人誰無過。程式不過是語言,很多時候我們都總會在遺漏一些邏輯,太過跳脫。Sql Injection藉由一些取巧方式,利用符號裝扮成SQL語法,在漏洞上跳過一些限制,從而改變資料庫的內容。有時能夠或存或取,甚至刪去整個記錄表,在MySql還刪減整個表,叫作Drop Table。當然,一旦能夠存取,我們便能取得整個得數據庫內容,包含帳號和密碼。雖然密碼會被一些加密方式加密例如MD5,儘管他的原生設計是防止逆轉解密的,但中國的駭客在是最早證明他能夠被解密破譯的,其時在2000年代。

以下面就舉一個SQL登入漏洞,用的是MySQL。
假設一個會員登錄網站。我們是用基本的方法登入:輸入帳號和密碼,程式會驗證兩者是否正確。這個程式邏輯是:找查帳號,然後核對密碼。當使用者A,例如輸入名稱帳戶A和密碼123,首先數據庫會走到會員列表Y中,抽取帳戶名稱A。A帳戶內的密碼是123,登入者是在密碼列提交的都是123,那麼程式會將之傳回正確,幾次視為順利登入。
這個是我們正確使用的SQL語法
select * from Y where account=’A’ and password=’123’
但是,若然駭客輸入有特殊字元的帳號:「 or 1=1 /* 」,密碼:「任意值」
例如
select * from Y where account=" or 1=1 /*‘ and password="
這時SQL語法就會變成:
select * from Y where account=" or 1=1 /*‘ and password="

在MySQL語法中,因為「/*」是被略過的註解,因此在「/*」後面的字串不會被執行。而後面的判斷句「1=1」是成立的,導致程式傳回正確,順利登入此網站成功。

SQL的註解方式
SQL註解大概分為以下三種,不同的SQL程式。
「/*」 MySQL
「–」 MsSQL
「#」 MySQL , # 對於 browser 來說是有意義的,那是錨點的意思,所有必須先透過 Url Encode 後的代碼 「%23」 來代替。

防護方式

由於植入的關鍵在於標點符號,因此我們過濾「’」和「”」可謂更為保險。在SLQ設定時,注意符號類型,例如字元、數字等等。此外,一般密碼加密方式,如MD5已被證明可被可解,更保險方式是每個用戶都加入不同的代碼二次加密,稱為 Salt。

PHP過濾SQL 植入的語法:
Php是一個物件導向程式,加上數據庫,能夠編寫出網頁資料庫系統,讓會員登入或註冊。這些行動都是存取數據庫的記錄。Php本身已設定很多功能,過濾符號是一種專門為SQL設計的設法,在網頁設計的程式員當中,十分基本的技術和常識。只要使用“string mysql_real_escape_string”,便會將所有特別符號之加入”\”,以茲識別。

它是
string mysql_real_escape_string

把這語句,放在用戶提交代碼之內,php會幫您過濾掉那些符號。

Back
Copy link
Add to
Email
Facebook
Whatsapp
Gmail
More
Save
Like
Cancel