Lravelで作ったWebサービス、公開したらセキュリティ関係が心配ですよね。
絶対誰にも破れないセキュリティを持つことは無理と本で読んだ気がしますが、せめて自分でできることはちゃんとやろう。。
ということで、ざっくりですがまとめました。
XSS対策
出力時に{{ $user->user_image }}
のように{{ }} でエスケープする
CSRF対策
通常のform
form内に @csrf を記述する
Ajax用
head内に <meta name="csrf-token" content="{{ csrf_token() }}"
追加。そしてjQueryのAjaxコード内で
$.ajax({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
を追加
SQLインジェクション対策
Laravelで発行されるsqlを使っていたら自動でプリペアードステートメントになっているので基本大丈夫だけど、
以下のような書き方はアウトです!(DB::も使わないほうがいい)
->where(DB::raw('xxxx = ' . $request->xxxx)); //とか DB::query(" * from xxxx where yyyy = {$param}");
複数代入対策
モデルに$fillableを指定
キャッシュコントロール対策 etc
こちらはミドルウェアを使った対策です。
参考サイト様は こちら
'Cache-Control', 'no-cache, private'
・iframe関連禁止 'X-Frame-Options', 'DENY'
・文字コード改変対策 'Content-Type', 'charset=UTF-8'
をMiddleWareに追加。