dedlfix: Allgemein: Wie PHP&MySQL sicher machen?

Beitrag lesen

echo $begrüßung;

Das Stichwort, über dass du dich informierst, lautet SQL Injection.
kann man das nicht einfach durch 'htmlspecialchars()' unmöglich machen?

Nein, kann man nicht, da htmlspecialchars() im Normalfall kein ' kodiert und außerdem noch andere Zeichen nicht berücksichtigt, die in einem SQL-String-Wert besonders gekennzeichnet werden müssen. Außerdem ist es sehr ungünstig, beispielsweise ein " statt eines " in der Datenbank stehen zu haben, weil es Berechnungen wie die Ermittlung der String-Länge unmöglich macht. " hat 6 Zeichen, " ist nur eins. Außerdem sind die Daten dann nicht mehr geeignet, an andere Medien als HTML ausgegeben zu werden.

man will ja sowieso kein html im passwort oder im username, und auch sonst nie html das der anwender eingegeben hat.

Die Frage lautet: _Wo_ will man das HTML nicht haben? Im HTML-Code der eigenen Seite will man das nicht haben, weil das die Seite verunstaltet und zu XSS führen kann. Aber in der Datenbank ist HTML-Code unschädlich.

Generell ist es einfach und übersichtlich, solange wie möglich mit Rohdaten zu arbeiten und Kodierungen und Maskierungen erst dann vorzunehmen, wenn die Daten in einen anderen Kontext (in ein SQL-Statement, in HTML-Code, usw.) gebracht werden müssen. Dann sollte man aber die zum Kontext passende Kodierung/Maskierung verwenden.

echo "$verabschiedung $name";