2010/05/30

PHP:: XSSとSQLインジェクションの対策

以前書いたプログラム入力チェックでもWeb開発を行う上で「セキュリティ対策」は必須と書きましたが、PHPでの対策を行う上で必要な関数をメモ。

自作関数を作ろうかと思いましたが、準備されているようでしたので。。。
  1. XSS対策~htmlspecialchar~
    入力内容に<や>、&、’などの特殊文字をエスケープ処理する。
    htmlspecialchar($str, ENT_QUOTES);
    ENT_QUOTESは必須。シングルコーテーションも'にエスケープします。

    ただし、クライアントJavaScriptでエスケープ内容を表示するとエラーになる可能性があります。そのときは、addslashes関数をかましましょう。
  2. SQLインジェクション対策~pg_escape_string~
    SQLインジェクション対策の手法はいろいろありますが、DB側で用意しているエスケープ処理をするのが簡単&安全です。
    ※そこにバグがあれば、まずいですけど・・・

    PostgreSQLの場合は、pg_escape_stringを使います。MySQLなども同等の機能を用意していますね。
SQLインジェクションについては、カスタム関数を作るもの一つです。
ただし、自分なりに納得できる関数がなかなか作れなかったのが残念ですね・・・

何にしても、外部からの怪しいアクセスに対して万全であることが大切です。
スポンサーリンク

スポンサーリンク