こんにちは、フルスタックエンジニアのryuです。
今回の記事は基本情報技術者試験過去問解説です。SQLインジェクション攻撃の問題について解説します。SQLインジェクションはinputなどの入力にSQL文を入力し、外部から不正にデータベースを操作する攻撃です。SQLインジェクション攻撃について詳しく解説します。
SQLインジェクション攻撃の説明はどれか
今回の記事では、以下の問題について解説します。
SQLインジェクション攻撃の説明はどれか。
ア:Webアプリケーションに問題があるとき,悪意のある問合せや操作を行う命令文をWebサイトに入力して,データベースのデータを不正に取得したり改ざんしたりする攻撃
イ:悪意のあるスクリプトを埋め込んだWebページを訪問者に閲覧させて,別のWebサイトで,その訪問者が意図しない操作を行わせる攻撃
ウ:市販されているDBMSの脆弱性を利用することによって,宿主となるデータベーサーバを探して自己伝染を繰り返し,インターネットのトラフィックを急増させる攻撃
エ:訪問者の入力データをそのまま画面に表示するWebサイトに対して,悪意のあるスクリプトを埋め込んだ入力データを送ることによって,訪問者のブラウザで実行させる攻撃
出典:平成29年秋期 問39
答えは、『ア』の「Webアプリケーションに問題があるとき,悪意のある問合せや操作を行う命令文をWebサイトに入力して,データベースのデータを不正に取得したり改ざんしたりする攻撃」です。
SQLインジェクションについてさらに詳しく解説していきます。
SQLインジェクション攻撃とは?
ここからは、SQLインジェクション攻撃について解説します。
SQL文で不正にDBを操作する攻撃
SQLインジェクション攻撃とは、WebサイトのインプットなどからSQL文を入力し、不正にデータベースなどを操作する攻撃のことです。
そもそもSQLとは、データベースを操作するためのコマンドです。データを入力したり、削除したり様々なことができます。このSQL文を不正に実行するのがSQLインジェクションです。
イメージはこちらのようになります。
では、SQLインジェクションをされないようにするにはどのようにすればよいのでしょうか?SQLインジェクションの対策方法について解説します。
SQLインジェクションの対策
SQLインジェクションの対策方法は以下のものがあります。
- エスケープ処理でSQLを実行されないようにする
- WAFの導入
- DBの権限を適切に設定する
SQLインジェクションの対策方法はいくつかありますが、まずはWebサイトのインプットなどからSQLを実行できないようにします。エスケープ処理などをWebサイトに実装します。
また、WAF(Web Application Firewall)を導入して、SQLインジェクションをブロックすることもできます。WAFはWebサイトへアクセスする手前に設置するもので、Webサイトへの攻撃全般を防ぐ役割があります。
最終的に攻撃された場合でも、権限を適切に設定しておけば、情報流出が最小減で抑えられます。権限が適切でない場合、DBの全データにアクセスされる可能性があります。
SQLインジェクションへの詳細な対策はこちらのサイトをご覧ください。
安全なウェブサイトの作り方 – 1.1 SQLインジェクション:IPA 独立行政法人 情報処理推進機構
過去問解説まとめ
今回の記事では、以下の問題について解説しました。
SQLインジェクション攻撃の説明はどれか。
ア:Webアプリケーションに問題があるとき,悪意のある問合せや操作を行う命令文をWebサイトに入力して,データベースのデータを不正に取得したり改ざんしたりする攻撃
イ:悪意のあるスクリプトを埋め込んだWebページを訪問者に閲覧させて,別のWebサイトで,その訪問者が意図しない操作を行わせる攻撃
ウ:市販されているDBMSの脆弱性を利用することによって,宿主となるデータベーサーバを探して自己伝染を繰り返し,インターネットのトラフィックを急増させる攻撃
エ:訪問者の入力データをそのまま画面に表示するWebサイトに対して,悪意のあるスクリプトを埋め込んだ入力データを送ることによって,訪問者のブラウザで実行させる攻撃
出典:平成29年秋期 問39
答えは、『ア』でした。その他の選択肢の解説は以下の通りです。
- イ→クロスサイトリクエストフォージェリの説明
- ウ→ワームの説明
- エ→クロスサイトスクリプティングの説明
当ブログでは、このようなネットワークに関する内容や基本情報技術者試験の過去問解説をしているので興味のある方は引き続きご覧ください。