4

私は次のシナリオを持っています – そして私が本当に探しているのは、実際の人々からの本当の助けです. 提案/解決策? お願いします。

ex 用のエクストラネット Web サイトがあります。www.foo.com (asp.net 3.5) JQuery 1.3.2 を使用して、default.aspx ページ ( www.foo.com/default.aspx) で ValidateLogin PageMethods を呼び出しています。

コードは次のようになります

$.ajax({
    type: "POST",
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    url: "Default.aspx/ValidateLogin",
    data: '{' + arg + '}',
    success: function (data) {
        if (data.d != 0) {
            window.location = "http://www.google.com";
        } else {
            alert("Invalid UserName/Password.");
            ResetLoginForm();
        }
    },
    error: function (xhr, status, error) {
        var strerror = xhr.status + error;
        alert("Error Communicating with Server:" + strerror);
        ResetLoginForm();
    }
});

コードは外部の js ファイルに保存されます。ex default.js の場合。

この Web サイトは公開されているため、誰でも default.js をダウンロードして、上記のコードを確認できます。

私の質問は、人が「Default.aspx/ValidateLogin」という URL を取得すると、サーバーにリクエストを送信でき、サーバーは誇らしげにリクエストに応答することです。

ここでのオプションは何ですか? リクエストを検証するにはどうすればよいですか? この種の不正なリクエストを防ぐにはどうすればよいですか?

4

4 に答える 4

4

Webリクエストは、その性質上、公開されています。彼らはソースファイルを見る必要さえありません。HTTPリクエストを監視し、それらのリクエストを再生するだけで済みます(たとえば、fiddlerなどのツールを使用すると非常に簡単です)。

スロットルの問題

スロットルソリューションは、攻撃の割合を減らしますが、実際には実行可能ではありません。問題は、攻撃者が数日にわたって実行されるスクリプトを作成できることです。次に、プロキシを使用して並列リクエストを送信できます。また、ユーザー名ごとにスロットルすると、攻撃者は正当なユーザー名に誤ったログインを試みることでDoSを達成でき、実際のユーザーがログインしようとすると、なぜロックアウトされたのかわかりません。

解決

典型的なアプローチは、ナンスキーを使用することです。追加の作業が必要になりますが、問題が軽減されるため、攻撃などの猛攻撃が本当に予想される場合にのみお勧めします。これの簡略化されたバージョンでは、クライアントはナンスキーをURIクエリパラメータとして渡します。キーは、最初にサーバーからクライアントに発行されます。リクエストが行われると、サーバーはデータベースにナンスキーが存在することを検証し、リクエストを許可します。ナンスキーはすぐに削除されるため、ユーザーは同じナンスキーを使用して別のリクエストを行うことはできませんが、サーバーはさらにナンスキーをユーザーに発行する必要があります。

単純化された解決策は、認証されたユーザーのみがWebサービス要求を行えるようにすることですが、ログインシステムを設計しているため、これは明らかに固執しません。

厄介な敵がいない限り、私はそれについて心配しません。

于 2009-05-01T20:19:36.203 に答える
1

Page メソッドがセッションをロードすることを公開していると仮定しているので、ページのロード時にセッション変数を設定し、ページ メソッドが呼び出されたときにそれが存在するかどうかを確認できると思います。世界で最も安全なものではありませんが、役に立ちます。

個人的には、これ以上安全にしようとは思いません。他の人が言っているように、Web サービスは本質的に公開されています。

于 2009-05-01T23:48:34.750 に答える
0

問題はないと思います。ただし、レート制限を実行して、ブルートフォース攻撃を試みられないようにする必要があります。

于 2009-05-01T19:54:22.410 に答える
0

また、ブルートフォースを回避するために、たとえば2〜3回のログイン失敗の後にキャプチャを配置することもできます。

于 2009-05-01T19:57:11.497 に答える