2012-02-26 9 views
0

他のウェブサイトにアクセスするために使用するポータルがある場合。Webサイト間でデータを確実に渡す方法は?

私にはポータルAがあります。そして、私はウェブサイトBにアクセスしたいと思います。

Bには、usernameのように動作するには重要な情報が必要です。私はこれらの情報を安全に渡したい。


ので、私はこのようなフォームを作る:

<%--------------------------------------------------------------------------------------%> 
    <form id="frm_sal" action="B URL the first page" method="post"> 
    <input id="hdn_sal_Emp_Num" type="hidden" runat="server" name="hdn_sal_Emp_Num" /> 
    <input id="hdn_sal_user_name" type="hidden" runat="server" name="hdn_sal_user_name" /> 
    <input id="hdn_sal_result" type="hidden" runat="server" name="hdn_sal_result" /> 
    </form> 
    <%--------------------------------------------------------------------------------------%> 

とポータルA内のリンクのイベントクライアントクリックで、私はこのフォームに提出します。

ウェブサイトごとに1つのフォーム。

私の質問は、これらのデータを保護し、改ざんを防止する方法です。

+1

「B」に対する通常のセキュリティ対策は、これを防止しようとします。 –

+0

改ざんやハックを防ぐために、隠しフィールドを何らかの方法で保護する必要がありますか? –

+0

両方のサイトが同じデータベースから読み取ることはできますか? –

答えて

2

<form>で情報を暗号化してからクライアントに送信し、秘密鍵を使用してもう一方の端末で復号化します。

ここでは、暗号化の例を示します。 Encrypt and decrypt a string

ここで私がしたいことがあります。'SharedSession'という名前のクラスを作成し、共有するプロパティを追加すると、そのプロパティは他のクラスでもあります。 timestampプロパティも追加します。クラスをJson文字列(Json.net)にシリアル化し、暗号化してフォームフィールドに移動します。

フォームが反対側に転記されたら、それを 'SharedSession'クラスとして逆シリアル化します。それは常に変化し、暗号化されたデータのように見えるように)

1:

は、2つの理由のためにタイムスタンプフィールドを使用します。たとえば、現在のユーザーに同じ資格情報を繰り返し送信する場合、暗号化された文字列は決して変更されないため、タイムスタンプは暗号化された文字列を毎回異なるように強制します。

2)投稿されたデータが古いか古いかを確認する。約1分程度のしきい値を設定します。データが1分以上経過している場合は、それを放棄します。

EDIT 

もうひとつ...「SharedSessionData」やハッカーがに興味がある何でもあなたの隠されたフォームフィールドを呼び出すことはありません。「日を投げるための「宣伝・広告データ」のような何か、それを呼び出します。

これが役に立ちます。

2

これが機能する方法はいくつかあります。

最初は、いくつかのfasionでクエリ文字列を暗号化することになりますが、mcryptはクロスプラットフォームにうまく対応しています。これは塩/パスフレーズを壊さない人に依存します。 。あなたが持っているもう一つの問題はリプライ攻撃です。これは、誰かがあるユーザのURLを別のブラウザに貼り付けてコピーし、本質的に要求をコピーするときです。これは、URL内のdatetimeと、再使用できないonetimeトークンを使用することによって軽減できます。

もう1つの方法は、あるサイトから別のサイトにユーザーを送信して、独自のトークン/ GUIDを使用してサーバー通信プロトコル(SOAP、REST、何かを作った)、そして、ユーザーに渡すトークンを与えてください。

ウェブサイトが内部でない限り、IPアドレスでロックダウンしないでください。多数のユーザーが複数のIPアドレスを持ち、IPに沿ってデータを拡散するためにさまざまなルールを使用します。 AOLは1つです)複数のエンドポイントと異なるアドレスを持つプロキシを介してユーザーに強制します。

最後のオプションは、共有データストア、つまり両方のWebサーバーがユーザー情報を照会するために「話す」データベースを持つことです。これは、同じドメイン上にある場合は簡単になり、両方のサイトで動作するセッションCookieを設定できます。そうでない場合は、渡される一意のトークンに戻る必要があります。

1

Pass data from page to page safelyユーザは、機密データを保持してキャッシュに入れるためのカスタムクラスの作成について説明します。あなたが話していることを成し遂げるためにセッションを利用できると思います。How to pass a hidden field from one page to another?

私は信じている方法がいくつかあります。私が提供したリンクが正しい方向に向いていることを願っています!

関連する問題