BoraN7
Buna bakabilirsiniz:
https://github.com/ezyang/htmlpurifier
Burada şöyle bir durum var. Güvenlik veri girişinde değil çıkışında sağlanmalı. Ekrana basılan verinin güvenliğinden emin olabilirsiniz ama girilen verinin güvenliğinden, bozulup bozulmadığından emin olamayabilirsiniz. Kullanıcı girişine hiçbir zaman güvenilmez. Veri girilirken yapılan veri temizleme işlemi verinizin yapısını bozabilir, istemediğiniz değişiklikler yapabilir ve kullanılabilir özelliğini yitirebilir. Bu durumda tüm olasılıklara göre veriyi temizleyen kurallar yazmanız gerekebilir.
Normalde kullanıcının HTML girmesine izin vermemeniz gerekiyor ama girmesi gereken yerler elbette olabilir. Eğer çok kompleks bir HTML ihtiyacınız yoksa Markdown kullanılabilir. Laravel kendi içinde https://github.com/erusev/parsedown/ kullandığı için hiçbir paket girmeden Markdown'u HTML'ye çevirebilirsiniz.
https://www.markdownguide.org/
Onun dışında yine devam etmek istiyorsanız seçeneğiniz Html Purifier. Bu iş strip_tags() vs ile çözebileceğiniz bir iş değil. XSS saldırılarının nasıl yapıldığına bakarsanız eğer filtreleme ile çok uğramanız gerekir:
https://portswigger.net/web-security/cross-site-scripting/cheat-sheet
Bir de şöyle bir şeyler var, inceleyebilirsiniz. Bu konu hakkında benim de bilgim yok, sadece isim olarak biliyorum, inceleme şansım olmadı:
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy
Ben kontrol panellerinden kompleks içeriklerin girilmesi devrinin kapandığını düşünüyorum (Eğer online HTML editörü yazmıyorsanız). Ajanslar genellikle Laravel'i CMS yazmak için kullanıyor ve müşterinin kendi sayfasını rahatça tasarlayarak yayınlayabileceği bir yapı kurmayı istiyorlar ama genellikle kullanılmıyor ve bu üstteki gibi sorunlarla başedilmesi durumuna neden oluyor. Şu demoyu incelerseniz, eğer amaç düz içerik girmek ise bence Markdown yeterli:
https://markdown-it.github.io/
Onun dışında daha esnek bir şeyler yapılacak ise CKEditor 5 kullanıp kendi pluginlerinizi yazmanız ve direkt HTML girişine izin vermemeniz gerekiyor:
https://ckeditor.com/ckeditor-5/demo/