Gudrun: Formulareingabe als Filter für DB Abfrage

Hallo Leute.

In mein HTML-Formular können Benutzer einen Freitext eingeben. Z.B. folgenden String:

das'ist#mein$test%e*dd,SELECT *;dfds

Nun wird das ganze per PHP ausgewertet und als Suchstring für eine DB Abfrage verwendet. Wie kann ich die Benutzereingabe sicher machen?

Bei meinem jetzigen Versuch kommt

Warning: mssql_query() [function.mssql-query]: message: Falsche Syntax in der Nähe von 'ist#mein$test'. (severity 15) in ...  
Warning: mssql_query() [function.mssql-query]: message: Falsche Syntax in der Nähe von 'dfds'. (severity 15) in ...  
Warning: mssql_query() [function.mssql-query]: message: Kein schließendes Anführungszeichen nach der Zeichenfolge ' ORDER BY Nummer'. (severity 15)

Paul

  1. Hi!

    In mein HTML-Formular können Benutzer einen Freitext eingeben.
    Nun wird das ganze per PHP ausgewertet und als Suchstring für eine DB Abfrage verwendet. Wie kann ich die Benutzereingabe sicher machen?

    Indem du den Kontextwechsel beachtest.

    Warning: mssql_query() [function.mssql-query]: message: Falsche Syntax in der Nähe von 'ist#mein$test'. (severity 15) in ...

    Du verwendest also MSSQL. Dazu steht etwas im Abschnitt SQL der Fortsetzung des verlinkten Artikels. Empfehlung: nimm Prepared Statements.

    Lo!

    1. Empfehlung: nimm Prepared Statements.

      Das werd ich. Danke!

      1. Nur für den Fall, daß Dir das entgangen sein sollte, das hat nichts damit zu tun, daß es Freitext ist. In jeder Eingabe, auch in sowas wie Auswahllisten oder Radio-Buttons, selbst in welchen die in deinem Formular nicht vorgesehen sind, kann beliebiger Inhalt ankommen.