ホーム » Movable Type » A-Form » A-Form ドキュメント » 定番/基本パーツのバリデーションチェック, 入力値のサニタイズ仕様
定番/基本パーツのバリデーションチェック, 入力値のサニタイズ仕様
目次
「定番パーツ」とは? - よく使うフィールド(入力項目)にバリデーションがセットになったもの
A-Formのフォーム編集画面を開くと、右サイドボックス部分に、挿入可能なフィールド(入力項目)が、「定番パーツ」「基本パーツ」の2グループに分かれて並んでいます。
「定番パーツ」は、フォームで多用する入力項目で、入力項目と書式チェック(バリデーション)機能があらかじめセットになっているパーツです。
例えば、「メールアドレス」という定番パーツは、見た目上は普通の1行テキスト入力欄ですが、入力時にメールアドレス書式に則っているかチェックが入ります。また、ここに入力されたアドレス宛に、控えメールを送るかどうか選択できる機能がついています。
定番パーツの種類とバリデーションチェック
以下、定番パーツの種類とバリデーション内容を紹介します。
なお各パーツは、入力画面でAjaxによるバリデーション(☆印)と、確認画面に遷移するタイミングでのサーバサイドでのバリデーション(★印)の二重チェックされます。
[メールアドレス]
メールアドレス書式チェック機能付きの1行テキスト入力欄です。例えば「@」の入力忘れや、誤ってひらがなや漢字を入力するとエラーメッセージが表示されます。アルファベットや数字、「@」「-(ハイフン)」などは全角入力可能で、自動的に半角数字に変換されます。
正規表現で書くと、以下にマッチすればOKと見なされます(☆★)。
/^([a-zA-Z0-9])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$/i
また、このパーツには、「このアドレスにも控えメールを送る」という特別なチェックボックスがあって、ここにチェックを入れておくと、入力されたメールアドレス宛にユーザ宛の受付控えメールを送れるようになります。
[郵便番号]
"104-0061"のような3桁の数字+「-(ハイフン)」+4桁の数字 で構成されるデータのみ受け付ける1行テキスト入力欄です。数字は全角・半角のどちらでも入力可能で、全角数字は自動で半角数字に変換されます。
[都道府県]
あらかじめ47都道府県が選択肢にセットされたプルダウンメニューです。選択肢は編集可能です。都道府県以外の選択肢(例えば"海外"とか"中央区"とか)を追加したり、不要な県があれば削除・変更できます。
[電話番号]
数字とハイフンのみ受け付ける1行テキスト入力欄です。数字は全角・半角のどちらでも入力可能で、全角数字は自動で半角数字に変換されます。
郵便番号と異なり桁数に制限はありませんので、例えば項目名を変えて「注文番号」や「会員番号」入力に利用できます。
[URL]
ホームページのアドレスを入力してもらうような場面で使います。
入力データが英数字「-(ハイフン)」「_(アンダーバー)」「.(ピリオド)」のいずれかで、かつ「http://~」や「https://~」「ftp://~」で始まるURL形式かをチェックする1行テキスト入力欄です(☆★)。
正規表現で書くと、以下にマッチすればOKと見なされます。
/^(http|https|ftp):\/\/(([A-Z0-9][A-Z0-9_-]*)(\.[A-Z0-9][A-Z0-9_-]*)+)(:(\d+))?\/?/i
[個人情報保護方針]
定番パーツの中でも特殊なものです。個人情報保護方針や会員規約への同意を得るような使い方を想定しています。
項目名に、他ページ(例えば個人情報保護方針や規約を書いたページ)へのリンクを指定することができます。
項目名やチェックボックスのラベル名(「同意する」)は変更可能です。
なお、他の定番パーツと異なり、このパーツは「必須」入力固定です。
[カレンダー]
カレンダーを表示して年月日入力ができるパーツです。誕生日や宿泊希望日入力などの用途を想定しています。
表示するカレンダーは、初期値(本日/翌日/1ヶ月後・・・)と、選択可能範囲(開始年,終了年)、選択除外日(v3.8以降)の指定ができます。
入力値が正しい日付かのチェックがかかります(★)。
基本パーツのバリデーションチェック
[チェックボックス]
通常のチェックボックスの他に、
□その他 [______________]
のようにチェックボックスとテキスト入力がセットになった特別なチェックボックスを設定可能です。その他テキスト ありのチェックボックスの場合、チェックしているのに「その他テキスト」が未入力だとエラーメッセージが表示されます(☆★)。
[ラジオボタン]
通常のラジオボタンの他に、
○その他 [______________]
のようにラジオとテキスト入力がセットになった特別なラジオボタンを設定可能です。その他テキスト ありのラジオの場合、チェックしているのに「その他テキスト」が未入力だとエラーメッセージが表示されます(☆★)。
[ファイルアップロード]
画像ファイルやPDF, Wordなど、フォームに指定形式のファイルを添付できるパーツです。
フォームごとパーツごとに拡張子によるファイル形式の制限, およびファイルサイズの制限設定が可能です。バリデーションは確認画面遷移時のサーバサイドチェックとなります。
・ファイル形式制限が設定してある場合、それ以外の形式のファイルを指定するとエラーメッセージが表示されます。
なお、セキュリティ上の配慮から拡張子bmpはNGとしています。
また、gif, jpg, jpeg, pngの場合は、ファイルが本当に画像かどうかのチェックが入ります。(★)
・ファイルサイズ制限が設定してある場合、それ以上のサイズのファイルを指定するとエラーメッセージが表示されます(★)
必須入力チェック(☆★)
見出しパーツ、コメント・注釈パーツ以外のパーツは当該項目の入力を必須、任意に切り替えることができます。ただし前述の「個人情報保護方針」パーツのみ任意指定不可です。ユーザが入力する際に、[必須]指定した項目が未入力なら入力を促すメッセージが表示されます。
パーツ毎の必須入力チェックは次の通りです。
- メールアドレス、郵便番号、都道府県、電話番号、URL、テキスト、複数行テキストは、値が空(空文字列)のままだと未入力とみなします。
- 個人情報保護方針パーツは必須入力固定です。
- ドロップダウンリストは「選択してください」が選択状態だと未入力とみなします。
- チェックボックスはすべてのチェックボックスが未チェックだと未入力とみなします。
- ラジオボタンは未チェックだと未入力とみなします。
- ファイルアップロードパーツは、アップロードするファイルが選択されていなければ未入力とみなします。
- 外部パラメータパーツは、外部パラメータが渡されなければ未入力とみなします。
- パスワードパーツは、値が空(空文字列)のままだと未入力とみなします。
パーツ共通のバリデーションチェック
文字数制限が設定できるパーツは文字数制限のチェックがかります(☆★)。
制限文字数は、フォームごとパーツごとに設定可能です。
入力値のサニタイズ
フォームの確認画面では、ユーザが入力した値を確認のために表示しますが、この際、入力値に含まれるHTML特殊文字(<、>、&、")をそれぞれ<、>、&、"にエスケープして描画します。
この処置は脆弱性対応上重要な処置です。
なお、受付データにはエスケープしない元のままの値が保持されます。ただし、"はCSVファイルをMicrosoft Excelで開く際に問題となりますのでCSVファイル生成時に""にエスケープしています。
アークウェブのMovable Typeブログ
新着記事
- 2024年11月 6日
Movable Type 8.0.5 / 8.4.0 / 7 r.5505 についてAシリーズは動作確認済みです - 2024年9月13日
A-Form Payment2.2.5 リリースのお知らせ - 2024年9月12日
リリースノート:A-Form PC 5.0.1/4.1.5/3.9.4, A-Member 5.0.1/4.1.5/3.9.4, A-Reserve 5.0.1/4.1.5/3.9.4 - 2024年9月 2日
2024年9月4日リリース予定のMovabletype7、8の Perl5.38.2のクラウドについて、Aシリーズは動作確認済みです - 2023年12月12日
MTプラグインAシリーズ:A-Form, A-Member, A-Reserve 5.0(MT8対応)、A-Form, A-Member, A-Reserve 4.1.4(MT7対応)リリースのお知らせ