2011-12-31 21 views
2

WCFを介してSQL Serverデータを公開してWP7アプリケーションで使用するようにしています。今は選択肢があります。主キーを使用してデータを操作するか、同じテーブルの他の列を操作します。WCFを介してSQL Serverプライマリキーを公開する

私は個人的には、PKが公開されていないことをお勧めします。電話は安全ではなく、インターネットのためです。しかし、助けてください。

おかげで、

答えて

0

私はあなたが言及したPKはint型であり、値を公開するために、セキュアではないことを前提としています。

この場合、GUID(SQL Serverのuniqueidentifier)という種類の代替キーを追加します。このフィールドには、.NetコードのSystem.Guid.NewGuid()メソッドを使用するか、SQLのnewid()関数を使用してフィールドを設定できます。

これは、キーを予​​測できないようにします。たとえば、ある人があなたのWCFトラフィックを盗聴し、4の値を持つPKを見ると、他のレコードにアクセスするために近い値(2,3,5 ...)を試すことができます。 GUIDはシーケンシャルではないので、他のキー値を推測することは本当に難しいです。


これは大きなテーブルになる場合は、GUIDのアプローチは、かなり多くのスペースを取ることができるので、GUIDがint型(または2xのBIGINT)よりも4倍以上のストレージスペースを取ることに注意してください。

この場合、公開鍵が本当にセキュリティ上の問題であるかどうか再考するかもしれません。アプリが安全であるように設計されている場合、またはすべてのレコードが誰でも閲覧できるようになっている場合は、PK値を公開することは悪いことではありません。

結局のところ、このページのURLを見ると、おそらく質問の公開整数識別子である値8690786に気付くでしょう。

+0

SQL Management StudioでGUIDを実装する方法を示すWebページを教えてください。 – darking050

+0

MSDNのページは次のとおりです。http://msdn.microsoft.com/en-us/library/ms187942.aspx(_GUIDs_はSQL Serverの_uniqueidentifier_と呼ばれます)。 _uniqueidentifier_型の列を宣言し、私が答えで提示した2つの手段の1つによってそれを設定することを確認してください。ありがとう。 – GolfWolf

+0

小さな質問は、C#でstring型の変数はそれに合っていますか? – darking050

関連する問題