Каков наилучший способ защиты первичного ключа в ASP.NET MVC? - PullRequest
1 голос
/ 05 апреля 2010

Я создаю веб-сайт ASP.NET MVC, и я бродил, какие методы вы, ребята, используете для защиты первичного ключа на этих URL-адресах mvc.

На самом деле ASP.NET MVC генерирует этот синтаксис для своих URL:

/Controller/Action/Id

На прошлой неделе я пытался зашифровать его с помощью шифрования SHA-1, но этот шифратор генерирует некоторые специальные символы, такие как + (плюс), / (косая черта) и другие раздражающие символы, затрудняющие расшифровку.

Возможно, создание нестандартного шифрования должно решить проблему. Но я хочу здесь от вас, ребята, у вас есть идеи по защите URL-адресов MVC?

Ответы [ 3 ]

1 голос
/ 05 апреля 2010

Я не понимаю, как вы могли бы получить что-либо, защищая первичные ключи, если только вы не верите в «безопасность от неясности» (что на самом деле то же самое, что «мало или нет безопасности»).

Вместо того, чтобы скрывать фактические идентификаторы, вы должны убедиться, что установлена ​​правильная модель безопасности, чтобы люди, выполняющие взлом URL-адресов, не могли получить доступ к записям, которые им не разрешено видеть.

1 голос
/ 05 апреля 2010

Лучший (= только правильный IMHO) способ защиты первичного ключа - это проверка безопасности на стороне сервера, если текущий пользователь имеет право его видеть. Другим обычным вариантом является использование Guids, которые трудно угадать, но без проверки на стороне сервера это все еще Security by Obscurity.

0 голосов
/ 05 апреля 2010

Чтобы ответить на ваш вопрос напрямую: любой метод шифрования Id лучше всего использовать с использованием проверенного метода шифрования, такого как SHA-1 в платформе. Вы можете предотвратить вмешательство недопустимых символов, используя UrlEncode .

При этом я хотел бы рассмотреть возможность использования защиты на стороне сервера, чтобы убедиться, что пользователь может получить доступ к объекту, указанному в строке запроса, вместо того, чтобы пытаться скрыть фактический PK.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...