スポンサーサイト
PHPセキュリティ対策の具体例
HTMLフォームからの入力データをPHPで処理してHTML出力する過程で施すべき、基本的なセキュリティ対策をまとめています。
前提
- (1)Javascriptが入力された場合は除去
- (2)SQLインジェクション対策
- (3)出力時にHTMLタグは実体参照へ変換する
- (4)入力時の改行は、改行コード<br />へ変換して出力
HTMLフォームの入力は$inputに格納されているものとします。
(1)Javascriptの除去
preg_replace('/javascript/i','',preg_replace('/[\x00-\x20\x22\x27]/','',$input));
(2)SQLインジェクション対策
$input = addslashes($input);
//DB処理
詳しくはSQLインジェクションを参考にしてください。
HTMLタグを実体参照へ
$output = htmlspecialchars($output)
改行を<br />へ
$output = nl2br($output)
外部コマンド攻撃
外部コマンド実行攻撃とはプログラム実行系関数(system,exec,passthruなど)の引数として外部リクエストを利用する場合に、不正なコマンドを混ぜて送信され、サーバを不正に操作されることです。
外部コマンド実行攻撃は非常に危険度が高いため、外部リクエストを何らかの形で関数に渡す設計は行うべきではない。escapshellcmd 関数での対策は漏れが発生する可能性があるので、どうしても利用する場合は外部リクエストをホワイトリストによって制限する必要がある。
PHPセキュリティ関連リンク集
PHPのセキュリティー対策として参考になるサイトのリンク集です。
総合
- PHPとWEBアプリケーションのセキュリティーについてのメモ
- E-3 Inc セキュリティガイドライン
- IPA ISEC セキュアWEBプログラミング
- @IT WEBアプリケーションに潜むセキュリティーホール
クロス・サイト・スクリプティング
- @IT:クロスサイトスクリプティング対策の基本
- クロスサイトスクリプティング
- 鶴丸@ぐろっさり -クロスサイトスクリプティング






