首先咱們來了解下什麼是SQL注入,SQL注入簡單來說就是將一些非法參數插入到網站數據庫中去,執行一些sql命令,好比查詢數據庫的帳號密碼,數據庫的版本,數據庫服務器的IP等等的一些操做,sql注入是目前網站漏洞中危害最大的一個漏洞,受攻擊的網站佔大多數都是sql注入攻擊。php
sql注入攻擊用英語來說Structured Query Language,在網站的編程語言當中是一種比較另類的網站開發語言,咱們網站安全行業一般來說sql是用來數據庫查詢的一種網站開發語言,同時也是一種腳本文件的一個文件名,通俗來說sql就是用來對網站的數據庫進行查詢,以及增長,寫入,更新數據庫的一個sql數據庫操做。前端
關於數據庫咱們分爲2種數據庫,一種是關係數據庫,非關係數據庫,那麼目前網站使用的都是關係數據庫,關係數據庫分爲sql數據庫,microsoft sql server數據庫,ACC數據庫,mysql數據庫,oracle數據庫,DB2數據庫,postgresql數據庫等等的關係數據庫,非關係數據庫分爲nosql數據庫,能夠存儲很大數據,針對於一些併發較高,存儲較多,雲計算的場景,頻繁讀取寫入的數據庫,像memcachedb,redis,mongodb等等非關係數據庫。mysql
那麼什麼是sql注入呢? 簡單來說就是對網站強行進行插入數據,執行sql惡意語句對網站進行攻擊,對網站進行sql注入嘗試,能夠獲取一些私密的信息,像數據庫的版本,管理員的帳號密碼等等。redis
關於如何防止sql注入攻擊,咱們從如下幾點開始入手sql
首先咱們能夠了解到sql注入攻擊都是經過拼接的方式,把一些惡意的參數拼接到一塊兒,而後在網站的前端中插入,並執行到服務器後端到數據庫中去,一般咱們在寫PHP網站代碼的時候會將get ID這個參數值獲取到後直接拼接到後端服務器中去,查詢數據庫,可是若是拼接了一些惡意的非法參數,那麼久能夠當作sql語句來執行,若是防止sql注入呢?mongodb
爲了防止網站被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安全公司,綠盟安全公司,啓明星辰安全公司都是比較不錯。編程