Это вопрос шаблона для начинающих для создания веб-форм. Я прочитал Exposing database IDs - security risk?, и принятый ответ заставил меня подумать, что это пустая трата времени, но подождите ...Отображение идентификаторов базы данных в пользовательском интерфейсе
У меня есть проект MVC, ссылающийся на библиотеку бизнес-логики и сборку репозиториев NHibernate SQL, ссылающихся на них. Если что-то заставило мою руку пойти и ссылаться на эти репозитории непосредственно из моей кодовой базы контроллера, я бы знал, что пошло не так. Но когда эти контроллеры говорят по параметрам URL с идентификаторами записей базы данных, делает ли это только ?
Я не могу представить, что эти идентификаторы когда-либо превращаются в нерасходуемые (посредством действий MVC). Я не думаю, Мне понадобится два объекта пользовательского интерфейса, соответствующие одной и той же строке в базе данных. Я не намерен для контроллера интерпретировать идентификатор каким-либо образом. Суррогатные ключи будут иметь нулевую разницу. Тем не менее, я хочу иметь проблему, потому что предположения о рациональном дизайне не лучше, чем зависимости от пропусков слоев.
Как сделать веб-приложение, которое ссылается только на сборку бизнес-логики и переговоры в объектах BL и GUID, которые имеют смысл только для этого сеанса, в то время как сборка продолжает транзакции с использованием идентификаторов базы данных?
Ты дал мне много подумать. Можете ли вы сделать какие-либо предложения о том, как реализовать сопоставление и где его хранить? Действительно ли «сессия» - лучшее место в ASP? –
"картирование"? Непонятно, что вы ищете. Защита на местах? Я просто предложил вам выполнить функцию шифрования, которая принимает: FieldName, FieldValue, SessionID. Затем, когда вы расшифровываете, вам также нужно предоставить все 3 для расшифровки. Так что кто-то в другой сессии не может полностью захватить эту ценность. Должно быть все, что вам нужно для параметров URL. Если вам когда-либо понадобится поддержка бессетевых страниц, вы можете использовать жестко заданное значение вместо идентификатора сеанса, а не как безопасные, но сеансовые страницы не должны получать доступ к чему-либо чувствительному. –
Я отложил суть вашего ответа, солью с сеансом: нет необходимости хранить/управлять сопоставлениями вообще - они сохранялись бы точно так же долго. Это круто. Спасибо. –