Herkese merhaba arkadaşlar bu gün sizlere Laravelin 419 hatası hakkında bilgi vermek istiyorum. Bilindiği gibi normal PHP ile kod yazarken bir çok güvenlilik önemlerini kendimiz alması gerekiyordu. Yanlız Laravel sonrasında arkadaşlar bunu bizim yerimize yapmış ve güvenlilik önemlerini almışlar. Bu zaman form içerisinde kullanılan tek kod @csrf oldu. Peki
@csrf nedir? ne iş yapar?
Hackerlerin
SQL'e sızma işlemleri bilindiği gibi post ve get sorğularıyla yapılıyor ve bu zaman güvenlilik önlemleri alınmamışsa eğer gönderilen her post ve ya get sorğuları
SQL'e iletiliyordu.
SQL'de soruya göre bir cevap veriyordu tabii ki de. Örneğin insert update ve ya her hangi bir işlem ola bilirdi. Güvenlilik işlemleri şu şekilde yapıla biliyorduki, mesala bir form post işleminde insert ve ya update işlemi yapılacaksa eğer, her hangi bir inputa javascriptscript kodları yazılıyodu. Bizde php'de bu sorğudan gelen değeri hazır php funksiyonu olan
strip_tags() isimli bir funksiyondan geçirib insert ediyorduk ki, bu fonksiyonda ismindende anlaşıldığı gibi tagları silerek yanlızca yazıyı SQL'e insert ediyodu. Laravelin
@csrf mantığı ise sorğu zamanı iletilen kodu string'e çevirerek SQL'e insert ediyo ve laravel sintaksisiyle yani
{!! !!} yazılmadığı sürec o kod sadece string olarak görülüyor olacakdı. Yani biz sadece o kodu kendimiz bir yerlerde yaza bilir ve istedigimiz yerde çalıştırmamaızı sağlaya biliriz, başka birisi her hangi bir kod yazarsa bile, mesala birisi kullanici adini
<script> alert('Mesaj'); </script>
Yukardakı gibi yazdığını düşünürsek, o kullanıcının bide ana sayfada gösterildiğini düşünürsek her defa karşımıza alert mesajı çıkardı. Ancak laravel sayesinde bu kod sadece string olarak görüldüğü için biz istemediğimiz süreç çalışmayacaktır.
419 Hatası nedir?
Form işlemi yaptığınız zaman eğer
@csrf yazmayı unutduysanız bu hata ile karşılaşa bilirsiniz. Yapmanız gereken sadece
<form> @csrf ....... </form>
Yukarda gösterildiği gibi
form Tagları arasına
@csrf kodunu atmak olacaktır.
Eğer bu kod olduğu halde yinede hata alıyorsanız başka bir yöntemi uyğulaya bilirsiniz. Bilindiği gibi laravelin açtığı kullanıcı
session nerdeyse 120 dakika sonra kapaniyor. Eğer bir kullanıcı adıyla giriş yapıp form başında hiç bir şey yapmadan kalırsanız sonra yeniden sayfa yenilemeden form işlemi yapmaya çalışırsanız bu hatayla karşılaşmanız mümkün. Bunun için yapmanız gereken tek şey sayfayı yenileyip yeniden giriş yaparak form işlemini yapmanızdır.