mysql_real_escape_string + sonstige "Sicherheiten"

Coach

Aktives Mitglied
Hallo,

ich möchte meine Webseite sicherer im Hinblick auf Angriffe von Außen verbessern.
Dabei bin ich gerade auf mysql_escape_string gestoßen.
Sehe ich das richtig, dass eine solche Überprüfung nur für Einträge und nicht für Abfragen gemacht ist?
Welche weiteren sicherheitsrelevanten Aspekte sollte ich noch beachten?
 
mysql_escape_string() Diese Funktion ist seit PHP 4.3.0 veraltet.
benutze daher lieber
mysql_real_escape_string()
Und dies funktioniert auch bei einen SELECT
zudem sollte REGISTER_GLOBALS off sein
alle GET/POST Parameter prüfen auf string/int u.s.w.
und in einer neue Variable abspeichern.
 
danke,
ich meinte natürlich mysql_real_escape_string
hab das auch so in der Überschrift :)

was ist der Unterschied zwischen:

insert into .. values ('".mysql_real_escape_string($variable)."')
und einem

VALUES(%d)", $variable



was muss ich eigentlich alles ändern, um meine Webseite auf die Codierung UTF-8 umzustellen?
 
QUOTE was ist der Unterschied zwischen:

insert into .. values ('".mysql_real_escape_string($variable)."')
und einem

VALUES(%d)", $variable


mysql_real_escape_string() ist nur zur Behandlung von Strings gedacht, nicht von Integern

Das zweite Codebruchstück steht möglicherweise im Zusammenhang mit sprintf() o.ä. - "%d" steht hierbei für einen Integer. Du kannst bei Integer aber auch intval() verwenden.


QUOTE was muss ich eigentlich alles ändern, um meine Webseite auf die Codierung UTF-8 umzustellen?


Ich hatte hier mal einige Punkte zusammengestellt:

http://notizen.joergkrusesweb.de/n-2008-9/...lung-utf-8.html

Edit:

QUOTE mysql_real_escape_string() ist nur zur Behandlung von Strings gedacht, nicht von Integern


Damit beziehe ich mich auf die Verwendung als Integer in der SQL-Abfrage - also z.B. in "SELECT * FROM table WHERE id = $variable" - hier muss $variable vorher mit intval() o.ä. geprüft werden
 
Schau dir mal PDO an..

Betreffend UTF-8; Kommt ganz darauf an wie weit der Server schon dafür vorbereitet ist, bzw. welche Rechte du darauf hast.
 
habs hinbekommen
musste in der httpd.conf noch einstellen, dass das default_charset utf-8 ist :). Danke dafür schon mal!

Jetzt noch ne Frage zu dem mysql_real_escape_string:
Was bewirkt dieses sprintf()? Ich verstehe da die Doku nicht wirklich.
Benötige ich das im Hinblick auf das Thema Sicherheit?
 
In der PHP.ini hats auch noch ein Defaultcharset..

Zudem sollte natürlich auf dem Betriebssystem der entsprechende Zeichensatz vorhanden sein
wink.gif
 
QUOTE (Coach @ Fr 24.10.2008, 08:37) Jetzt noch ne Frage zu dem mysql_real_escape_string:
Was bewirkt dieses sprintf()? Ich verstehe da die Doku nicht wirklich.


Das stellt sicher, dass $variable ein Integer ist und nicht ein Code, der die Abfrage ändert:


CODE sprintf("SELECT * FROM table WHERE id = %d", $variable)



QUOTE Benötige ich das im Hinblick auf das Thema Sicherheit?


Jain - du kannst wie gesagt zur Überprüfung von Integern auch intval() verwenden oder noch besser allgemein Prepared Statements (siehe Alonsos Link)
 
Zurück
Oben