|
.NET TIPS [ASP.NET AJAX]NoBotコントロールでページにボット対策機能を追加するには?[2.0、3.0、3.5、C#、VB]山田 祥寛2008/04/10 |
![]() |
|
|
|
NoBotコントロールは、ASP.NET AJAX Control Toolkit(以降、Control Toolkit)で提供されるコントロールの1つで、簡易なボット対策を実装するためのコントロールだ。ボット(Bot)とは、サイトへの不正なアクセスや投稿などを行うことを目的としたプログラムのことだ。もしも読者諸氏が自分でブログや掲示板などを立ち上げているならば、一度ならずボットによるスパム投稿を経験したことがあるかもしれない。このようなスパム投稿は、多くの場合、人間が手作業で行っているわけではなく、ボットによる自動的な投稿である。
このようなスパム投稿を抑止するために比較的よく用いられているのが、CAPTCHA(Completely Automated Public Turing test to tell Computers and Humans Apart:キャプチャ)という手法だ。CAPTCHAは、フォームから情報を送信する際に、人間に画像上の文字を判読させ、これを投稿時に入力させる仕組みである。
![]() |
| CAPTCHA画像の例 |
このような画像をプログラム的に読み込むことは困難であるので、これを正しく判読できていれば、投稿者は(ボットではなく)人間であると見なすわけだ。これはボット対策として(完全ではないものの)極めて有効な方法であるが、ユーザビリティという観点からは問題もある。
というのも、投稿の都度、意味のない文字列を判読/入力しなければならないのは、善意のユーザーにとっては苦痛であるだけだし、そもそも視覚障害のあるユーザーにはこのようなサイトを利用することができないという問題もある。
そこで登場するのが、NoBotコントロールなのだ。NoBotコントロールは、CAPTCHAほどには確実ではないものの、ユーザーの手を煩わせないという意味でよりシンプルなボット対策の仕組みを提供する。具体的には、NoBotコントロールで提供されているプロパティを見てみるのが早いだろう。
| プロパティ | 概要 |
| ResponseMinimumDelaySeconds | 最小のポストバック間隔(秒) |
| CutoffWindowSeconds | 同一のIPアドレスから送信されるポストバックを追跡する時間間隔(秒) |
| CutoffMaximumInstances | CutoffWindowSecondsプロパティで指定された時間内で、単一のIPアドレスに許可される最大ポストバック数 |
| NoBotコントロールの主なプロパティ | |
このように、NoBotコントロールでは「ポストバック間の時間間隔」や「同じIPアドレスからの単位時間当たりのリクエスト数」を監視し、ある閾値(いきち:プロパティで設定した値)を超えたところで、該当するリクエストをボットによるものと判断するわけだ。繰り返しであるが、これは必ずしも確実な判断ではないかもしれない。
しかし、(例えば)人間が5秒の間に繰り返しポストバックを行うことは通常考えにくいし、ユーザーの手間を省くという点はその不確実性を補って余りあるメリットだろう。もちろん、設定によっては人間による正常な操作を妨げる可能性もないではないが、それほどの確実性を求めないサイトであれば、まずはNoBotコントロールの利用を検討してみてもよいだろう。
やや前置きが長くなってしまったが、それでは具体的にNoBotコントロールを利用したサンプルを作成してみよう。ここでは、フォームから5秒以内に続けて値を送信した場合にはエラーを出力するサンプルを紹介する。
![]() |
| 続けてフォーム送信を行った場合はエラーを表示 |
なお、本サンプルを動作させるに当たっては、「TIPS:[ASP.NET AJAX]ASP.NET AJAX Control Toolkitを利用するには?」で紹介した手順に従って、Control Toolkitを利用可能な状態にしておく必要がある。
1. 新規のWebフォームを作成する
新規のWebフォーム(NoBot.aspx)を作成したら、フォーム・デザイナから以下の画面の要領でサーバ・コントロールを配置する。
![]() |
||||||||||||||||||||
| NoBot.aspxのフォーム・レイアウト | ||||||||||||||||||||
| フォーム上に配置するコントロールと、そのプロパティの設定内容は以下のとおり。 | ||||||||||||||||||||
|
2. ボタン・クリック時のイベント・ハンドラを定義する
あとは、ボタン・クリック時に行うべきNoBotコントロールによる判定処理を定義するだけだ。
|
||
| ボタン・クリック時に行うべき判定処理のコード(NoBot.aspx)(上:C#、下:VB) |
リクエストがボットによるものであるかどうかを判定するのは、NoBot.IsValidプロパティの役割だ。IsValidプロパティは判定結果(ステータス情報)をパラメータに指定されたNoBotStateオブジェクトに格納する。ここでは、リクエストがボットとして判定された場合に、ステータス情報をそのまま文字列に変換したものをLabelコントロール上に表示するものとする。
以上を理解したら、作成したサンプルを実行してみよう。[コメント]ボタンを5秒以内に繰り返しクリックしたとき、本稿冒頭の画面のようにエラー・メッセージが表示されればNoBotコントロールは正しく動作している。![]()
| 利用可能バージョン:.NET Framework 2.0 利用可能バージョン:.NET Framework 3.0 利用可能バージョン:.NET Framework 3.5 カテゴリ:Webフォーム 処理対象:ASP.NET AJAX 使用ライブラリ:NoBotコントロール 関連TIPS:[ASP.NET AJAX]ASP.NET AJAX Control Toolkitを利用するには? 関連TIPS:[ASP.NET AJAX]AlwaysVisibleControlコントロールで常時表示されるパネルを定義するには? |
|
||||||||||||
| 「.NET TIPS」 |
ホワイトペーパー(TechTargetジャパン)
- ASP.NET MVC 2がリリース (2010/3/15)
ASP.NET MVC 2の正式版(VS 2008のASP.NET 3.5向け、VS 2010には標準で含まれる予定)のリリースについてのお知らせ - 逆引きリファレンス:コア編 (2010/3/12)
jQueryのキモともいえる$()関数を始め、jQueryオブジェクトの中核となるメソッドについてまとめた、すぐに役立つ12本を一挙公開 - .NET TIPS - .NET開発のテクニックとヒント集 - (2010/3/11)
− LINQ文で動的にWhere句を組み立てるには?
− GridViewのフッタ行に合計値/平均値を表示するには?
− コレクションをプロパティ値によりグループ化するには? - いくつかのVS 2010 RCの更新 (2010/3/10)
Visual Studio 2010 RC版のIntelliSenseおよびWebデザイナに関するパッチのリリースと、そのほかの問題点についてのお知らせ
|
|
スキルアップ/キャリアアップ(JOB@IT)
スポンサーからのお知らせ
- - PR -
| 仮想環境の構築とデータ保護の特効薬?! 実績と信頼性の高いパッケージで安心運用 New! |
| 仮想環境のバックアップもこれまでどおり 「まるごと取ってまるごと戻す」簡単運用 |
| おばかアプリ選手権、第4弾開催中!! ムダにカッコよくてくだらない作品求ム! |
| 社内ファイルサーバを“クラウド”に統合 VPN直結「クラウド型ストレージ」を紹介 |
| その数、なんと400台以上! グループ内 サーバの「統合管理」によるメリットは? |
| 美人!? まあまあ? 気になる いやし系!! PV急増で「美人時計」がとった手段とは? |
| 進化を続ける富士通ストレージETERNUS DX 製品開発者の自信を裏付けるものとは何か |
| 運用管理の課題を“2つの観点”から分析 ユーザー満足度の高い「仮想環境」とは? |
- - PR -
お勧め求人情報

**先週の人気講座ランキング**
〜Java編〜
| ◆ | 上司や部下、部署内メンバーとの情報共有 を“ガラッ”と変えるコラボツールとは? New! |
| ◆ | おばかアプリ選手権、第4弾開催中!! ムダにカッコよくてくだらない作品求ム! |
| ◆ | 社内ファイルサーバを“クラウド”に統合 VPN直結「クラウド型ストレージ」を紹介 |
| ◆ | Twitterのアカウントはなぜ突破された? メールによる新手の攻撃手法とその対策 |

| ◆ | もう仮想化のお試しフェイズは終わりだ! Hyper-V 2.0が基幹システムも仮想化 |
| ◆ | 美人!? まあまあ? 気になる いやし系!! PV急増で「美人時計」がとった手段とは? |
| ◆ | クライアント企業から求められる人材 ⇒IT技術と経営戦略を併せ持つ「戦略家」 |

| ◆ | .NET編集長が実践する「技術情報検索術」 サンプル・コードを簡単に探す“技”は? |
| ◆ | 業務効率と情報セキュリティ対策を両立! 手間なく確実に機密情報を守る方法とは? |
| ◆ | 直属上司が海外にいるのエンジニアに見る 【実例】場所に捉われないワークスタイル |

| ◆ | 「仮想化工房」のマイスターが選んだのは VMware、Hyper-V、そしてVirtageだった! |
| ◆ | 進化を続ける富士通ストレージETERNUS DX 製品開発者の自信を裏付けるものとは何か |
| ◆ | 運用管理の課題を“2つの観点”から分析 ユーザー満足度の高い「仮想環境」とは? |

| ◆ | 【CTC事例】約30の基幹システムを統合! 膨大なバッジジョブを制御した方法は? |
| ◆ | 仮想化すればコストは削減できるか? 仮想化に必要な「3つの視点」を解説する |
| ◆ | その数、なんと400台以上! グループ内 サーバの「統合管理」によるメリットは? |










