"Yeterince sanitization" nedir

3 Cevap php

Bu soru burada zaten bir cevabı var:

3 Cevap

"Yeter sanitization" iyice bahsettiğini çevre bağlıdır. MySQL için sanitization entirely separate web çıkışı için sanitasyonuyla itibaren düşünülmelidir ve sorunsuz bir sürü önlemek için onları ayrı ayrı ele gerekir.

Sanitizing for MySQL

  • mysql_real_escape_string() bir parça veri dezenfekte ve bir SQL sorgusu içine koymak için güvenli yapacaktır.
  • Böyle dize içinde HTML etiketleri gibi kötü niyetli veri, başka tür, kesinlikle göz ardı edilmelidir. Eğer veritabanından dışarı aldıktan sonra daha sonra "un-manipüle" etmeye çalışmak gibi burada işlemek için çalışılıyor baş ağrısı götürecektir. Kötü "web veri" veritabanı zarar veremez.

Sanitizing for output

  • htmlspecialchars($val) çıktı zamanında, işlenen herhangi bir kötü niyetli etiketleri önlemek çünkü < ve > karakter kendi varlık sunumlarını dönüştürülür ve etiket sınırlayıcı olarak işlenmez.
  • Böyle <input name="email" value="<?php echo htmlspecialchars($email,ENT_QUOTES); ?>" /> gibi, bir HTML elemanın alıntı niteliği içeride bir şey çıktısı ise ENT_QUOTES değiştirici kullanmak

Özel gereksinimleri vardır sürece Yani, ihtiyacınız olan tüm olmalıdır. O kötü oluşturulan HTML ile aldatmasın edilebilir gibi strip_tags(), gerçekten temizlenmesi için kullanılmamalıdır. Sanitization gereken bir hedef olduğunu ve ayrı ayrı kendi bağlamları tutabilir eğer, aralarında veri işleme ile daha az sorunlar koşacağız.

Bunun yerine strip_tags üzerinde sayma dize htmlentitiesi () () çağırmak için muhtemelen daha güvenli ve daha iyi.

strip_tags () '"& gibi html özel karakter kaldırmaz

örneğin, kod ise:

<img src="<?= strip_tags($myVar) ?>">

ve

$myVar = '">something goes here<';

o zaman ile sonuna kadar:

<img src="">something goes here<">

Hangi çok açık bir XSS deliğinin köküdür; istismar gerçek bir okuyucu için bir alıştırma olarak bırakılmıştır.

Ben başlangıçta Frank'in cevabı upvoted, ancak bir sorun düşündüm: () Bu ve benzeri yasal adresler kıracak htmlentities:

http://www.mywebsite.com/profile?id=jojo&w=60&h=60

+ Mysql_real_escape belki sıyırma açılı ayraçlar yeterli olur mu?