天天看點

如何防止 SQL 注入?

如何防止 SQL 注入?

題圖:by from gary bunt

昨晚看見群裡在讨論關于資料庫安全以及關于 SQL 注入的問題,那就簡單的說一下。

————

首先 SQL 注入是指有些不法分子或者黑客利用一些代碼中的 SQL 漏洞來進行攻擊,進取資料庫進行篡改一些資料或者删除一些表中的業務重要資料,更有甚者直接把表和庫直接删除。。

防止 SQL 注入,而黑客一般利用兩種途徑去進行攻擊,一種是動态 SQL。比如系統中的使用者登入認證:sring sql =“select * from t_user where username =‘ “username” ’+‘ “password” '。黑客經常用到的手段就是1=1--,直接達到免密登入,進去資料庫進行為所欲為的 update、delete、甚至drop table、drop database等。

條件後面username=”or 1=1 使用者名等于 ” 或1=1 那麼這個條件一定會成功;然後後面加兩個-,這意味着注釋,它将後面的語句注釋,讓他們不起作用,這樣語句永遠都能正确執行,使用者輕易騙過系統,擷取合法身份。

如果在來點勁爆的,執行DROP DATABASE (DB Name) --' and password=''那後果就可能慘了,要比比特币勒索還要痛苦。

另外一種就是通過存儲過程來進行攻擊。找到存儲過程當中的一些特殊的 SQL以及一些特殊符号,去轉義符、分号、--符号等。

—————

這個時候就涉及到了資料庫安全,如何保證并且有效防範資料庫被别人攻擊呢?

資料庫安全包含兩層:第一層是指系統運作安全,系統運作安全通常受到的威脅如下,一些網絡不法分子通過網絡,區域網路等途徑通過入侵電腦使系統無法正常啟動,或超負荷讓機子運作大量算法,并關閉cpu風扇,使cpu過熱燒壞等破壞性活動; 第二層是指系統資訊安全,系統安全通常受到的威脅如下,黑客對資料庫入侵,并盜取想要的資料。資料庫系統的安全特性主要是針對資料而言的,包括資料獨立性、資料安全性、資料完整性、并發控制、故障恢複等幾個方面。

1、資料庫盡量不要裸奔在公網上。

一般資料庫伺服器,也就是裝資料庫的機器盡量不要裝在公網機器上。公網機器很可能被SQL注入。危險性非常大。退一步講,就算裝在了公網機器上,也要進行防火牆設定,比如開白名單、入出站規則設定。去年的勒索病毒就是最好的案例。

2、應用系統配置檔案加密

比如,一般的應用系統都會有配置檔案webconfig,一般裡面會涉及到連結資料庫的字元串,如ip、端口、資料庫名稱、使用者名、密碼建議都進行加密。一般采用md5或base64去進行加密,但是這種方法太低級了。需要去用更難破解的手段去加密。其他行業我不太清楚、在醫療行業醫院在三級等保時,配置檔案各個應用系統配置檔案必須要求是加密的。

3、作業系統層面的漏洞

作業系統也是有漏洞的,這個時候就必須要去打更新檔,很重要。吃碗泡面,沒調料我估計也好吃不到哪裡去。

4、資料庫的使用者名和密碼複雜程度

用root或者administrator密碼123或者123456的這種都是在作死。

5、還要防止那種删庫跑路的

一個rm-rf/*或者資源回收筒就徹底涼涼了。『從删庫到跑路』這本書在某寶上已經賣的很火了。開個玩笑,删庫獲刑的不少了,千萬不可沖動。

原文釋出時間為:2018-10-26

本文作者: 說點特别的

本文來自雲栖社群合作夥伴“

說點特别的

”,了解相關資訊可以關注“

”。