Moin!
Also wenn die Felder "Vorname" und "Nachname" benannt sind, glaube ich den Kontext zu erkennen und kann deswegen auch auf Sonderzeichen verzichten. Daher reicht htmlentities in dem Fall IMHO aus.
Absolut falsch!
Es geht ja nicht darum, welche Daten du im freundlichen Normalbetrieb erwarten kannst, sondern welche Daten dir in feindlicher Angriffsumgebung geschickt werden.
Und da hilft dir htmlentities() kein bißchen weiter für das Escaping des SQLs! Du bist immer noch anfällig für SQL-Injections. Da hilft nur mysql_real_escape_string().
Hinterher die Namensfelder wieder in HTML zu packen ist aber natürlich ebenfalls ein Angriffspunkt. htmlspecialchars() sorgt dafür, dass alle eingegebenen Zeichen auch exakt wieder so im Text der Seite auftauchen - und nicht als HTML-Tags fehlinterpretiert werden.
- Sven Rautenberg
"Love your nation - respect the others."