スマホサイト・アプリをつくろう。スマホサイト・アプリをつくろう。SQLインジェクションとはSQLインジェクションとはサイトが想定していないSQL文を第3者に実行されてしまう脆弱性のことです。データの漏洩や改ざんをされる恐れがあるので非常に危険です。近年、この虚弱性について認知されるようになりましたが、被害の報告は絶えません。SQLインジェクションの虚弱性を組み込んでしまうのでしょうか?原因として以下のことが考えられます。未対策のコードを使い回している。近年、世界的に大規模な被害を受けているといわれています。これから作るサイトはもちろんのこと、過去に作成したものまでしっかり対応しなくてはいけません。他の案件からソースを再利用する時などはツイツイ忘れがちに成りやすいですので注意しましょう。SQLインジェクション対策はセキュリティ対策の中でも比較的簡単に対策をすることができますので、これを機にすべてのソースを見直してみましょう。SQLインジェクションの仕組みSQLインジェクションはアプリケーションが入力値を適切にエスケープしないままSQL中に展開することで発生します。会員情報を取得するために以下のSQLを実行するとします。‘h」と入力するとどうなるでしょう。'h';nameが空もしくは「h」が「h」の条件に含まれるレコードを取得するとなり、nameというカラムの条件は意味を持たなくなりますので、すべての会員情報を取得してしまいます。「”」にエスケープすることにより回避することができます。バイナリデータや文字エンコードなどにより、この単純なエスケープを逃れてハッキングされる恐れがあります。多くのプログラム言語には、ただしくエスケープする関数が用意されていますので、そちらを使用するようにしてください。対策はどうすれば良いか本稿はPHPを例にあげ、SQLインジェクション対策について解説します。PHPにはpg_escape_stringという関数が用意されています。過去にSQLインジェクションを回避する関数が用意されているものもありますが、それらは不完全ですのでpg_escape_stringを使用してください。入力値をこの関数を使ってエスケープするのですが、全てのパラメータに行ってください。いうと、どこから値が入力されるか分からないからです。全てに対策することで、悩むこともなくなりますので、安全で工数も最終的に削減できます。次に全てのパラメータを文字列として扱うようにしてください。SQLを「;」で終了できなくするためです。」と入力するとどうなるでしょう。なり、全ての会員情報が削除されてしまいます。数値型であったとしても必ず文字列として扱いましょう。SQLクエリを全て再確認する既にSQLインジェクションの脅威は世の中に浸透しています。それでも被害の報告が耐えないのは対策漏れがあることです。一つの対策は簡単でも全てのソースコードをチェックするのは大変です。こればかりは黙視することがもっとも確実です。SQLを実行する「exec()」や「fetchAll()」の関数をgrepで洗い出し、社内にある虚弱性のある全てのコードを廃絶しましょう。スマホサイト・アプリをつくろう。まめの木|モバイルSEO見積ツール株式会社セルバは携帯サイト作成・制作、メール配信、店舗検索など、携帯サイトの様々なサービスをご提供しています。