Я хочу передать идентификатор из представления в контроллер, чтобы пользователь не мог изменить его значение (изменить атрибуты URL или с помощью инспектора).
Является ли сохранение идентификатора в TempData лучшим вариантом?
просто зашифруйте id
с помощью любого алгоритма (с key
и datetime
), если есть какие-либо изменения, пометьте их как недействительные
@jdweng И как это помешает пользователю изменить значение?
Он компилируется в код. или вы помещаете в файл конфигурации, и обычные пользователи не могут редактировать.
@jdweng Это не помешает пользователю изменить значение, отправленное на сервер. Правда в том, что вы не можете запретить пользователю изменять значение, потому что у вас нет контроля над машиной пользователя. Вы можете зашифровать значение, и если у вас есть надежное шифрование, вы можете быть достаточно уверены, что значение, которое вы получаете, не было подделано, но вы не можете фактически предотвратить изменение значения, отправленного на сервер. Клиент всегда контролирует свою машину.
Зашифруйте идентификатор перед отображением своей страницы, а затем расшифруйте его, когда вы получите его на контроллере.
https://www.c-sharpcorner.com/article/encryption-and-decryption-using-a-symmetric-key-in-c-sharp/
Используйте HTTPS (не HTTP) и поместите идентификатор в заголовок HTTP, который зашифрован с использованием HTTPS.