SQLインジェクションとは

データベース不正操作

ウェブサーバーで公開されているデータベースは攻撃にさらされやすいです。 2005年に価格コムがクラックされたときには、データベースへの攻撃(SQLインジェクション)が行われたため、サイトが使用不可になる被害が生じました。

SQLインジェクションとは

SQLインジェクションとは、PHPスクリプトの脆弱性を利用して、MYSQLやPostgreSQL等のウェブデータベースを不正に操作することをいいます。

データを直接改竄して被害が発生することもありますが、顧客情報等、データベースに保存されている情報を不正入手する目的で行われることもあります。 情報を不正に取得された場合では、データベース自体が破損しないため、SQLインジェクションが行われたことが発見しにくいです。 アクセスログ等を確認するようにしましょう。

被害が大きい

PHPとデータベースを併用している場合、HTTP経由でデータベースを操作することが可能です。 大量のデータを一度に改竄することができるので、不正操作を行われた時の被害も大きくなります。

SQLインジェクション対策

代表的なSQLインジェクション対策を紹介します。 セキュリティ関連のニュースには敏感になっておきましょう。

プリペアードステートメント

SQL構文をテンプレート化し、変更できる箇所を限定します。 予期しないSQLが実行されることを防ぎます。

入力データのチェック

訪問者が自由に書き込みできる場合は、入力フォームからのデータをチェックし、必要ならサニタイズ(スクリプトの無効化)を行うようにしましょう。

データ型を厳しく定義する

通常のデータベースでは、データカラムの型の宣言が必須です。 整数しかとりえないデータを格納するカラムは integer にするなど、想定外の入力をデータベースの側で排除できるようにしておきましょう。

SQLインジェクション自体の対策にはなりませんが、ユーザーの入力をデータベースに保存するような場合に、クロスサイトスクリプティング等の攻撃を防ぐのに役立ちます。

Copyright (C) 2003-2013. PHP で WEB 作成 All rights reserved.