インソースマーケティングデザイン
2012.08.27 システム
CakePHPのセキュリティ対策(SQLインジェクション)
前回は、CakePHPのセキュリティ対策(XSS:クロスサイトスクリプティング)について紹介しました。 Webアプリケーションを開発する際、セキュリティ対策を考慮した セキュア・プログラミングが必須となっています。 CakePHPにてどのようにセキュリティ対策を行っているかを紹介します。 今回はSQLインジェクションについてです。 SQLインジェクションとは、データベースへの命令(SQL文)の意味を書き換えられ、 データベースを不正に操作されてしまうというものです。 不正に操作されることで、情報の改ざんや漏えいといった問題に発展します。 SQLインジェクションの一番の原因は、SQLの組み立て方に問題があります。 CakePHPの場合、「find」や「read」などの組込関数を使っていれば自動処理されるので対策は不要です。 そのため、なるべくCakePHPの組込関数を使うようにします。 しかし、どうしても自分でSQLを書かなければいけない場合は、 以下のように全てプレースホルダで実装します。
$user_id = ‘123’; $sql = ‘SELECT user_name FROM users WHERE user_id = ?’; $params = array(user_id); $result = $this->query($sql, $params, false);
さらに、どうしてもプレースホルダではなく、文字列連結でSQLの組み立てる場合は、 パラメータを適切にエスケープ処理する必要があります。 以上です。ではまた。