使用MongoCollection<ThingWithString> collection
,我應該警惕撥打collection.Insert(stringythingy)
?如果ThingWithString中的用戶指定的字段是,例如";db.dropDatabase();
,我是否正在爲自己的行爲設置一些不幸?我應該在輸入MongoDB之前(使用C#驅動程序)清理用戶創建的字符串嗎?
1
A
回答
2
簡短回答:沒有,因爲你提到的原因,在進入MongoDB時沒有必要清理用戶輸入。由於它的二進制傳輸格式(BSON),MongoDB中沒有「SQL注入」的等價物。
一個BSON文件裏面沒有字符串可以被錯誤地解釋爲代碼(例如";db.dropDatabase();
),除非你確實努力 - 例如,如果你建立你想運行並傳遞到db.eval()
的代碼你自己的字符串表示,你應該永遠不會這樣做。
只要您使用驅動程序的本地方法與Mongo進行通信,您的請求中包含的任何數據將在驅動程序發送到服務器之前由驅動程序映射到有效的BSON文檔 - 這是驅動程序的責任。
但是,您可以決定在進入Mongo用於其他目的(例如HTML編碼)時對用戶輸入進行清理,但這完全取決於您。就我個人而言,我會在出路的時候做這件事,而不是因爲各種原因而不是在這個問題的範圍之內。
相關問題
- 1. 使用PHP PDO時,我應該清理/過濾用戶輸入和輸出嗎?
- 2. 讓用戶輸入字符串並使用該字符串創建對象
- 3. 將json字符串插入到mongoDB c#驅動程序v2.4.3
- 4. 我應該使用Redux創建我的ReactNative應用程序嗎?
- 5. 在android上,我該如何創建一個應用程序的提示,要求用戶在完全啓動應用程序之前輸入用戶名?
- 6. 我應該使用哪個PHP mongodb驅動程序?
- 7. 如何使用PHP和sqlsrv驅動程序清理輸入?
- 8. mongodb:如何使用C#驅動程序創建文本索引?
- 9. MongoDb使用C++驅動程序創建稀疏索引
- 10. MongoDB C#使用新的驅動程序
- 11. 在啓動URL之前提示用戶在硒web驅動程序中輸入
- 12. PHP - 我應該在magic qotes關閉時清理字符串嗎?
- 13. 我應該在使用reloadData之前清除表視圖嗎?
- 14. 我應該使用c#mongodb驅動程序的同步還是異步方法?
- 15. 使用用戶輸入的字符創建梯形。 (控制檯應用程序)
- 16. 我應該在'before_validate'還是'before_save'時清理用戶輸入?
- 17. 如何使用mongodb的C++驅動程序構建程序?
- 18. MongoDB與Ruby驅動程序如何使用curl創建字段?
- 19. 使用MongoDB和ASP.NET MVC構建Web應用程序,我應該使用C#驅動程序還是Javascript驅動程序
- 20. 的驅動程序我應該用它來執行MongoDB
- 21. 使用c#驅動程序將字典插入到MongoDB中
- 22. 使用輸入用戶創建文件,使用帶空格的字符串(C)
- 23. MongoDb 2.0 C#驅動程序不爲插入的ID創建值
- 24. Mongodb C++驅動程序,在清理失敗
- 25. 我應該使用MongoDB嗎?
- 26. 用新的MongoDB C++驅動程序創建索引
- 27. 如何使用MongoDB C#驅動程序獲取創建MongoDB集合的日期?
- 28. 該靜態類字段在創建之前正在使用嗎?
- 29. 想要在數據庫中使用之前清理字符串
- 30. 在插入到MongoDB之前,我應該解析JSON數據嗎?
經驗法則...始終驗證數據 – Sorceri