

お世話になります。

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の関数はありますか？

確認内容が多くて申し訳ありませんが、よろしくお願いします。


CC BY-SA 3.0
2017-09-25T07:27:53.097
38170
2017-09-26T04:29:32.723
2017-09-26T04:29:32.723
2668
14148
question
php cakephp
CakePHP3.xのセキュリティ機能関係について


> 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アプリケーションの仕組みやセキュリティについて基礎を身につける

といった基礎的な部分が不足しており、その状態では「フレームワークを使った開発におけるセキュリティ関係の調査」は難しいように思います。


CC BY-SA 3.0
2017-09-26T01:42:35.260
38188
2017-09-26T01:42:35.260
5793
38170
answer