Bazı iyi PHP html (giriş) sanitizerler nelerdir?
Bir şey inşa halinde Tercihen, - ben bize öyle istiyorum.
UPDATE:
Istek başına, yorum yoluyla, girdi not HTML izin vermelidir (ve açıkçası vb XSS ve SQL Injection önlemek).
html temizleyici -> http://htmlpurifier.org/
Ben her zaman PHP'nin addslashes () ve stripslashes () fonksiyonları kullanılır, ama ben de sadece dahili filter_var () işlevini gördü (link). Epeyce built-in filters var gibi görünüyor.
Eğer diyelim kullanmak bir sorgu çalıştırmak istiyorsanız $_GET['user']
güzel bir çözüm kullanarak böyle bir şey yapmak olacaktır mysql_real_escape_string():
<?php
$user = mysql_real_escape_string($_GET['user']);
$SQL = "SELECT * FROM users WHERE username = '$name'";
//run $SQL now
...
?>
Bir veritabanında bir metin depolamak ve daha sonra bir web sayfasında yazdırmak istiyorsanız, kullanmayı düşünebilirsiniz htmlentities
[Düzenle] Yoksa awshepard gibi addslashes() kullanın ve stripslashes() fonksiyonları [/ Düzenle], dedi
XSS saldırıları önlemek için geldiğinde burada sanitizasyona küçük bir örnek:
<?php
$str = "A 'quote' is <b>bold</b>";
//Outputs: A 'quote' is <b>bold</b>
echo $str;
// Outputs: A 'quote' is <b>bold</b>
echo htmlentities($str);
// Outputs: A 'quote' is <b>bold</b>
echo htmlentities($str, ENT_QUOTES);
?>
kullanmak
$input_var=sanitize_input($_POST);
ve functions aşağıda, neredeyse u gerek everthing sterilize
function sanitize($var, $santype = 1){
if ($santype == 1) {return strip_tags($var);}
if ($santype == 2) {return htmlentities(strip_tags($var),ENT_QUOTES,'UTF-8');}
if ($santype == 3)
{
if (!get_magic_quotes_gpc()) {
return addslashes(htmlentities(strip_tags($var),ENT_QUOTES,'UTF-8'));
}
else {
return htmlentities(strip_tags($var),ENT_QUOTES,'UTF-8');
}
}
}
function sanitize_input($input,$escape_mysql=false,$sanitize_html=true,
$sanitize_special_chars=true,$allowable_tags='<br><b><strong><p>')
{
unset($input['submit']); //we kullanmak 'submit' variable for all of our form
$input_array = $input;
//array is not referenced when passed into foreach
//this is why we create another exact array
foreach ($input as $key=>$value)
{
if(!empty($value))
{
$input_array[$key]=strtolower($input_array[$key]);
//stripslashes added by magic quotes
if(get_magic_quotes_gpc()){$input_array[$key]=sanitize($input_array[$key]);}
if($sanitize_html){$input_array[$key] = strip_tags($input_array[$key],$allowable_tags);}
if($sanitize_special_chars){$input_array[$key] = htmlspecialchars($input_array[$key]);}
if($escape_mysql){$input_array[$key] = mysql_real_escape_string($input_array[$key]);}
}
}
return $input_array;
}
Remember: Bu çok boyutlu bir dizi sterilize olmaz, u özyinelemeli olarak değiştirmeniz gerekir.