ユーザーが任意のページから CORS を使用してサーバーにドメイン投稿できるように、ブックマークレットを作成しています。ユーザーは投稿前に認証する必要があり、Cookie が使用されます。悪意のある Web サイトが Web ページに JavaScript コードを埋め込み、ユーザーの資格情報を使用してサーバーにクロス ドメイン ポストを行うのを防ぐ方法はありますか?
質問する
738 次
1 に答える
1
理論的には、これに対する解決策があるかもしれません。
- 各ユーザーのブックマークレットに一意の CSRF トークンを埋め込みます。
- ブックマークレットのコードを匿名関数でラップして、ページがアクセスできないようにします。
- ブックマークレットに強力なハッシュ関数を埋め込みます。これは、改ざんできないように、ブックマークレットのコード内に完全に配置する必要があります。
- XMLHttpRequest で、次を送信します。
- メッセージ
- 次のハッシュ:
- メッセージ
- CSRF トークン
- 独特のロングソルト
- ユーザーID
- タイムスタンプ (メッセージが別の時間に送信されたのではなく、現在送信されていることを確認するため)
- 塩
- タイムスタンプ
- ユーザーID
- サーバーで、次を検証します。
- タイムスタンプが許容誤差範囲内であること (ユーザーのコンピューターの時計がずれている可能性があるため、これは必要です)
- ハッシュが正しいこと
- すべてが正しければ、メッセージを投稿できます。
この概念には 1 つの欠陥があります。Web サイトがブックマークレットで使用される機能のいずれかを改ざんした場合 ( Array()
.
于 2012-10-02T11:20:44.860 に答える