やっほー
超簡単に解説!Laravelでのセキュリティ対策!

超簡単に解説!Laravelでのセキュリティ対策!

  • 2019年2月2日
  • 2021年3月19日
  • Laravel
  • 537view

Laravelのセキュリティについてグダグダ書いていくべ!

今僕は業務でサーバ処理をLaravelで書いているのですが、一般ユーザも使うECサイトを構築中なので、セキュリティにはそれなりにシビアです。

ということで今回は、Laravelのセキュリティについて解説していきます!

本記事は少しずつ更新していきます。ご了承ください。

Laravelのセキュリティについて

Laravelで開発をする際、よくあるのはAPIを作成するケースだと思います。

画面は最近流行りのVue.jsなどを使い、AWSのAPI Gatewayを通してLaravelのAPIを実行するみたいな感じですね。

つまりは、Laravelのセキュリティと言っても、Laravelで何をどこまでやるかで話は変わってくるわけです。

今回はあくまで、Laravelでできるセキュリティ対策をメインに話をしていくので、システム構成がどうだとかは考えず、ざっくり書いていこうと思います。

LaravelのHTTPヘッダのデフォルト

Laravelにアクセスすると、どのようなHTTPヘッダが返ってくるのかを理解しないと、セキュリティ対策のしようがありません。

Laravelプロジェクトを新規作成し、「http://localhost:8000/」にアクセスすると以下のようなヘッダが返却されます。

Chromeブラウザ⇒F12⇒Network⇒localhost⇒Headersで見れます。

Laravel×キャッシュコントロール

キャッシュがブラウザに残ってしまうと、データを意図せぬ形で抜き取られる可能性があります。

キャッシュが残るのを防ぐために、レスポンスヘッダにキャッシュをさせない設定を記載します。

デフォルト設定

Laravelは、デフォルトでキャッシュをさせない設定になっています。

が、明示的に記載した方が良いだろうということで、レスポンス用のミドルウェアを追加します。

ミドルウェアは、「php artisan make:middleware ResponseHeader」で追加できます。
また、追加したミドルウェアは「Kernel.php」に追記しておきましょう。

キャッシュコントロール対策

明示的に「‘Cache-Control’, ‘no-cache, private’」を記載しています。これでOK!

Laravel×クリックジャッキング

クリックジャッキングでよく取り上げられるのは「iframe」です。

iframe経由で画面を表示されることで、意図しない使われ方をされる可能性があります。

ということで、iframeをシステム内で使わない以上、iframe関連は禁止した方が無難です。

デフォルト設定

Laravelはデフォルトで何も設定されていません。

クリックジャッキング対策

X-Frame-Options」に「Deny」を設定することで対策します。

先ほどのミドルウェアにクリックジャッキング対策を追加します。

明示的に「‘X-Frame-Options’, ‘DENY’」を記載しています。これでOK!

Laravel×XSS(文字コード)

XSSにおいて、文字コードの問題は重要です。

最近のシステムはUTF-8がほとんどですが、それ以外の文字コードを意図しない形で指定されることによる脆弱性が確認されています。

デフォルト設定

Laravelはデフォルトの文字コードが「UTF-8」となっています。

が、明示的に記載した方が良いだろうということで、ミドルウェアに追加します。

XSS(文字コード)対策

明示的に「‘Content-Type’, ‘charset=UTF-8’」を記載しています。これでOK!

おすすめ書籍

僕はLaravelの勉強をするのに以下の書籍を購入しました。おすすめですよ!

まとめ

セキュリティ対策は難しいっすね。。

よくシステム構成を考えずにやたらめったらセキュリティ対策をしようとする人がいるんですけど、それってなんか違いますよね。

現状のシステム構成をしっかりと理解し、どういった攻撃が防げないかを攻撃者目線で考える必要があると思うのです。

ということでまた会いましょう!

超簡単に解説!Laravelでのセキュリティ対策!
フォローしてもらえると泣いて喜びます