現在、私は現在.NETを学習しています。ASP.NETメンバーシップはクエリ文字列に作成されたUserIdを使用しています
質問文字列で生成されたメンバーシップのUserIdを使用しても問題ないと思っていましたか?関連する情報をこのユーザにリンクするためにこれをデータベースの外部キーとして使用することもできますか?
現在、私は現在.NETを学習しています。ASP.NETメンバーシップはクエリ文字列に作成されたUserIdを使用しています
質問文字列で生成されたメンバーシップのUserIdを使用しても問題ないと思っていましたか?関連する情報をこのユーザにリンクするためにこれをデータベースの外部キーとして使用することもできますか?
なぜそれはクエリ文字列で必要ですか?私は、これはセキュリティ上の問題を起こさない場合でも、このような機密データをユーザーが表示されないだろうが、誰もが彼が見る必要以上のことを見ることができる場合は、アプリケーションが危険に見えるという理由だけで...
If HttpContext.Current.User.Identity.IsAuthenticated Then
Dim user As MembershipUser = Membership.GetUser()
Dim guid as Guid= DirectCast(user.ProviderUserKey, Guid)
End If
によって提供され。セッションに一時的に保存して、ページ1からページ2に渡すことができます。
UserIDを外部キーとして保存したい場合は、MembershipProviderが提供するuniqueidを使用することができます。
代わりに整数(可読性、ディスク容量より少ない)を使用する場合は、guidをint-IDに1対1の関係でマップするテーブル(aspnet_UserID
)を作成する必要があります。また、挿入のためのトリガーを作成し、例えば、-table aspnet_Users
に削除されます。
CREATE TRIGGER [dbo].[trgCreateUserID] ON [dbo].[aspnet_Users]
FOR INSERT
AS
INSERT INTO dbo.aspnet_UserId(fiUser)
SELECT UserID FROM inserted
と
CREATE TRIGGER [dbo].[trDeleteUserID] ON [dbo].[aspnet_Users]
FOR DELETE
AS
DELETE FROM dbo.aspnet_UserId
WHERE fiUser IN(SELECT UserID FROM DELETED)
データベースの設計によっては、FKを使用してユーザー関連のデータをユーザーにリンクさせることは間違いありません。
一般的には、本当に必要な場合を除いて、ユーザーIDをクエリー文字列に入れません。ユーザー認証を正しくサポートしている場合、現在接続されているユーザーの情報はUser.IdentityおよびPrincipalクラスで利用できます。
をHI、問題は、私は、現在のユーザーのユーザーIDの後にはないよということで。 – JBoom
暗黙の原則による正しいセキュリティは、クエリ文字列にディクテーションIDを含めるべきではありません。
http://en.wikipedia.org/wiki/Security_through_obscurity
しかし、あなたが適切に保護されたアプリケーションを持って、その後場合は、IDは問題ないはずです。
おそらくUserIdをセッションに格納しておく必要があります。そのため、ブラウザには送信されません。
リンクをありがとう、私はすべてを理解し、可能な限り実装しようとしました。ユーザーIDがクエリ文字列内にある唯一の場所は管理されていない管理セクションです。だから私はそれがすべて正常であるべきだと思います。再度ありがとうございましたJ. – JBoom
私はユーザーと管理者を持っています。管理者のユーザーは、通常のユーザーにリンクされているデータベースに情報を追加するためにログインする必要があるため、通常のユーザーにデータをリンクしたり挿入したりできるようにするために、それは意味をなさない。私はすでにそれが働いている、私はちょうどそれがすべての大丈夫のセキュリティ賢明なのだろうかと思っていたが、私はそれがロックされた管理セクションにあるようにする必要がありますね。ありがとうございます。 – JBoom
@JBoom:なぜあなたはクエーストリングを使わなければならないのかまだ分かりません。ページ2に、管理者が選択したページ1のユーザーIDが必要な場合は、セッションを一時記憶域として使用することもできます。 'Membership.GetUser'には、ユーザー名を取得するオーバーロードされたバージョンもあります。そのため、現在ログインしているユーザーだけでなく、ユーザーも取得できます。 –
私は古典的なASPから来ると思うが、私はまだ利用できるものが何であるか完全には分かっていない。問題は、管理者ユーザーがリストからユーザーを選択するということですが、ユーザーIDをPOSTすると、各ユーザー情報にFORMが必要であることを意味しますが、ページには1つのFORMタグしかないので、選択したユーザーをユーザーの詳細ページに移動します(意味があることを望みますか?)。 – JBoom