NoSQL 會有注入問題嗎?

大家好,我是小白

我想問一下在傳統的關係型資料庫會有SQL注入問題,可以通過過濾函數或者查詢條件預編譯等方法進行預防

現在比較流行的NoSQL比如redis這樣的資料庫,也會遇到代碼和數據交叉的地方,那麼也應該會有注入漏洞吧

如果有,通常用哪些方法預防呢
沒有的話,又是為什麼呢

謝謝各位大俠~!


沒有(運行時)編譯,就沒有注入。


SQL Injection是Code Injection的一種。凡是涉及到根據用戶輸入去做代碼生成的技術,都有可能涉及到注入的問題。被注入的代碼可以是作為查詢語言或者是表現型代碼如HTML中內嵌javascript。 SQL是一種查詢語言,所以有這類問題。其他NoSQL的客戶端驅動如果使用了查詢語言,尤其是一些文檔型資料庫,也會有類似問題。

對於NoSQL的注入風險有個例子是部分MongoDB客戶端驅動允許通過字元串構造查詢語句,而不是object/dict的查詢條件[1]。如果用戶輸入的語句中包含有惡意的字元串,可能最終會被構造成合法的語句執行。

[1] http://erlend.oftedal.no/blog/?blogid=111


有人的地方就有江湖。。。有代碼的地方就有安全問題。
就算不能直接注入,還可以構造數據溢出~ 難易程度的不同而已。。
浮動棧減少了堆棧溢出攻擊,但並不是完全避免了。。。。
沒有預防的辦法,不然做安全的都要去喝西北風了,對輸入做分析控制,減少風險,是比較優的做法了。


當然會有注入,例如mongoDB上可以放生php array injection ,js injection 和 shell injection
這是我的一個自動注入攻擊的項目,歡迎交流
GitHub - youngyangyang04/NoSQLAttack


當然有注入,用戶只要能控制輸入,就有可能存在注入。


推薦閱讀:

如何在node項目中引入redis做session持久化?
數據多的時候為什麼要使用redis而不用mysql?

TAG:網路安全 | Redis | NoSQL | 安全 | SQL注入 |