webサイトの脅威SQLインジェクション

アタックをプロテクトするために今ではコンテンツを暗号化して送信するssl(Secure Sockets Layer)を導入することが推奨されており、SSLを導入していないサイトはgoogleの検索エンジンにインデックスされないようになった。chromeなどのアドレスバーに表示されているサイトのURLの頭に鍵の閉まったマークがあり、アドレス冒頭がhttpではなくhttpsになっていればそれはsslが導入されているサイトだ。

それでも防ぎきれない脅威がSQLインジェクションだ。

SQLインジェクションとは

SQL(Structured Query Language)とはデータベースを操作する命令文の事で、SQLインジェクションとは、不当な「SQL」文が注入(injection)されることによって、データベースのデータを改ざんする攻撃の事だ。
有名なのは–(ハイフン2つ)と入力するとコメントとし無視するセキュリティホールを利用するもで–(ハイフン二つ)以下の構文は全て無効化され、ハッカーが好きな様に改ざんするコードが書けてしまうというもの。

Wikipedia →

SQLインジェクションの手法

ブログのコメント欄、お問い合わせフォームなどに上記の様なデータを改ざんさせるプログラムコードを入力するとても簡単な手口なので、十分になセキュアな施策のされていないサイトにフォームやコメント欄を設置することはとても危険だ。

QLインジェクションの被害事例

去年だけでもITmedia Newsに以下の様なSQLインジェクションの被害報告がされていた。
メタップス、不正アクセスやられ放題 最大46万件のカード番号やセキュリティコード流出か バックドアやSQLインジェクションの痕跡見つかる
日能研に不正アクセス、メールアドレス28万件流出か SQLインジェクション攻撃で

ワクチン予約システムで話題の「SQLインジェクション」って何? 試すと法律違反? 専門家に聞く

サンリオ子会社に不正アクセス、メアド4万6000件流出か SQLインジェクション攻撃で

©ITmedia

SQLインジェクション対策

ハッカーはさまざまな方法で微弱性を狙って来るので、複数の対策が必要になってくる。

SQLをロジックとして記述できる言語で開発

.NET LINQ、PL/SQLなどソースコードとしてSQLを記述できる言語で開発すれば、
文字列として扱わずに済むため、インジェクションのリスクを下げることができる。

変数をエスケープ処理にする

シングルクォードやダブルクォードで囲む事によって文字列扱いにすることをエスケープ処理というが、DBエンジンにより変数の書き方が違うためDBエンジン毎の対策が必要だ。

クエリにバインド機構を使う

バインド機構とは、変数部分に「?」などのプレースホルダを使用してSQLのテンプレートを作成しておき、プレースホルダにバインド値を割り当ててSQL文を生成するデータベースの機能の事。

DBサーバーのログを監視する

但しSQLインジェクションの中には、Cookie攻撃が埋め込まれていてサーバにログが残らないものもあり、全てを検知できるわけではない。

SQLインジェクション対策はweb担当者のつとめ

SQLインジェクションは、アタックが発見されにくく、大量の個人情報が流出した後に発覚されることが多い。事前に上記の様なセキュリティ対策をしっかり行うことが大切だ。

Akrosで学べるwebリテラシー

大手企業であれば一般職でも入社して新人研修の一環として必ずwebリテラシーを学ぶ事になるが、中小企業やスタートアップでは社員教育にそこまで手が回らない事がある。しかし顧客の個人情報が流出し、web担当者が大変な目に遭うケースはとても多い。知識があれば技術者にセキュア対策の確認をすることができるので社会人になる前にしっかりwebリテラシーを学んでおこう。
「無料体験カウンセリング」のご予約はこちら→