左門至峰の株式会社エスエスコンサルティング)です。過去問を多数引用しながら、基礎知識をしっかり学んでもらうように作ってあります。(情報セキュリティスペシャリスト)を楽しく学べるように工夫したいと思います。セキュアプログラミングセキュアプログラミングとはセキュアプログラミングとは、セキュリティの高いプログラミングをするという考え方です。具体的には、「脆弱性のある関数を使わない」、「入力値をチェックする」、「エラーメッセージをそのまま表示しない」、「CookieにSecure属性を加える」、ながあります。IPAでは、以下のWebサイトにて、「セキュア・プログラミング講座」が掲載されています。セキュアプログラミングコメント(0)XAMPP(ザンプ)をインストールしてPHPセキュアプログラミングを理解するにあたり、実際にプログラミングしてみることはとてもいいことだ。Webサイトを作るのに簡単なのはPHPなので、PHPで簡易なプログラムを組んでいきたい。PHPのインストールXAMPPが便利だ。PHPだけでなく、MySQLやその他プログラムが一度にインストールできる。Windowsでも動作する。検証にはもってこいだ。https://www.apachefriends.org/jp/index.html以下の「ダウンロード」タブから最新のファイルをダウンロード(青ボタン)しよう。今回は、xampp-win32-1.8.3-4-VC11-installer.exe(125Mbyte)を取得した。インストール入れるだけ。全部インストールしてもいいのであるが、要らなさそうなものはチェックをはずした。PHPとMySQLがあればいいだろう。デフォルトのフォルダは以下。ここに、PHPのプログラムファイルも入れる。C:\xamppサービスの起動ボタンを押すだけ。PHPをやるために、最低限Apacheだけは起動しておこう。ついでにMySQLもかな。Apacheのエラーが出た場合には、なにか80番のWebサービスが既に起動している可能性がある。コントロールパネルの「サービス」にて、それらしきサービスを停止しておこう。以下のサイト(自分自身)にアクセスしてみよう。Windows版へようこそ!」らしき画面がでれば無事にPHP動作環境が完了である。(5)HTMLによるWebサーバとして当然動作する。セキュアプログラミングコメント(0)PHPの簡単なスクリプトXAMPPによるインストール以下で確認してほしい。XAMPP(ザンプ)をインストールしてPHP簡単なスクリプトを書く「ログイン画面」を作っていく。HTMLファイルに「ログイン画面」と書いてもいいが、せっかくなのでPHPのプログラミングで書く。テキストファイルを開き、以下を記載する。<?phpprint('ログイン画面')?>ファイルを保存このファイルを名前を付けて保存(login.php)とする。拡張子はphpとする必要がある。これを、以下に入れるだけでよい。C:\xampp\htdocs画面を表示してみるhttp://127.0.0.1/login.php以下のように、PHPプログラムで書いた「ログイン画面」という言葉が表示される。セキュアプログラミングコメント(0)POSTとGETという2つのメソッドHTTPのメソッドには8つのメソッドがある。http://nw.seeeko.com/archives/50654465.htmlPOSTとGETの動作の違いをPHPのスクリプトで体験してみよう。分かりやすさを優先して、余分なものは全て消してある。実際のプログラムはもう少し整形することになるだろう。ここではあくまでも、仕組みをシンプルにお伝えすることを優先している。※結果表示のスクリプト<?phpprint($_REQUEST['id']);?>さん、ログインしました。POSTの場合IDとしてuser1と、パスワードを入力してLoginボタンを押す。その後の画面(result.php)は以下のようになる。GETの場合login.htmlの赤字の「POST」部分を「GET」に変更して実行する。GETの場合は、以下のように、入力した情報がURLに表示される。ログインIDやパスワードが漏えいするので、これはよくない。それで、POSTが使われる。http://127.0.0.1/result.php?id=user1&password=passなるほど。GETは使われないのですね?そうでもない。Yahoo!やGoogleの検索ではURLに値が表示される。GETで処理しているはずだ。以下は、Yahoo!にて「network」というキーワードで検索した結果である。これにより、この検索結果のURLを保存しておいたり、誰かに共有することも可能であり、それは一つの利点である。Referer機能により、リンク先にリンク元の情報が送られる。このようにGETを利用してURLに情報が埋めこまれているから、どの検索エンジンのどのキーワードでリンク先に来たかが分かる。これによって、アクセス元の詳細な分析も可能になる。Googleの場合は、さらにシンプルである。セキュアプログラミングコメント(0)Cookieによるセッション管理セッション管理には3つがあると述べたが、一番多いのはCookieである。PHPでプログラミングをする場合、以下を書くだけである。session_start();プログラムとしては、以下のようになる。VALUE="Login"></FORM>これだけでCookieが設定されるとは便利ですね。ファイルの表示」の中で、Cookieを探してみます。あれ?無いですよ?ファイルに保存されるのは、Cookieに有効期限を付けた場合のみだ。通常は、ブラウザを閉じるとCookieは削除されるので、わざわざファイルに保存する必要はない。IEの開発ツールで見てみよう。F12を押して、三角のスタートボタンを押してキャプチャをする。Cookieタブを見ると、以下にようにPHPSESSIDとして確認できる。※http:127.0.0.1になっているのは、Webサーバ上から直接アクセスしたため。パケットキャプチャを詳しく見てみよう。PC(192.168.1.103)からWebサーバ192.168.1.102にアクセスするとする。記載されているので、ブラウザに対してSet-Cookieにてセッション情報を渡す。(上の図の2)このとき、2のフレームが以下である。Webサーバからブラウザに対し、Set-CookieにてセッションIDが渡されているのが分かる。その後、ブラウザからWebサーバへの通信(上の図の3)へは、以下のようにCookieのセッションIDを伝えながら通信をする。これにより、セッションを維持しながらの通信が可能になる。Servletの場合は以下。request.getSession(true);以下にまとめられているので参照ください。Set-CookieヘッダでセッションIDをブラウザに対して発行するようになっている。SSLによる通信の暗号化が図られている」とある。ファイルの表示」の中にある。他のテンポラリーファイルも混ざっているので見づらいが、よく探せばあるので、見ていただきたい。Cookieコメント(0)refererHTTPでは、どのサイトから訪れたのかを記録するフィールドがある。これがrefererである。これにより、ホームページのアクセス元の分析などが可能になる。どんなキーワードで検索されたかも分かるという利点もある。Goolgeで「security」と入力して検索したとする。すると、検索結果は以下のようになる。https://www.google.co.jp/#q=securityその検索結果のとあるサイトをクリックすると、Refererによって、上記のURLが通知される。このことから、Googleの「security」という検索キーワードをもとに、サイトを訪れたことが分かり、便利と言える。これは、検索エンジンがPOSTではなくGETメソッドを利用しているから、このようにURLに情報を付与する。セッション管理でGETメソッドを利用している場合、問題がある。URLにセッション情報が記載されるので、リンク先にセッション情報が漏えいする。参考であるが、過去問H26年春SC午後I問1では、以下の記述がある。GETメソッドではなくPOSTメソッドを使用しておかないと、HTTPヘッダ内のフィールドが原因で、バナー広告に設定されたリンク先のWebサーバへセッションIDが漏えいすることが考えられるね。★詳しくは、キャプチャを付けたり、図にして解説するつもりだ。セキュアプログラミングコメント(0)IPAのセキュアプログラミング試験で出題されるのはここからの内容である。理解すれば、得意分野にできるであろう。プログラミングが得意な人からすると、さほどのボリュームとは感じないだろうが、逆に未経験の人からするとハードルが高い。http://www.ipa.go.jp/security/awareness/vendor/programmingv2/index.htmlまた、以下の情報もある。https://www.ipa.go.jp/security/vuln/websecurity.html過去問(H25SC秋午後1問1)に以下のように記載がある。Web健康診断という)が,“安全なウェブサイトの作り方”の別冊としてH)Aから公表されているとの情報を得た。平成24年度春期試験から、情報セキュリティスペシャリスト試験において、試験問題に出題するプログラム言語は、C++、Java、ECMAScriptの3言語となった。http://www.jitec.ipa.go.jp/1_00topic/topic_20111026_sc_yougo.htmlECMAScript(エクマスクリプト)は聞き慣れないが、JavaScriptと考えていけばいいだろう。policy)に関しては、IPAの以下の資料に詳しい解説がある。http://www.ipa.go.jp/security/awareness/vendor/programmingv2/contents/706.html情報セキュリティスペシャリスト試験の過去問(H24SC秋午後1問1)の問題を見てみよう。JavaScript十XML)という技術を用いることを検討した。Webページ全体を再描画することなく,現在表示されているWebページの表示の一部だけを更新することができる。]を利用するHTMLファイル群をブラウザがダウンロードして実行すると,非同期的又は同期的にWebサーバにアクセスし,そのレスポンスデータを用いてWebページを更新することができる。A社が想定するターゲット型広告サービスを実現できない。]に入れる適切な字句を解答群の中から選び,記号で答えよ。プライバシAjax(エイジャックス)については、以下の記事も参照いただきたい。http://nw.seeeko.com/archives/50654480.html正解は、aがエのXMLHttpRequestで、bがウのSame-Originである。セキュアプログラミングコメント(0)実際に体験してみようWebサーバの簡単なたてかた。Windows7や8ではIISで立てられる。ASPによるプログラミングも簡単である。後日きちんと書きたい。ツールとしては、IPAから以下が公開されている。最低限の手間と時間はかかるが、有効だと思う。(平成30年春・秋)の徹底解説をした本です。(2)論文試験の意識改革に!論文試験の合格のコツがわかる本。論文試験に一発合格した10人のアンケートも掲載。至峰(技術評論社)私のIT資格取得に対するノウハウを1冊にまとめた本です。左門至峰のプロフィール左門至峰の簡単なプロフィールはこちらプライバシーポリシープライバシーポリシーへのリンクはこちら講演・研修・セミナーの依頼こちらからメッセージをお送りください。第三者には公開されません。講演・セミナー以外のメッセージにはお答えできませんので、ご理解ください。エスエスコンサルティング↑このページのトップヘ。