我應該將憑據(如電子郵件、哈希密碼)存盤在與用戶個人資料資訊(簡歷、性別等)不同的表中嗎?
我主要擔心的是我會將其他用戶的資訊(不包括憑據)發送到前端供用戶查看。
uj5u.com熱心網友回復:
通常還有其他更重要的資料安全因素,但考慮將憑據存盤在單獨的表中(用于其他組態檔資訊)的主要原因是減少您意外公開這些欄位的機會,從而可以訪問身份關鍵資訊或通過您用來公開其他組態檔資訊的相同 CRUD 機制進行修改。
像這樣拆分表是一種防止過度發布攻擊的方法,或者減少用戶或開發人員執行的機會,
SELET *這可能會將關鍵資料留在易受攻擊的記憶體空間中,或者更糟的是,通過 HTTP 以純文本形式傳輸。應該通過使用 ORM 或至少通過使用引數化查詢來緩解 SQL 注入,不要拆分表以防止 SQL 注入。
如果您使用代碼生成工具或 ORM,您可能會發現從模式中隔離或洗掉整個表而不是屏蔽或洗掉單個欄位更容易,如果您從業務模型模式中洗掉關鍵資訊,那么您將需要手動編碼允許您更新/驗證密碼哈希或更改分配的用戶身份的途徑。
我主要擔心的是我會發送其他用戶的資訊
良好的資料存盤實踐與良好的資料訪問實踐不同。如果您的 API 仍然允許導航到相關記錄,那么跨不同表存盤資料并不能立即為您提供太多保護。
要決定是否應將此資料存盤在單獨的表中,需要對您的資料訪問策略有所了解和分析。如果您當前的策略是讓SELECT * FROM TableXUI 直接從 UI 管理大部分 CRUD 操作,那么將這些資料拆分到多個表是比什么都不做更好的默認策略,但就其本身而言,這實際上只是忽略了您的安全責任.
還有其他可以使用的策略,但它們的實施和有效性將在很大程度上取決于您選擇實施的資料訪問代碼或模式。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/532161.html
標籤:数据库安全
上一篇:如何在R中制作重疊的餅圖?
