5

ユーザーを別のページにリダイレクトしてキャプチャを入力したいのですが、投稿データを保持したいのですが、キャプチャパスがそれを「返送」して前のページアクションを完了する場合。

ユーザーが成功した場合/場合は、captchaPass=true を追加し、投稿データにアクセスして処理を続行したいと考えています。現在、リダイレクトを使用していますが、ATM を使用する必要はありません。

投稿データの持ち込みは可能ですか?ユーザーが複数のページにアクセスする可能性があるため、データを分離し、混同しないようにする必要があることに注意してください。

1 つのアイデアは、投稿されたすべてのデータ[1]をキャプチャ ページで取得して保存し、このフォーム データで中間の白いページを再作成して、前のページに自動的に新しい投稿を作成することです。

これは、ハッシュ チェックとセキュリティの問題なしに機能しますか?

この白いリダイレクト ページを使わない方が良いアイデアはありますか?

[1]ここでのもう 1 つの問題は、この投稿されたデータをリダイレクトで送信する方法です。URLを変更しないでください-または大きすぎて受け入れられません。captach ポストバックに関する考えが複雑になるため、サーバーの転送はお勧めできない可能性があることを覚えておいてください。

更新 1

ここでの基本的な考え方は、ページの完全なポストバックをキャプチャし、別のページを表示してから、ポストバックデータを元の最初のページに送信する方法です。

その理由は、悪質なユーザーや、短時間にさまざまなページから多数のポストバックを作成してページ/サーバーをダウンさせようとする攻撃ボット プログラムを阻止するためです。ほとんどの攻撃者は、すべてのページにデータを投稿するだけのカスタム プログラムを使用して、システムをダウンさせようとします。

たとえば、ページに検索ボックスがある場合、ワイルドカード (SQL ワイルドカードを使用して Dos 攻撃と呼ばれる) を使用して数百回のランダム検索を開始し、SQL サーバーとコンピューターを作成することで、ほとんどのサイトでそれらを簡単にダウンさせることができます検索と検索に時間と CPU を費やすと思います。したがって、このような攻撃を防ぐには、同じコンピューターからの複数のポスト バックを認識する必要があります。次のステップは、彼をキャプチャ ページにリダイレクトして、それがコンピューター プログラムである場合にブロックすることです。

他の例では、多くのページにメール送信があります。非常に簡単に、彼のメールを 100 回送信してメールボックスをいっぱいにすることができます。そのようなものを持つデータベース。

そのため、この場合、ajax と JavaScript は機能しません。投稿後に、実際のユーザーか攻撃者かを確認して阻止できるページにリダイレクトする方法が必要ですが、実際のユーザーである場合は戻ってくる必要があります。彼の通常の行動に。

更新 2

これはすべて、BasePage、Global.asax、またはページのコンテンツから独立した場所など、一般的な方法で行う必要があります。DoS 攻撃や、ランダムなページのランダムな場所での複数の送信を防止しようとするためです。

はい、連絡先ページにキャプチャを配置する方法は知っていますが、これはこの質問が最初に求められたものではありません。この質問は、投稿データを別のページに移動し、そこに保持してから元のページに再送信する方法を尋ねています1。

明らかな解決策は、すべての投稿を読み戻し、フォームに保存してから、それらを読み返し、そのデータのみを使用してオンフライでフォームを作成し、投稿を戻すことです。ここで、このソリューションよりも優れたソリューションがあるかどうかを尋ねています。

その他のアプリケーション

また、ユーザーが認証を要求するページ内にいる場合でも、認証チケットの有効期限が切れており、ユーザーがポストバックを行う場合があります。この場合、ポストバックされたすべてのデータをどこかに保持し、ログイン ページに進み、認証を要求する最初のページにデータを再送信する必要があります。

4

4 に答える 4

2

もちろん、追加のキャプチャ フィールドをフォームに追加して、非表示の要素のキャプチャ ページにフォーム データを書き出すだけです。送信アクションですべてを元に戻すようにします。ASP.NET を使用すると、フォーム フィールドを非表示にしてキャプチャを同じページに書き込む方がおそらく簡単ですが、上記で説明したように、クロスページ ポストバックを実行できます。

于 2009-07-06T12:48:47.487 に答える
1

AJAXでCAPTCHAを実装してみませんか?キャプチャオブジェクトとフォームを、おそらくdivで表示されるライトボックススタイルでJavascriptを使用してロードし、ユーザー入力を受け入れて検証のためにサーバーに投稿します。したがって、ユーザーがリクエストを投稿し続けるか、正しくなるまで(またはキャンセルするまで)そのままにしておきます。

より具体的な状況の例:

フォーム送信ボタンにJavascript関数のonClientClick値を与えます。この関数は、この特定のフォームにCAPTCHAが必要かどうかを判断します。実行すると、CAPTCHAを取得するためのインターフェイス(サーバー側のコードで行う必要があります)が読み込まれ、ユーザーがクリックして送信したフォームにCAPTCHAの入力要素が挿入されます。

ユーザーがCAPTCHA入力を入力し、クリックイベントがバインドされて最初のJS関数に戻るボタンをクリックすると、Javascriptはこのアクションをインターセプトし、完全なフォーム、元のフォームのすべてのデータ、およびCAPTCHAを検証のために送信します。これで、サーバースクリプトでこれらすべてを一度に処理できます。

これは私が考えることができる最善の解決策であり、あなたが尋ねたのと同じように機能しますが、なぜ別のページでCAPTCHAを実行したいのか想像できません。

于 2012-03-19T10:57:13.990 に答える
1

クロスページ投稿が役に立ちます。

于 2009-07-06T12:49:32.900 に答える
0

Server.Transfer大丈夫MultiViews, Panels like controlですか?Data Maintenanceこのように、とを気にする必要はありませんPostbacks。バリデーションは JavaScript で行うことができます。

両方の機能を同じページに保持して、あるページから別のページにデータを移動したり、データを元のページに戻したりすることを避けることができます。Sessionこの中間操作に利用できます。ポストバック全体で関連付けられたコントロールに戻します。classInstantiateit 、およびInitialize the control valuesこのクラス オブジェクトで作成できます。クラス オブジェクトを に保存しますSession。ポストバックで、値を に再割り当てできますassociated controls。これにより、物事が単純になり、複雑さがなくなります。

疑問?

于 2012-03-23T18:50:39.397 に答える