BoraN7
BoraN7 Veritabani, verinin ne olduğu ile ilgilenmez. DB’ye kaydederken değil, veriyi basarken Purifier kullanın
Normal veriler için; ekrana basarken zararlı kodları temizleyip basmazsınız, kodlar tamamen çalışmayacak şekilde basarsınız, yani PHP için konuşursak htmlspecialchars ile. Bu durumda adam adı kısmına <script>alert("xss")</script> yazdıysa ekrana da adı kısmında <script>alert("xss")</script> yazar. Aynı şu an benim forumda yazdığım gibi. Forum da escape yapıyor, kod çalışmıyor direkt görüyorsunuz sadece. Bunu engellemek için ne yapmanız lazım? Validation tabi ki. Adamın adı <>(&{ gibi özel karakterler içermemesi lazım. Filtrelemezsiniz, direkt engel olursunuz. Filtrelemek sizin göreviniz değil; kullanıcının veriyi düzgün girme yükümlülüğü var, siz niye adamın adını düzeltmekle uğraşasınız ki, düzgün yazsın, yazmazsa güle güle.
HTML veri olduğu zaman ise işin rengi değişiyor çünkü o veriyi çalışacak şekilde basmanız lazım ki ekranda sonuç olarak çıktıyı alabilesiniz. Bir html içerik editörü ile uğraştığınızı düşünün mesela. Bu durumda işte purifier gibi bir şey kullanarak veriyi filtrelemeniz lazım. Kaydederken filtrelemeyeceksiniz, direkt engel olacaksınız; basarken ise her ihtimale karşı filtreleyeceksiniz. Bunun standart bir yolu yok, purifier ile kendi kurallarınızı oluşturup neye izin verip vermeyeceğinizi belirlemeniz lazım.