質問: お世話になります。 CakePHP3.0以降を使用した開発を行う上でセキュリティ関係の調査を行う必要が出てきて CakePHP3.0の場合どのような関数等を使用したらよいか知りたいため質問した次第です。 1.SQLインジェクション対策のエスケープ処理について プレースホルダーの実装が難しい場合、値に対してエスケープ処理を施す必要がありますが、 エスケープ処理はCakePHPに関数が用意されていますか? 調べたら「Model->find()」というものがヒットしましたがこれを使用するのが一般的ですか? 2.XSS対策のスクリプト要素除外について IPAが公開している「安全なウェブサイトの作り方」の p.25「1.5.2 HTML テキストの入力を許可する場合の対策」に該当するような 関数などはありますか? 3.Cookieの設定について httpOnly属性の設定は CookieComponentのhttpOnly=>trueを使用したらよいですか? 4.httpメソッドの無効化 deleteやtraceなどのメソッドを無効化するには request->allowMethodを使用したらよいですか? 5.レスポンスヘッダの設定について Content-Type、X-Content-Type-Options、Content-Dispositionの設定は Cake\Http\Responseクラスを使用したらよいですか? 6.httpヘッダインジェクションの改行について 改行チェックやパーセントエンコードを行うCakePHPの関数はありますか? 確認内容が多くて申し訳ありませんが、よろしくお願いします。
回答: > > 1.SQLインジェクション対策のエスケープ処理について > > プレースホルダーの実装が難しい場合、値に対してエスケープ処理を施す必要がありますが、 > > エスケープ処理はcakePHPに関数が用意されていますか? > > > エスケープ関数はcakePHPにはないようです。プレースホルダ使え、というポリシーのようですね。どうして藻という場合はPDOやDBドライバを引っ張り出してそれらのエスケープ関数を直接使うしかないようです。 > > 調べたら「Model->find()」というものがヒットしましたがこれを使用するのが一般的ですか? > > > `find`は検索のためのインターフェースです。 > > 2.XSS対策のスクリプト要素除外について > > > PHPのDOMDocument使えば良いと思います。 > > 3.Cookieの設定について > > httpOnly属性の設定は > > CookieComponentのhttpOnly=>trueを使用したらよいですか? > > > はい > > 4.httpメソッドの無効化 > > deleteやtraceなどのメソッドを無効化するには > > request->allowMethodを使用したらよいですか? > > > サーバ側で制限する物です。 > > 5.レスポンスヘッダの設定について > > Content-Type、X-Content-Type-Options、Content-Dispositionの設定は > > Cake\Http\Responseクラスを使用したらよいですか? > > > はい > > 6.httpヘッダインジェクションの改行について > > 改行チェックやパーセントエンコードを行うcakePHPの関数はありますか? > > > PHPの関数を使えば良いと思います。 全般的な印象ですが、 * リファレンスをしっかり読む * チュートリアルなどでそのフレームワークを使って一通りアプリケーションを作ってみる * Webアプリケーションの仕組みやセキュリティについて基礎を身につける といった基礎的な部分が不足しており、その状態では「フレームワークを使った開発におけるセキュリティ関係の調査」は難しいように思います。