【3分ITキーワード】 SQLインジェクション(SQL injection)

 

f:id:PentaSecurity:20170929155306p:plain

 

SQLインジェクション

(SQL injection) 

 

Webアプリケーションの弱点を悪用し、アプリケーションの開発者が予想できなかったSQL構文が実行されるようにすることで、データベースを非正常的に操作する攻撃です。

 

SQL(Structured Query Language)は、主にWebアプリケーションがデータベースに掲示物を保存し、オープンする過程で使用されます。この際、ハッカーSQL構文の挿入(Injection)課程で、特別製作されたデータを入力してインタープリターを騙し、彼が望むSQLクエリー構文を実行するように攻撃することがSQLインジェクションです。

SQLインジェクション攻撃によって、ハッカーが任意のデータを生成して読み、更新して削除することが可能となります。 最悪の場合、アプリケーションを完全に損傷させ、システムをダウンさせることもできます。

 

政府関連機関が提案するSQLインジェクション対応方法は下記と同じです。

 

1) 悪意的な挿入が容易に起こる動的SQLの使用を慎むべきです。

2) 安全なWebサイトを設計し、実装しなければなりません。入力値ごとに適切な検証手続きを適用して、危険な入力値はそうではない値に置き換えて、入力値が許容範囲内にあるか検査するなどの事前措置を行います。

3) データベースのエラーメッセージを露出してはいけません。エラーメッセージを通じて重要なデータが露出する場合が多いからです。

4) WAFを使用しなければなりません。WAFは常時に問題が発生し、アプリケーションを修正している間にもWebサイトを守ってくれます。

5) Webセキュリティ脆弱性を周期的に点検しなければなりません。いくら安全に設計して実装されたWebサイトにも、セキュリティの問題は残っているかもしれないので、日常的に点検して診断する過程が必要です。

 

(出典:SQL Injection Basic「何? ppomppuがSQLインジェクションに崩れたと?」)

 

f:id:PentaSecurity:20170706113641p:plain