Graphで平面を地形に変形させてみた。OpenCVの導入2018/05/16GitのブランチやHEADをサブコマンドで操作する2018/04/10Python3+OpenCV3でパッケージ認識してみましょう2018/04/10喫茶店探しを自動化したい2016/12/16(Fri)CakePHPでCSRF対策CakePHPPHPフレームワーク基本的にフレームワークはあまり利用しないのですが、必要に応じて選択することがあります。今回はCakePHPで実装をした際にCSRF(クロスサイトリクエストフォージェリ)の脆弱性対策をどのように行ったのかを備忘録的に書き留めました。CSRFそもそもCSRFとは(クロスサイトリクエストフォージェリ)な方は以下を↓http://www.trendmicro.co.jp/jp/security-intelligence/threat-solution/csrf/index.htmlざっとかいつまむと、ユーザの意図しないタイミングでリクエストを受け付けてしまう脆弱性です。悪意ある第三者がPOST値を改ざんしてユーザを誘導することで発生し得ます。基本方針リクエスト送信フォーム内にhidden値でワンタイムtokenを埋め込み、同一セッション内での一致確認を行います。すると、悪意ある第三者にはワンタイムtokenの生成方法もわからないため、改ざんが難しくなるという話です。CakePHPのフォーム機能CakePHPでform機能を実装する場合、FormHelperを利用できます。>こんな感じでテンプレートファイルに書き込むと↓みたいにformタグを生成してくれます。・</form>ちなみにPOST先は表示ページのControllerとActionを自動で指定してくれますね。validate(POST値のチェック)もDBへの保存もメソッドで一発です。基本CakePHP使う人はこのFormHelperを利用しているかと思います。全部やってくれる分、token一つだけ埋め込んで一致確認処理するのにわざわざModelに追加するのか・・・?とか思ってしまいました。(フレームワーク初心者)解決法:コンポーネントの追加CakePHPには共通のコントローラごとに共通の処理を支援する、コンポーネントという機能があります。この中でtokenを埋め込み、CSRF対策をしてくれるコンポーネントが提供されています。提供コンポーネントはバージョンによって異なります。array('Csrf');}}2.xではbeforeFilterで設定する方法、3.xではinitializeで設定する方法もあります。他のコンポーネントも利用したい場合は配列に追加指定すれば複数利用できます。細かいことはCookBookに書いてくれているので参考にどうぞ。