予想問題vol.7 問46
問46
安全なWebアプリケーションの作り方について,攻撃と対策の適切な組合せはどれか。
- [出典]
- 応用情報技術者 H26春期 問40
分類
テクノロジ系 » セキュリティ » セキュリティ実装技術
正解
ア
解説
Webアプリケーションに対するそれぞれの攻撃手法を確認しておきましょう。
- SQLインジェクション
- 入力データとしてデータベースへの命令文を構成するデータを入力し、Webアプリケーションが想定していないSQL文を意図的に実行させることでデータベースを攻撃する行為。
- クロスサイトスクリプティング
- 動的にWebページを生成するアプリケーションのセキュリティ上の不備を意図的に利用し、サイト間を横断して悪意のあるスクリプトを混入させることでユーザーのクッキーを盗むなどの攻撃を行う行為。
- クロスサイトリクエストフォージェリ
- 悪意のあるスクリプトが埋め込まれたWebページを訪問者に閲覧させて、別のWebサイトで、その訪問者が意図しない操作を行わせる攻撃手法。会員制サイトでログイン状態であるときに会員情報の変更や商品の注文画面への直接リンクを踏ませる(またはスクリプトでリダイレクトする)などの意図しない不正な処理要求を行わせる行為がこれに該当する。
- セッションハイジャック
- 認証が完了してセッションを開始しているブラウザとWebサーバの間の通信において、CookieやセッションIDなどのセッション情報を盗むことで、対象セッションを通信当事者以外が乗っ取る攻撃手法。
- 正しい。プレースホルダは、SQL文中のユーザー入力を割り当てる部分に特殊文字(?など)を使用したひな形を用意し、後から実際の値を割り当てる機構です。後から割り当てる値は、SQL文の特殊文字がエスケープされた完全な数値または文字列として扱われるため安全に実行することができます。
- スタイルシートには"expression"文のようにJavaScriptを直接記述できる部分があるため、不用意に別ドメインのCSSを読込むと悪意のあるスクリプトによってXSSの被害を受ける可能性があります。またスタイルシートの"import"文によってスクリプトファイルがダウンロードさせてしまうおそれもあります。
これらの脅威は2020年現在はブラウザによりブロックされることがほとんどです。しかし、スタイルシートはWebページのデザインを指定する言語ですが、設定できる範囲は広く、悪意を持って使用すれば任意の要素を消したり、出現させたりというようにページの表示を改ざんすることも可能です(CSSインジェクション)。この観点からも信用できない外部CSSは読む込むべきではないと言えます。 - GETメソッドを使用すると、URLから秘密情報を読みとられたり改ざんされたりという可能性が高くなるのでPOSTメソッドを使用すべきです。
GETやPOSTというのはWebブラウザからサーバへのパラメータの受け渡し型の違いです。GETメソッドは、"hoge.php?mode=new&uid=34632847"というようにURLの後ろにパラメータを付加して送信する方式、POSTメソッドは、パラメータをメッセージボディにセットしサーバに渡す方式です。 - 固定のセッションIDはセッションハイジャックのターゲットになりやすいので危険です。