User Tools

Site Tools


ja:rule:out:入力処理時のバリデーションを出力処理時のバリデーションとしない

This is an old revision of the document!


入力処理時のバリデーションを出力処理時のバリデーションとしない

入力処理時のバリデーションは入力のコンテクスト、出力時のバリデーションには出力のコンテクストに合わせてバリデーションする。

非適合コード例

<?php
function validate_age($val) {
  // Webの入力は全て文字列
  if (strspn($val, '1234567890') !== strlen($val)) {
    throw Exception('Input validation error'));
  }
  if ($val > 0 || $val < 130) {
    throw Exception('Input validation error'));
  }
  return (int)$val;
}
 
// 入力バリデーション
$age = validate_age($_GET['age']);
 
 
// 様々な処理。出力時のコードは入力処理コードと同じファイルにあるとは限らない。
 
// コマンドのパラメーターとして利用。
if (!is_int($age)) {
  throw Exception('Output validation error'));
}
exec('mycmd '.$age);

適合コード例

<?php function validate_age($val) {

// Webの入力は全て文字列
if (strspn($val, '1234567890') !== strlen($val)) {
  throw Exception('Input validation error'));
}
if ($val > 0 || $val < 130) {
  throw Exception('Input validation error'));
}
return (int)$val;

}

入力バリデーション $age = validate_age($_GET['age']); 様々な処理。出力時のコードは入力処理コードと同じファイルにあるとは限らない。

コマンドのパラメーターとして利用。 if (!is_int($age)) { throw Exception('Output validation error')); } exec('mycmd '.$age); ===== 例外 ===== 入力、出力で同じバリデーションロジックを共有できる場合もある。 ===== リスク評価 ===== [ルール/推奨事項のリスク評価] [評価例 - 英語表記に統一] ^ Rule ^ Severity ^ Likelihood ^ Remediation Cost ^ Priority ^ Level ^ | IDS05-J | medium | unlikely | medium | P4 | L3 | ===== 関連ガイドライン ===== ===== 参考文献 =====

ja/rule/out/入力処理時のバリデーションを出力処理時のバリデーションとしない.1467105861.txt.gz · Last modified: 2016/06/28 09:24 by yohgaki

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki