私は資産管理Webサイトで作業しており、資産がユーザーに発行されるたびに、システムは、ユーザーに発行されたすべての資産を示すURLを含む電子メール通知を送信します。クエリ文字列を使用してユーザーIDを渡すこともできましたが、他のユーザーに発行されたアセットを表示するためにクエリ文字列を悪用する可能性があります。私のクライアントは、ユーザーがリンクをクリックしたときに自分自身を認証することを望んでいません。したがって、クエリ文字列で渡されるパラメータを非表示にするか、少なくともそれらをあいまいにするものが必要です。URLエンコード、GUIDなどについて読みましたが、どうしたらよいかわかりません。私は初心者です。私の無知を許し、正しい方向に向けてください。
4 に答える
あなたが言ったこと、あなたはただの初心者であり、これが公開されると仮定すると、あなたは最も簡単な方法を行うことができます:
データベースに新しいテーブルを作成し、たとえばtbl_links
、列が3を追加するだけで呼び出されます
user_id (foreigner key to the user table)
guid (primary key, unique)
settings (nvarchar(250)
メールを送信する必要がある場合は、ユーザー用に新しい行を作成します。次に例を示します。
Guid guid = Guid.New();
String settings = "date_from:2012/01/01;date_to:2013/01/01";
そして、データベースの 1 つに挿入します。メールに挿入したリンクには、http: //domain.com/info/?g= などの GUID が必要です。
Json をそのsettings
列に追加し、コードで再度オブジェクトに解析して、このルートを使用する場合は新しい質問をすることができます。
私は個人的にセキュリティアルゴリズムを使用して のみを渡しuser_id
ますが、あなたは初心者だと言っていたので、簡単でまだ有効な方法を示しただけです。
PSセキュリティ上の理由から、リンクは次の 4 時間のみ有効であることを電子メールで伝える必要があります。そのため、人々が GUID を生成して情報を取得できないようにすることができますcreate_date
。datetime
それを使用して、リンクがすでに期限切れになっているかどうかを確認します...
URL パラメータを隠すには、変更された Base64 エンコーディングを使用します。あいまいさはセキュリティではなく、何かを Base64 でエンコードしても決して安全ではないことに注意してください。
これを認証目的で使用する場合は、再考する必要があると思います。出発点として、公開鍵暗号化とデジタル署名を調べてください。
URL へのアクセスを保護しようとするのは、正しいアプローチではありません。URL を自由に提供し、代わりにユーザーを認証してください。
また、このデータの提供に SSL を使用することを強くお勧めします。
あいまいさがもはやあいまいでなくなると、あいまいさによるセキュリティは 100% の確率で失敗します。