2011-12-31 3 views
2

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

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

спасибо,

ответ

0

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

В этом случае я бы добавил альтернативный ключ типа 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, что, скорее всего, является открытым целым идентификатором вопроса.

+0

Можете ли вы указать мне на веб-страницу, где показано, как реализовать GUID в SQL Management Studio? – darking050

+0

Вот страница MSDN: http://msdn.microsoft.com/en-us/library/ms187942.aspx (_GUIDs_ называются _uniqueidentifier_ в SQL Server). Объявите столбец типа _uniqueidentifier_ и убедитесь, что вы заполнили его одним из двух способов, которые я представил в ответе. – GolfWolf

+0

спасибо. Небольшой вопрос, в C# будет ли переменная строки типа соответствовать ему? – darking050

Смежные вопросы