ja:rule:出力
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| ja:rule:出力 [2017/06/30 11:35] – yohgaki | ja:rule:出力 [2017/07/04 01:30] (current) – [出力] yohgaki | ||
|---|---|---|---|
| Line 5: | Line 5: | ||
| 出力の3原則 | 出力の3原則 | ||
| - | * エスケープ - 出力先のシステムが誤作動しない**確実に安全な形式にエンコーディング**する | + | |
| - | * 安全なAPI - 出力先のシステムが誤作動しない**確実に安全なAPIを安全な方法で利用**する | + | |
| - | * バリデーション - 出力先のシステムが誤作動しない**確実に安全な形式であることを検証**する | + | |
| 出力の3原則により「**出力データによって出力先が誤作動しない**」ことを保証できる。出力先にはコンテクストがあり、出力の3原則はどれか一つ使えば良いものでない。コンテクスト、利用できるAPIなどをコンテクストに合わせて適切に利用しなければならない。 | 出力の3原則により「**出力データによって出力先が誤作動しない**」ことを保証できる。出力先にはコンテクストがあり、出力の3原則はどれか一つ使えば良いものでない。コンテクスト、利用できるAPIなどをコンテクストに合わせて適切に利用しなければならない。 | ||
| Line 23: | Line 23: | ||
| </ | </ | ||
| - | 出力の3原則により | + | 出力の3原則により「出力先のシステム/ |
| + | |||
| + | 例: 整数IDに文字列が表示されることを出力対策では防げない | ||
| + | |||
| + | <code php> | ||
| + | echo 'ID: '. htmlspecialchars($_GET[' | ||
| + | </ | ||
| + | |||
| + | これは出力対策は入力データのコンテクストを識別できないことが理由である。入力データのコンテクスト($_GET[' | ||
| + | |||
| + | 入力データには3種類が存在する。 | ||
| + | |||
| + | * **正しいデータ** | ||
| + | * **入力ミスのデータ** | ||
| + | * <color # | ||
| + | |||
| + | 「不正なデータ」を正しく処理する責任は入力処理コードが、「入力ミスのデータ」を正しく処理する責任はビジネスロジック(MVCのモデル)が所有する。 | ||
| ===== ルール ===== | ===== ルール ===== | ||
| * [[.: | * [[.: | ||
| + | * [[.: | ||
| + | * [[.: | ||
| + | * [[.: | ||
| + | * [[.: | ||
| + | * [[.: | ||
| + | * [[.: | ||
| + | * [[.: | ||
| + | * [[.: | ||
| + | * [[.: | ||
| + | * [[.: | ||
| * [[.: | * [[.: | ||
| * [[.: | * [[.: | ||
| * [[.: | * [[.: | ||
| * [[.: | * [[.: | ||
| + | * [[.:out:]] | ||
| ===== 注意事項 ===== | ===== 注意事項 ===== | ||
ja/rule/出力.1498822543.txt.gz · Last modified: 2017/06/30 11:35 by yohgaki
