Tüm POST ve GET değişkenlerini tek bir işlevle etkin bir şekilde kolayca temizlemenin bir yolunu bulmaya çalışıyorum. İşte fonksiyon kendisidir:
//clean the user's input
function cleanInput($value, $link = '')
{
//if the variable is an array, recurse into it
if(is_array($value))
{
//for each element in the array...
foreach($value as $key => $val)
{
//...clean the content of each variable in the array
$value[$key] = cleanInput($val);
}
//return clean array
return $value;
}
else
{
return mysql_real_escape_string(strip_tags(trim($value)), $link);
}
}
Ve burada çağırır kod: çalışması lazım gibi Bana göre
//This stops SQL Injection in POST vars
foreach ($_POST as $key => $value)
{
$_POST[$key] = cleanInput($value, $link);
}
//This stops SQL Injection in GET vars
foreach ($_GET as $key => $value)
{
$_GET[$key] = cleanInput($value, $link);
}
bu görünüyor. Ama bir sebepten ötürü bir formda sahip olduğum bazı onay kutularından dizileri döndürmeyecek. Boş çıkıyorlar.
Yukarıdaki işlevleri kullanmadan kodumu test ettim ve iyi çalışıyor, sadece oraya eklenmiş biraz güvenlik istiyorum.
Teşekkürler!
Her içerik için her şeyi temizlemeye çalışmaktan kaçınmalısınız. Bu, yalnızca uygulamanızı engeller ve kayıp işlevselliği yeniden oluşturmak istediğinizde güvenliği zorlaştırır. Bu, magic_quotes'un devre dışı bırakılmasının geçerli bir nedeni. http://php.net/manual/en/security.magicquotes.php Burada bir anlamda yeniden yarattığınız bir şey. Girdiğin uygulama için girdinin dezenfekte edilmesi gerekiyor. Tarayıcıya HTTP üzerinden gönderiyorsanız, bunu HTTP ve HTML için dezenfekte edin. SQL DB'ye gönderiyorsanız, bunu SQL için dezenfekte edin. – bucabay
Üzgünüm, kullanımdan kaldırıldım: http://php.net/manual/en/security.magicquotes.php – bucabay
Yardım/öneri için teşekkürler! Süreci yeniden gözden geçirmem gerekiyor gibi görünüyor. :-) – tscully