P0事故!這條Redis命令,直接讓企業損失400萬

什麼樣的 Redis 命令會有如此威力,造成如此大的損失?

具體消息如下:

P0事故!這條Redis命令,直接讓企業損失400萬

看完這個消息後,我心又一驚,為什麼這麼低級的問題還在犯?為什麼線上的危險命令沒有被禁用?這事件報道出來真是覺得很低級。。。

且不說是哪家公司,發生這樣的事故,不管是大公司還是小公司,我覺得都不應該,相關負責人應該引咎辭職!!!

對 Redis 稍微有點使用經驗的人都知道線上是不能執行keys *相關命令的,雖然其模糊匹配功能使用非常方便也很強大,在小數據量情況下使用沒什麼問題,數據量大會導致 Redis 鎖住及 CPU 飆升,在生產環境建議禁用或者重命名!

還有哪些危險命令?

Redis 的危險命令主要有以下幾個:

keys

客戶端可查詢出所有存在的鍵。

flushdb

P0事故!這條Redis命令,直接讓企業損失400萬

刪除 Redis 中當前所在數據庫中的所有記錄,並且此命令從不會執行失敗。

flushall

P0事故!這條Redis命令,直接讓企業損失400萬

刪除 Redis 中所有數據庫中的所有記錄,不只是當前所在數據庫,並且此命令從不會執行失敗。

config

客戶端可修改 Redis 配置。

怎麼禁用或重命名危險命令?

看下redis.conf默認配置文件,找到SECURITY區域,如以下所示。

P0事故!這條Redis命令,直接讓企業損失400萬

看說明,添加rename-command配置即可達到安全目的。

1)禁用命令

P0事故!這條Redis命令,直接讓企業損失400萬

2)重命名命令

P0事故!這條Redis命令,直接讓企業損失400萬

上面的 XX 可以定義新命令名稱,或者用隨機字符代替。

經過以上的設置之後,危險命令就不會被客戶端執行了。


分享到:


相關文章: