Çıkış Asla htmlspecialchars()
geçti olmamıştır ve bitirdiniz HTML akışına olursa olsun herhangi bir veri bit. Basit kuralı, takip edilmesi kolay, tamamen herhangi bir XSS riskini ortadan kaldırmaktadır.
Bir programcı olarak, your iş olsa, bunu yapmak için var.
Tanımlayabilirsiniz
function h(s) { return htmlspecialchars(s); }
htmlspecialchars()
PHP dosya başına 100 kez yazmak için çok uzun ise. Öte yandan, kullanılarak htmlentities()
hiç gerekli değildir.
Anahtar nokta: kod vardır, ve veri yoktur. Eğer ikisini birbirine karıştırmak ise, kötü şeyler doğmak.
HTML durumunda, kod adları, varlıkları, yorum niteliği, unsurlar. Veri her şey. Veri must kodu için yanlış önlemek için öncelenmesi.
URL'lerin durumunda, kod düzeni, ana bilgisayar adı, yol, sorgu dizesi mekanizması (?
, &
, =
, {[olduğunu (3)]}). Parametre adları ve değerleri: Veri sorgu dizesinde her şeydir. Onlar must kodu için yanlış önlemek için öncelenmesi.
HTML gömülü URL'ler must iki kat ile (URL-kaçan and HTML-kaçan) öncelenmesi kod ve veri düzgün ayrılmasını sağlamak.
Modern tarayıcılar yararlı bir şeye inanılmaz kırık ve yanlış biçimlendirme ayrıştırma yeteneğine sahiptir. Bu özellik de, stresli olmamalıdır. Şey çalışmak olur ki aslında bunu yapmak için iyi ya da doğru olduğu anlamına gelmez (olmadan <a href>
URL'ler gibi HTML-kaçan uygulanan uygun). XSS bir sorun olduğunu kökleri a) veri / kod (yani) "kaçan" ayrılık ya da özensiz olanlar ve habersiz insanlar b) kaçmaya gerek yok hangi veri parçası konusunda zeki olmaya çalışan insanlar.
Eğer kategoriler a) ayrılır ve b) yok emin olun eğer XSS önlemek için yeterince kolaydır.