Ich habe eine Weile mit einem kleinen Problem zu kämpfen. Es ist seit Jahren dort, aber es war nur ein lästiges Problem und kein ernstes, und ich habe gerade daran gearbeitet. Aber jetzt möchte ich herausfinden, ob mir jemand helfen kann. Ich habe etwas googlen gemacht, aber keinen Erfolg.
Wenn ich einen Formularpost von einem HTML-Textbereich in einer PHP-Datei wie folgt mache:
%Vor%und natürlich gibt es einen Absenden-Button und so weiter.
Der Wert ist das Problem: <a href="http://google.com">google's site</a>
Der Wert des Textbereichs hat sowohl "(Anführungszeichen) als auch" (Apostroph).
Um dies in einer mysql_database zu speichern, mache ich das:
%Vor%Und jetzt bekomme ich den mysql Fehler:
Sie haben einen Fehler in Ihrer SQL-Syntax; Überprüfen Sie das Handbuch, das Ihrer MySQL-Serverversion entspricht, nach der richtigen Syntax, um die near-Site in Zeile 1 zu verwenden.
Ihre SQL-Zeichenfolge lautet:
%Vor%Was keine gültige Aussage ist. Wie Nanne schrieb, entkomme die Zeichenfolge zumindest mit mysql_real_escape_string: Ссылка
Und lesen Sie über SQL-Injektion Ссылка
Denken Sie ein bisschen nach: Wenn jemand dies postet: $_POST['text']
mit Wert: ');delete from table;....
Sie können sich von Ihren Daten verabschieden:)
Immer Filter / Escape-Eingabe!
EDIT: Ab PHP 5.5.0 sind mysql_real_escape_string und die mysql-Erweiterung veraltet. Bitte verwenden Sie stattdessen mysqli extension und mysqli :: escape_string function
Verwenden Sie immer mindestens mysql_real_escape_string, wenn Sie vom Benutzer bereitgestellte Werte in die Datenbank einfügen. Sie sollten sich die Bindungsparameter oder mysqli ansehen, damit Ihre Abfrage zu:
wird %Vor%Und? würde nach der Bereinigung der Eingabe durch den tatsächlichen Wert ersetzt.
In Ihrem Fall verwenden Sie:
%Vor%Lesen Sie SQL Injection. Es lohnt sich, sofort so schnell wie möglich zu machen!
Ich habe mich auch über Charaktere gekümmert, als ich Daten in MySQL aktualisiert habe.
Aber ich kam schließlich zu einer besseren Antwort, Hier ist:
%Vor%Und wenn Sie Ihre Datenbank aktualisieren, aktualisiert das System sie nur, wenn Sie die MySQL REAL Escape-Zeichenfolge verwenden. Hier:
%Vor%Dann werden Sie die Abfrage sicher aktualisieren.
%Vor%Weitere Informationen finden Sie in MYSQL_REAL_ESCAPE_STRING
Hoffnung, die hilft
Tags und Links sql php mysql apostrophe