Repository navigation
OTR_InputValidation
nishi_74322014 edited this page Oct 27, 2026
·
1 revision
入力値チェックの処理方式。
- サーバ側の検証は必須である。リクエストは直接送れるので、クライアント側のチェックだけでは守れない。
- 近年は、P・B 層(サーバ)に検証を集約する傾向がある。クライアント側のチェックは UX の補助と位置付ける。
- 入力チェックのエラーは業務例外で返す(やり直せるので、システム例外にしない)。
| 種類 | 内容 | どこで |
|---|---|---|
| 単項目チェック | 必須、型(数値・日付)、桁数・範囲、文字種、正規表現、禁則文字 | P 層(画面)、サーバ側でも |
| 関連チェック | 項目間の相関、DB の状態を使うチェック | B 層 |
| 業務チェック | 業務ルール(在庫、限度額 など) | B 層 |
| UI | クライアント側 | サーバ側 |
|---|---|---|
| Web | ASP.NET の Validator コントロール(制約が多く、使用を絞る傾向) | 単項目・関連チェックを集約 |
| Windows Forms |
Control.Validating イベントで単項目チェック(フォーカス移動の制御はしない方が無難) |
関連チェック |
| WPF | データ・バインディングとバリデーションの仕組み | 関連チェック |
| 部品 | 用途 |
|---|---|
StringChecker |
IsNumeric / IsNumbers / IsHankaku / IsZenkaku / IsHiragana / IsKatakana / IsKanji / IsShift_Jis など |
FormatChecker |
日本向けの書式(IsJpZipCode、IsJpTelephoneNumber、IsJpCellularPhoneNumber など) |
DateTime.TryParse / decimal.TryParse
|
日付、数値 |
| バリデーション機能付きカスタム・コントロール |
WebCustomTextBox / WinCustomTextBox(CheckType で必須・数値・禁則文字などを宣言的に指定) |
詳しくは共通部品を参照。
- カスタム・コントロールにチェック種別を宣言し、サブミット系のイベント処理で Control ツリーを再帰的に走査して、一括でチェックする。
- 実装するのは画面コードクラス(開発者)である。
// B 層での関連チェック
if (!StringChecker.IsNumeric(pv.Quantity))
{
throw new BusinessApplicationException("E0101", "数量", "数値ではありません");
}- 業務例外は
ErrorFlagで P 層に戻り、元の画面で続行できる(例外処理方式)。 - メッセージは ID で管理する(メッセージ定義)。
- 入力値を
SetUserParameterに渡さない(脆弱性対策のポイント)。
- スキル
opentouryo-app-design(references/input-validation.md)とopentouryo-common-partsを使わせる。 - エージェントは正規表現を自作しがちなので、既存の部品を使っているかを確認する。
Tags: 再構築
このWikiは「Open棟梁Project」,「OSSコンソーシアム 開発基盤部会」によって運営されています。