【問題.1】
ディレクトリ・トラバーサルとは
どういう意味でしょうか。
【選択肢】
・ファイルのアクセス権の設定や、絶対パスに変換すること
・サーバ側の設定で外部サイトからのリクエストを受け付けないようにすること
・改行として認識される特殊文字をエスケープ処理や、
改行が含まれていたら入力エラーとすること
・ユーザーの入力値を適切にエスケープ処理したり、
プリペアードステートメントを使用すること
・出力値を正しくエスケープ処理すること
【正解】
・ファイルのアクセス権の設定や、絶対パスに変換すること
【SQLインジェクション】
・SQL Injection
・SQLを実行するWebアプリケーションで、
想定していないSQLを実行してデータベースを不正に操作します。
・悪意のあるユーザーが入力フォームからSQLと思われる
文字列を入力 > 実行させることで、データを流出させたり改ざんを行うなど。
・SQLインジェクションの対策は、ユーザーの入力値を適切に
エスケープ処理(特別な意味を持つ文字列を一定のルールに従って
別の文字列に置き換える)することです。
あらかじめ実行したいSQLをコンパイルした
プリペアードステートメントを使用します。
【クロスサイト・スクリプティング】
・XSS: Cross Site Scripting
・ユーザーからの入力値を元に動的にWebページを表示し、
サイトに悪意のあるスクリプトを埋込 > ユーザーの環境で実行。
こうした場合、偽サイトに誘導して個人情報を搾取するフィッシング、
そのユーザーのふりをする「なりすまし」などを行います。
・クロスサイト・スクリプティングへの対策は、
悪意のあるスクリプトが表示されたり、
実行されないように出力値を適切にエスケープ処理することです。
【クロスサイト・リクエスト・フォージェリ】
・CSRF: Cross Site Request Forgeries
・攻撃用サイトにアクセスしたユーザーの環境から攻撃者が用意し
たHTTPリクエストを送信させ、不正な操作を実行させます。
・あるSNSへログイン中のユーザーが別の攻撃用サイトの罠リンクを
クリックすることでSNSのページに移動させ
仕掛けたリクエストを送信させます。
こうすることで、ログイン中のSNSの権限でデータを公開したり
パスワードを変更するなど、ユーザーになりすまして不正な操作
が行われます。
・クロスサイト・リクエスト・フォージェリへの対策は、
サーバ側で外部サイトからのリクエストを受け付けないよう、
HTTPリクエストのRefererヘッダの参照や、
内部からのリクエストであることを照合できる仕組みを作成する
ことが有効です。
【ディレクトリ・トラバーサル】
・Directory Traversal
・ファイルへアクセスする操作時に
「../」や「..¥」(各ディレクトリへの相対パスを示す文字列)を含め、
ユーザーがアクセスできないはずのファイルにアクセスされます。
・ディレクトリ・トラバーサルへの対策は、
ファイルのアクセス権を設定したり、絶対パスに変換することが有効です。
【HTTPヘッダ・インジェクション】
・動的にHTTPヘッダを生成するサイトにて、
任意のヘッダ行を挿入し > 不正な操作を行います。
・改行コードの後に新規でSet-Cookieヘッダを挿入して
Cookieの内容を設定するなど。
・HTTPヘッダ・インジェクションへの対策は、改行として認識される特殊な文字をエスケープしたり、
改行が含まれていた場合は入力エラーとすることが有効です。