Naja
mit preg_replace()
filter ich das HTML
mit Adslashes... ka ich hab irgendwo gelesen das man das bei SQL Abfragen machen solte
Sicherheitsfrage?
Einklappen
X
-
Warum so umständlich? Es reicht doch, für Queries mysql_real_escape_string zu verwenden, bei der Ausgabe genügt htmlspecialchars, oder nicht?
Einen Kommentar schreiben:
-
Sicherheitsfrage?
Ich hab grad ein Script programmiert, das ich jetzt absichern will.
dazu hab ich mir eine Funktion gebastelt:
PHP-Code:function filter($str)
{
$suche = array ('@<script[^>]*?>.*?</script>@si', // JavaScript entfernen
'@<[\/\!]*?[^<>]*?>@si', // HTML-Tags entfernen
'@([\r\n])[\s]+@', // Leerräume entfernen
'@&(quot|#34);@i', // HTML-Entitäten ersetzen
'@&(amp|#38);@i',
'@&(lt|#60);@i',
'@&(gt|#62);@i',
'@&(nbsp|#160);@i',
'@&(iexcl|#161);@i',
'@&(cent|#162);@i',
'@&(pound|#163);@i',
'@&(copy|#169);@i',
'@&#(\d+);@e'); // als PHP auswerten
$ersetze = array ('',
'',
'\1',
'"',
'&',
'<',
'>',
' ',
chr(161),
chr(162),
chr(163),
chr(169),
chr(1) );
$str = preg_replace($suche, $ersetze, $str);
$str = htmlspecialchars($str, ENT_QUOTES);
$str = addslashes($str);
$str = mysql_real_escape_string($str);
return $str;
}
function filter_exit($str) {
$str = stripslashes($str);
return $str;
}
ich wende das immer so an:
PHP-Code:$var1 = filter($_POST['var1']);
$var2 = filter($_POST['var2']);
$var3 = filter($_POST['var3']);
//usw
//dann wird das in MySQL eingetragen
mysql_query("INSERT INTO `******` ( `tbl1` , `tbl2` , `tbl3` ) VALUES ($var1, $var2, $var3, ) ");
.
Stichworte: -
Einen Kommentar schreiben: