ja:rule:inp:バリデーションする前に全ての変換作業を行う
This is an old revision of the document!
バリデーションする前に全ての変換作業を行う
バリデーションを行うデータはバリデーションを行う前に全ての変換作業を行わなければならない。変換作業を後で行うとバリデーションが無意味となる場合が多々ある。
- Unicode文字の正規化(NFCなど)
- 文字エンコーディング変換(SJISからUTF-8など)
- 全角/半角変換
- データがURL, BASE64などでエンコードされている場合のデコード処理
PHPの場合、$_GET, $_POST, $_COOKIE, $_FILES配列のデータはデコード後のデータが保存されている。複数回のデコードはセキュリティ問題の原因となる。基本的には複数回デコードは行ってはならない。
非適合コード例
if ($_GET['param'] !== strip_tags($_GET['param'])) { throw('Parameter Cannot contain HTML tags'); } $param = mb_convert_kana($_GET['param'], 'knr');
適合コード例
$param = mb_convert_kana($_GET['param'], 'knr'); if ($param !== strip_tags($param)) { throw('Parameter Cannot contain HTML tags'); }
例外
[ルール/推奨事項の例外]
リスク評価
[ルール/推奨事項のリスク評価]
[評価例 - 英語表記に統一]
| Rule | Severity | Likelihood | Remediation Cost | Priority | Level |
|---|---|---|---|---|---|
| IDS05-J | medium | unlikely | medium | P4 | L3 |
関連ガイドライン
参考文献
ja/rule/inp/バリデーションする前に全ての変換作業を行う.1457214927.txt.gz · Last modified: 2016/03/05 21:55 by yohgaki
