エンジニア社長のYUMAです。この講座も最終回まで来ました。ここまで開発環境の準備やデータベースとのやりとりを色々と学んできましたね。以前ご紹介した攻撃手法のクロスサイトスクリプティング(XSS)対策ができていなかったので、追加していきますね。XSSはWebアプリを利用したユーザーで悪意のあるjavascriptが動作していまうことが原因でしたね。そのタイミングはWebアプリ側がhtmlとしてブラウザに文字を出力するタイミングなんです。そのjavascriptを無効化してあげればいいんだ!とてもシンプルですね。出力する時は全てエスケープではここで問題。今作っているアプリがHTMLに出力するタイミングはどこでしょうか?*ヒントはechoコマンドを使っている部分です。正解はコチラ最後の名前表示部分ですね。phpでのエスケープ方法phpが最初から持っている関数’htmlspecialchars’を使ってエスケープします。引数とは関数に与えるデータのこと、htmlspecialcharsは与えたデータを処理するので、データが空だとエラーになる。詳しくはWebアプリ実践編で解説予定。今作っているアプリはこうなります。?></p>ブラウザに出力したいものをhtmlspecialcharsで囲ってあげればOK!念のため、ちゃんと名前が表示されるかCloud9で試してみましょう。繰り返し使うものは関数化うまく表示されましたか?今回は2つだけだったからhtmlspecialcharsと長ったらしい命令を書けたのですが、もっと大きなWebアプリになると何十何百とあるので、めんどくさいし間違えそう。YUMA僕は楽したいです(笑)そこで関数化という便利な方法があるので紹介しましょう。関数化とは自分で命令を作ることです。今回は長くてめんどくさい(笑)って理由なので、h()という関数を作っていきます。ように波カッコを書く波カッコの中に処理を書く→ついでにechoも入れてさらに楽にしちゃいましょう!するとh関数の宣言はこのようになります。htmlspecialchars();}ただ、これだと不完全で、htmlspecialcharsには引数が必要だと書きましたね。エスケープ処理する文字がなかったらエラーになりますからね。オリジナル関数自体に引数を与えて、その引数をhtmlspecialcharsに与える。‘UTF-8’あたりは文字コードを日本語対応のUTF-8で出力しますよっていう呪文なので、ここはこのままコピペでOKですオリジナル関数を使ってみるでは先ほど作ったオリジナル関数をphpの最初に宣言しましょう。関数はコードの中で使うので一番上で宣言するのがオススメ。view.phpの最初に宣言。次にエスケープしたい部分にオリジナル関数h()を適用してみましょう。適用後のコードはコチラ。?></p>では試しに名前を表示してみましょう。以前と変わらない結果となるでしょう。SQL,OSインジェクション対策は実施済みあと二つ重要なセキュリティ項目がありましたが、こちらはプリペアドステートメントとバインドバリューで対策済みでしたね。忘れてしまった方はこちらを参考に。【挫折させないWebアプリ開発講座11】アプリへの攻撃事例とその対策2017.06.27最後にYUMAここまで長い間お付き合いありがとうございました今日でWebアプリ開発の基本の基本をマスターできました。この講座だけでは実用的なWebアプリケーションを開発することは難しいでしょう。そのため、次回からは「挫折させないWebアプリ開発講座実践編」をお送りします。この講座を見てWebアプリに興味を持ってオリジナルアプリを開発したい人向けに個人レッスンを行っています。exit('データベース接続失敗。exit('データベース接続失敗。【挫折させないWebアプリ開発講座10】Webアプリを使いやすく改造しよう教員免許所持者の僕がプログラミング教育の問題点と解決策と書くよRECOMMENDこちらの記事も人気です。裕馬4年間プログラミングに挫折し続けた末に独学でWebアプリを開発し、起業。選択肢の少ないフリーターにプログラミングを教えてエンジニアに育てる事がライフワーク。