Php'de xss açığı kapatma
Merhaba arkadaşlar. Yaptığım web sitesinde xss açığı var ve kapatmak istiyorum. Şimdi benim takıldığım kısım bu açığı kapatmak için örneğin $_POST["veri"] diye post aldığımızı varsayalım. Bunu htmlspecialchars($_POST["veri"]) şeklinde kullansam xss açığını kapatmak için yeterli midir? Örneğin bu veriyi veritabanında bu şekilde filtreleyerek kaydetsem tekrar echo ile ekrana bastırırkende bu fonksiyonu kullanmam gerekir mi?
Kısaca htmlspecialchars ile veriyi veritabanına kaydetmeden filtrelersem tekrar ekrana basarken başka bir işlem yapmam gerekir mi?
SQL injection açığından kurtulmak için PDO kullanmalısın.
XSS açığından korunmak için de ekrana basacağın verileri htmlspecialchars()
ile düzenlemen yeterli.
XSS açığını doğuran şey, tarayıcının yorumlayabileceği verinin DOM'a basılması.
Yalnızca veriyi ekrana basarken buna dikkat etmen yeterli olur.
Ama eğer veritabanına htmlspecialchars()
ile eklersen, ekrana basarken tekrar htmlspecialchars()
tekrar ile düzenlemene gerek kalmaz.
Bana sorarsan veritabanında verinin orijinal halini (sql injection'dan sakınarak) saklamalısın. Sadece veriyi ekrana basarken htmlspecialchars()
ile basmalısın.