Laravelで作ったサービスのセキュリティチェック

Laravel

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に追加。

タイトルとURLをコピーしました