предоставление первичного ключа сервера SQL через WCF - PullRequest
2 голосов
/ 01 января 2012

Я предоставляю данные Sql Server через WCF для использования в приложении WP7. Сейчас у меня есть выбор: либо я работаю с данными, используя первичный ключ, либо другие столбцы для той же таблицы.

Лично я считаю, что лучше не выставлять ПК, не из-за того, что телефон небезопасен, а из-за интернета. Но, пожалуйста, посоветуйте мне.

спасибо,

1 Ответ

0 голосов
/ 01 января 2012

Я предполагаю, что упомянутый вами PK имеет тип int, и было бы небезопасно выставлять значения.

В этом случае я бы добавил альтернативный ключ типа GUID (uniqueidentifier в SQL Server),Поле может быть заполнено с помощью метода System.Guid.NewGuid() из кода .Net или с помощью функции newid() в SQL.

Это сделает ключ непредсказуемым.Например, если человек прослушивает ваш трафик WCF и видит PK со значением 4, он может попробовать закрыть значения (2,3,5 ...), чтобы получить доступ к другим записям.Идентификаторы GUID не являются последовательными, поэтому очень трудно угадать другие значения ключей.


Обратите внимание, что идентификаторы GUID занимают в 4 раза больше места для хранения, чем int (или 2x bigint), поэтому, если это будет большойТаблица, подход GUID может занять значительно больше места.

В этом случае вы можете пересмотреть вопрос, если раскрытие ключей действительно является проблемой безопасности;если приложение разработано для обеспечения безопасности или если все записи предназначены для просмотра кем-либо, показ значения PK не должен быть таким уж плохим.

В конце концов, если вы посмотрите на URL этой страницывы заметите значение 8690786, которое, скорее всего, является открытым целочисленным идентификатором вопроса.

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