天天看點

網站如何防止sql注入攻擊的解決辦法

首先我們來了解下什麼是SQL注入,SQL注入簡單來講就是将一些非法參數插入到網站資料庫中去,執行一些sql指令,比如查詢資料庫的賬号密碼,資料庫的版本,資料庫伺服器的IP等等的一些操作,sql注入是目前網站漏洞中危害最大的一個漏洞,受攻擊的網站占大多數都是sql注入攻擊。

網站如何防止sql注入攻擊的解決辦法

sql注入攻擊用英語來講Structured Query Language,在網站的程式設計語言當中是一種比較另類的網站開發語言,我們網站安全行業通常來講sql是用來資料庫查詢的一種網站開發語言,同時也是一種腳本檔案的一個檔案名,通俗來講sql就是用來對網站的資料庫進行查詢,以及增加,寫入,更新資料庫的一個sql資料庫操作。

關于資料庫我們分為2種資料庫,一種是關系資料庫,非關系資料庫,那麼目前網站使用的都是關系資料庫,關系資料庫分為sql資料庫,microsoft sql server資料庫,ACC資料庫,mysql資料庫,oracle資料庫,DB2資料庫,postgresql資料庫等等的關系資料庫,非關系資料庫分為nosql資料庫,可以存儲很大資料,針對于一些并發較高,存儲較多,雲計算的場景,頻繁讀取寫入的資料庫,像memcachedb,redis,mongodb等等非關系資料庫。

那麼什麼是sql注入呢? 簡單來講就是對網站強行進行插入資料,執行sql惡意語句對網站進行攻擊,對網站進行sql注入嘗試,可以擷取一些私密的資訊,像資料庫的版本,管理者的賬号密碼等等。

關于如何防止sql注入攻擊,我們從以下幾點開始入手

首先我們可以了解到sql注入攻擊都是通過拼接的方式,把一些惡意的參數拼接到一起,然後在網站的前端中插入,并執行到伺服器後端到資料庫中去,通常我們在寫PHP網站代碼的時候會将get ID這個參數值擷取到後直接拼接到後端伺服器中去,查詢資料庫,但是如果拼接了一些惡意的非法參數,那麼久可以當做sql語句來執行,如果防止sql注入呢?

為了防止網站被sql注入攻擊,我們應該從一開始寫代碼的時候就應該過濾一些sql注入的非法參數,将查詢的一些sql語句,以及使用者輸入的參數值都以字元串的方式來處理,不論使用者輸入的什麼東西,在sql查詢的時候隻是一段字元串,這樣構造的任何惡意參數都會以字元串的方式去查詢資料庫,一直惡意的sql注入攻擊就不會被執行,sql注入語句也就沒有效果了,再一個就是網站裡的任何一個可以寫入的地方盡可能的嚴格過濾與限制,漏下一個可以輸入的地方網站就會被攻擊,網站就會被黑,所有做的網站安全就會沒有效果,包括一些get,post,cookie方式的送出都是不可信的,像資料表裡referer user-agent等字段都是可以僞造,寫入sql注入語句的,像前端時間爆發的ecshop漏洞利用的就是user.php,僞造referer參數進行了sql注入,執行了遠端代碼。

再一個防止sql注入的方法就是開啟PHP的魔術配置,開啟安全配置模式,将safe_mode開啟on.以及關閉全局變量模式,register_globals參數設定為on,magic_quotes_gpc參數開啟,防止sql注入.如果對網站防止sql注入不懂的話,也可以找專業的網站安全公司來做安全,防止sql注入,國内像SINE安全公司,綠盟安全公司,啟明星辰安全公司都是比較不錯。