ブラウザがきちんと自動で認識をしてくれます。掲示板などに&lt;script&gt;と書き込んで試してみるといいでしょう。エスケープ処理(サニタイジング処理)における、文字の変換例は以下です。&quot;(H18年SV午後I問1表2より引用)これを丸暗記しようとすると難しいが、意味を理解すると覚えやすい。than(~より小さい)のltである。セキュアプログラミングに関しては、IPAのサイトに充実した解説がされている。http://www.ipa.go.jp/security/awareness/vendor/programming/index.html3.サニタイジング(エスケープ)処理の方法2別の例を見ましょう。'1'='1'と判断され、'1'='1'は正しいことから、不正なアクセスが可能だ。一方で、サニタイジングをすると、同じ入力をした場合、以下になる。''1''=''1'こうなると、SQLの構文として不適切であり、この部分は「文字列」として扱われる。データベース側では、''は'という文字列として自動認識してくれるので、入力した通りの文字として正常に処理される。サニタイジングとエスケープ処理との違いはなんですか?同じですか?まあ、一緒と思ってもいいだろう。サニタイジング(無害化)の方法の一つが文字の変換などによるエスケープ処理。サニタイジングの方法は、エスケープ処理以外に、特殊文字は入力させない、処理を強制終了させるなどがある。単純に、’などの特殊文字をそもそも受け付けず、入力フォームにてエラーを出すことも方法の一つ。参考:TaintモードPerlの場合、Taintモード(汚染検出用のモード)がある。IPAの以下の資料には、次のような効果が記載されている。)の引数として使用した場合,エラーとしてくれる。←これをつけるだけただ、万能ではないし、実装されていることも少ない(気がする)。インジェクション攻撃コメント(0)OSコマンドインジェクション1.OSコマンドインジェクションとはSQLインジェクションと同様に、脆弱性のあるサーバに対し、OSのコマンドをインジェクション(injection:注入)します。これによる脅威として、IPAの資料(https://www.ipa.go.jp/files/000017316.pdf)では以下のように記載されています。OSコマンドが自由に実行されると何が起こるかを考えると、理解しやすいでしょう。コマンド・インジェクション攻撃により、発生しうる脅威は次のとおりです。対策としては、同じくIPAの上記サイト(https://www.ipa.go.jp/files/000017316.pdf)に、以下の2点が記載されています。1シェルを起動できる言語機能の利用を避ける。2シェルを起動できる言語機能を利用する場合は、その引数を構成する全ての変数に対してチェックを行い、あらかじめ許可した処理のみを実行する。1に関しては、Perlでファイルを開く場合、シェルを起動できてしまうopen関数ではなく、sysopen関数を利用します。2に関しては、「|」、「<」、「>」等、問題となりうる文字をチェックし、それが見つかった場合には処理を中断します。過去問を解いてみましょう。Webアプリケーションの脆弱性を悪用する攻撃手法のうち,Perlのsystem関数やPHPのexec関数など外部プログラムの呼出しを可能にするための関数を利用し,不正にシェルスクリプトや実行形式のファイルを実行させるものは,どれに分類されるか。セッションハイジャック(H26SC午前II問15)正解はイです。「外部プログラムの呼出しを可能にするための関数を利用し」とあります。これは、たとえば、Perlのopen関数を使い、引数に「|」を活用してOSコマンドを渡します。して、不正にコマンドやファイルを実行します。Webサーバのログを分析したところ,Webサーバヘの攻撃と思われるHTTPリクエストヘッダが記録されていた。次のHTTPリクエストヘッダから推測できる,攻撃者が悪用しようとしている脆弱性はどれか。ここで,HTTPリクエストヘッダはデコード済みである。HTTP/1.1」の部分です。catは、指定されたファイルの内容を表示するコマンドです。これにより、サーバのパスワードを取得しようとしています。OSのコマンドを不正に入力しているので、OSコマンドインジェクションが正解です。OSコマンドインジェクションは、一例として、OSのコマンドを入力できる関数(例、system)などを利用している場合に危険が高くなります。以下も参照http://sm.seeeko.com/archives/65929324.html問題文の以下の構文を見てみましょう。HTTP/1.1このとき、?の後ろが、ユーザから入力される引数で、それが、OSコマンドが実行されるsystem関数やopen関数に引き渡されているとします。userにyamadaと入れた場合に、yamadaのディレクトリにあるファイル一覧が見れるようなコマンドが渡されるとします。yamada;cat/etc/passwd"となり、passwdファイルの中身が表示されてしまいます。インジェクション攻撃コメント(0)ディレクトリトラバーサル1.ディレクトリトラバーサルとはトラバーサル(traversal)とは「横断」という意味である。横断歩道は、本来は車のために縦方向にある流れを歩行者のために横に断ち切る。ディレクトリトラバーサルも同様で、横断的にファイルにアクセスする。具体例で見てみましょう。以下のディレクトリ構造を見てください。htmlディレクトリは公開していいファイル、secretディレクトリは非公開のファイルが格納されているとします。現在のディレクトリが上記のhtmlだったとします。ここで、相対パスとして「../../secret/secret.txt」を指定します。「../」は、上位のディレクトリを意味する文字列です。すると、非公開のファイルであるsecret.txtファイルにアクセスすることができるのです(ただし、アクセス権が許可されている場合)。過去問(H27秋AP)では、「入力文字列からアクセスするファイル名を組み立てるアプリケーションに対して,攻撃者が,上位のディレクトリを意味する文字列を入力して,非公開のファイルにアクセスする。」の部分が参考になります。https://www.ipa.go.jp/security/awareness/vendor/programmingv1/b07_07.html以下のサイトがかなり重要。他にもたくさん大切なページがあるhttp://www.ipa.go.jp/security/vuln/vuln_contents/dt.htmlでは、過去問を見てみよう。ディレクトリトラバーサル攻撃に該当するものはどれか。Webアプリケーションの入力データとしてデータベースへの命令文を構成するデータを入力し,想定外のSQL文を実行させる。Webサイトの入力データ処理の欠陥を悪用し,利用者のブラウザで悪意のあるスクリプトを実行させる。管理者が意図していないパスでサーバ内のファイルを指定することによって,本来は許されないファイルを不正に閲覧する。セッションIDによってセッションが管理されるとき,ログイン中の利用者のセッションIDを不正に取得し,その利用者になりすましてサーバにアクセスする。