SQLインジェクション
特徴
- SQLインジェクションとは、Webサイトでユーザが入力したデータの中にデータベースを操作できる特殊文字や記号を埋め込んで、Webアプリケーションを介してデータベースを不正に操作する攻撃
- SQLインジェクションへの対策を以下に示す。
- Webアプリケーションプログラムの実装における対策
- 特殊文字や記号を無害化(エスケープ処理)
- 特殊文字や記号をプレースホルダ(バインド機構)を用いて単なる文字列として処理
- Webアプリケーションプログラムの実装以外の対策
- Webアプリケーションプログラムが利用するデータベースのアカウントがもつデータベースアクセス権限を必要最小限にする
- Webアプリケーションプログラムの実装における対策
過去問
情報処理安全確保支援士試験 令和3年度 春期 午前2 問12
【出典:情報処理安全確保支援士試験 令和3年度 春期 午前2 問12(一部、加工あり)】
安全なWebアプリケーションの作り方について、攻撃と対策の適切な組合せはどれか。
- (ア)
→正解 - (イ)
→クロスサイトスクリプティング(XSS)とは、動的にWebページを生成するスクリプトのセキュリティ上の不備を意図的に利用し、サイト間を横断して悪意のあるスクリプトを混入させることでユーザのクッキーを盗むなどの攻撃を行う行為のことです。
クロスサイトスクリプティングの対策として、スタイルシートにはスクリプトを直接記述できる部分があることや、スクリプトファイルをダウンロードしたりすることが可能なため、不用意に別ドメインのCSSを読込むと悪意のあるスクリプトによってXSSの被害を受ける可能性があります。 - (ウ)
→クロスサイトリクエストフォージェリとは、悪意のあるスクリプトが埋め込まれたWebページを訪問者に閲覧させて,別のWebサイトで,その訪問者が意図しない操作を行わせる攻撃手法のことです。
クロスサイトリクエストフォージェリの対策として、リクエストにGETメソッドを使用すると、URLから秘密情報を窃取されたり、改ざんされたりという可能性が高くなるため、POSTメソッドを使用します。 - (エ)
→セッションハイジャックとは、認証が完了してセッションを開始しているブラウザとWebサーバの間の通信において、CookieやセッションIDなどのセッション情報を盗むことで、対象セッションを通信当事者以外が乗っ取る攻撃手法のことです。
セッションハイジャックの対策として、セッションIDの固定化ではなく、アクセスするたびにランダムな値とセットします。
情報処理安全確保支援士試験 令和元年度 秋期 午前2 問17
【出典:情報処理安全確保支援士試験 令和元年度 秋期 午前2 問17(一部、加工あり)】
SQLインジェクション対策について、Webアプリケーションプログラムの実装における対策と、Webアプリケーションプログラムの実装以外の対策として、ともに適切なものはどれか。
- (ア)
→OSコマンドインジェクションへの対策です。 - (イ)
→セッションハイジャックへの対策です。 - (ウ)
→ディレクトリトラバーサルへの対策です。 - (エ)
→正解