Welcher Anti-SQL-Injection-Code ist sicherer?

07/13/2010 20:45 ooCheateroo#1
Ich beschäftige mich schon seit längerem mit Privatserver HPs, nun meine Frage:
Was ist sicherer?

PHP Code:
<?php
function anti_injection($sql) {
   
$sql preg_replace(sql_regcase("/(from|select|insert|delete|where|drop table|show tables|#|\*|--|\\\\)/"),"",$sql);
   
$sql trim($sql);
   
$sql strip_tags($sql);
   
$sql addslashes($sql);
   return 
$sql;
}

$username anti_injection($_POST["username"]);

//...mysql_query usw...
?>
oder aber

PHP Code:
<?php
$username 
mysql_real_escape_string($_POST["username"]);

//...mysql_query usw...
?>
Danke für eure Antworten ;-)
Freue mich schon...

mfg, ooCheateroo
07/13/2010 20:52 kaiN_92#2
der real_escape_string

der obere is a) langsamer und b)vertrau ich selbst auf den real_escape_string
07/13/2010 21:50 Fratyr#3
Quote:
Originally Posted by kaiN_92 View Post
der real_escape_string

der obere is a) langsamer und b)vertrau ich selbst auf den real_escape_string
Punkt b ist wohl der Grund warum viele Websites defaced werden und die Coder hinterher
weinen das sie ja so sehr auf sicherheit gesetzt haben. Im Ernst, der real_escape_string
ist nicht gerade das gelbe vom ei....

Und zum ersten Code. Was passiert wenn du einen zu HTML geparsten BB Code in
eine DB eintragen willst? Was bringt es dir den Query zu trimen? Rein garnichts...
Nachdenken mein Lieber, ob das wirklich alles gebraucht wird. Diese Anti SQL Injectionen
müssen von Fall zu Fall unterschiedlich behandelt werden, und nicht alle gleich.
07/14/2010 22:25 Computerfreek#4
ich benutze immer real_escape_string in kombination mit htmlspecialchars
07/15/2010 09:47 ooCheateroo#5
Quote:
Originally Posted by Computerfreek View Post
ich benutze immer real_escape_string in kombination mit htmlspecialchars
Is naturlich auch ne Möglichkeit^^
Ich glaube ich benutze dann doch eher die erste Variante, da man da die Befehle einfach gelöscht werden...
Danke an euch ;)
07/19/2010 14:22 mydoom#6
nur mal so gefragt: warum nutzt ihr nicht einfach Prepared Statements?