ja:rule:out:エスケープの必要がないapiの制限を熟知する
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revision | |||
| ja:rule:out:エスケープの必要がないapiの制限を熟知する [2016/06/28 06:44] – [非適合コード例(Execv, Execve)] yohgaki | ja:rule:out:エスケープの必要がないapiの制限を熟知する [2016/06/28 06:56] (current) – [適合コード例(Validation)] yohgaki | ||
|---|---|---|---|
| Line 58: | Line 58: | ||
| ===== 適合コード例(Validation) ===== | ===== 適合コード例(Validation) ===== | ||
| + | |||
| + | 通常のホワイトリストによるバリデーションを行う。 | ||
| <code php> | <code php> | ||
| + | <?php | ||
| + | if (!isset($_GET[' | ||
| + | throw Exception(' | ||
| + | } | ||
| + | foreach($_GET[' | ||
| + | if (strspn($param, | ||
| + | throw Exception(' | ||
| + | } | ||
| + | } | ||
| + | |||
| + | pcntl_exec('/ | ||
| </ | </ | ||
| + | |||
| + | バリデーションの注意点 | ||
| + | |||
| + | * コマンド引数でパストラバーサルが可能な場合、任意コマンドに実行許してしまう。コマンドとして" | ||
| + | * パラメーター引数は指定したコマンドにより、更に別のコマンド実行に利用される可能性もある。この為、シェルの特殊文字を一文字でも許可するとリスクが発生する。文字種によるバリデーションより、特定の文字列のみをホワイトリスト形式でバリデーションする方がより安全性が高い。 | ||
ja/rule/out/エスケープの必要がないapiの制限を熟知する.1467096250.txt.gz · Last modified: 2016/06/28 06:44 by yohgaki
