這是一個初學者模式問題,用於Web表單數據類型的事情。我讀Exposing database IDs - security risk?和接受的答案讓我認爲這是浪費時間,但等待...將數據庫ID暴露給用戶界面
我有一個引用業務邏輯庫的MVC項目,以及引用相同的NHibernate SQL存儲庫的程序集。如果有什麼東西迫使我直接從我的控制器代碼庫中引用這些存儲庫,那麼我會知道出了什麼問題。但是當那些控制器在URL參數中使用數據庫記錄ID進行通信時,是否只有似乎錯誤?
我無法想象這些ID不會被消耗掉(通過MVC操作)。我不想認爲我會需要兩個對應於數據庫中同一行的UI實體。我不打算讓控制器以任何方式解釋ID。代理鍵將使零差異。不過,我想要解決這個問題,因爲關於關係設計的假設並不比跳層依賴關係更好。
如何構建一個只引用業務邏輯程序集並在BL對象和GUID中進行會話的Web應用程序,該程序只對該會話有意義,而程序集使用數據庫ID保留事務?
你給了我很多想法。你能否就如何實現映射以及在哪裏存儲它提出任何建議? 「會話」確實是ASP中最好的地方嗎? – 2012-04-06 19:06:33
「映射」?不清楚你在找什麼。現場保護?我只是建議你做一個加密函數,它需要:FieldName,FieldValue,SessionID。然後當你解密你也需要提供全部3個解密。因此,另一個會話中的某個人根本無法劫持該值。應該是所有你需要的url參數。如果您需要支持無會話頁面,您可以使用硬編碼值而不是會話ID,但並不安全,但無會話頁面不應訪問任何敏感內容。 – 2012-04-06 22:09:57
我在答案的核心問題上與會話分享了一些內容:根本沒有必要存儲/管理映射 - 它們會持續很長時間。這太棒了。謝謝。 – 2012-04-06 23:36:42