Alexander (HH): Sicherheit in der Abfrage

Beitrag lesen

Moin Moin!

Wenn wir schon über alte APIs reden: PHP hat DB-Interfaces, die mit Prepared Statements umgehen können. Damit ist SQL Injection UNMÖGLICH.

intval() ist nicht der sauberste Ansatz, das hast Du selbst schon teilweise erklärt: intval() liefert keinen brauchbaren Fehlerstatus, deswegen mußt Du in der DB ausbaden, was Du in PHP verbockt hast. Erschwerend kommt hinzu, dass intval() gelegentlich auch 1 als FEHLERSTATUS liefert. (Ich will gar nicht wissen, welche Drogen man sich einwerfen muß, um auf eine derart abgedrehte API zu kommen.)

Da PHP reguläre Ausdrücke beherrscht, sollte vor der Übergabe des Parameters an die DB-Schnittstelle überprüft werden, ob der Parameter dem erwarteten Muster entspricht. In diesem Fall wohl /[1]+$/ oder meinetwegen /[2][0-9]*$/

Alexander

--
Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".

  1. 0-9 ↩︎

  2. 1-9 ↩︎