İlk olarak, Drupal API'sında bunları okuyun:
Dolayısıyla check_plain()
, HTML'de ( <
ve gibi &
) özel bir anlamı olan özel karakterleri , daha sonra bir sayfanın parçası olarak görüntülenen bu dizgi kelimesi kelimesine (HTML olarak yorumlanmaz) oluşturulmasını sağlayacak düz metin varlıklarına ( sırasıyla <
ve &
sırasıyla) kodlar . HTML işaretleme. İşlev, filter_xss()
siteler arası komut dosyası oluşturma (XSS) güvenlik açıklarını önlemek için bir HTML dizesini filtreler. Dört şey yapar:
- Tarayıcıları kandırabilecek karakterleri ve yapıları kaldırma
- Tüm HTML öğelerinin iyi biçimlendirildiğinden emin olma
- Tüm HTML etiketlerinin ve özelliklerinin iyi biçimlendirildiğinden emin olma
- Hiçbir HTML etiketinin izin verilmeyen bir protokole sahip URL'ler içermediğinden emin olun (örn.
Her iki işlev de, veriler sitenizde oluşturulmadan önce kullanıcı enjeksiyonunun etkisiz hale getirildiğinden emin olmak için kullanıcılardan gelen verileri sterilize etmek için kullanılır .
Sen asla geçemez aynı dizeyi aracılığıyla hem .
Eğer kullanırsanız check_plain()
o zaman işleve iletilen dize olarak kullanılacak gerekiyordu düz metin (değil HTML). O zaman filter_xss()
gerekli değildir, çünkü check_plain()
her zaman dize düz metin yapar.
Eğer kullanırsanız filter_xss()
, o zaman işleve iletilen dize HTML olması gerekiyordu, ve check_plain()
irade karışıklık o kadar.
Örnek olarak kullandığınız şablona baktığımda, bana iletilen üç alanın tümü print()
zaten sterilize edilmiş ve daha fazla sanitasyona ihtiyaç duymayan içerikten geliyormuş gibi görünüyor .
Ancak, kullanıcı filtresini "Filtrelenmiş HTML" veya "Düz" gibi "güvenli" bir metin filtresinden geçirmeden toplayan kendi modülünüzü oluşturursanız, bu işlevleri sıhhi tesisat amaçları için kullanmanız gerekir.
filter_xss()
potansiyel tehlikeli içerik (güvenilmeyen kullanıcıdan yani içerik) den filtre XSS istiyorum, ve ne zamancheck_plain()
bir dize HTML özel karakterler kaçmak istediğinizde