読者です 読者をやめる 読者になる 読者になる

杉にゃんはヒトじゃん

なので猫の手はここには無いです

CSRF保護を怠ってLaravelにPOSTを拒否された件

Laravel PHP

早速つまづきました、ええ。

LaravelではデフォルトでCSRF対策がついているとのこと。Webアプリケーションの脆弱性を突いて送られた不正なリクエストを拒否するのが目的です。

そのため、Laravelを用いたサーバにPOSTやPUT,DELETEを送信する場合、基本的にはCSRF対策用に生成したトークンを併せて送信しないと拒否される模様。

f:id:t-suginyan:20170302194135j:plain

じゃあどうすれば良いのかというと、formに以下のような記述を追加することでトークンを埋めこめます。

<form action="post>
  {{ csrf_field() }}
  ...
</form>

これをHTMLヘルパーとやらが書き換えてくれます。

<form action="post>
  <input type="hidden" name="_token" value="xxxxxxxx">
  ...
</form>

Ajax通信とかはCSRF保護から除外しなければならないらしいですが、自サイト内のPOSTはひとまずこれで良さそう。