SICHERHEIT real_escape_string

ben78

Mitglied
Code:
mysql_real_escape_string()



Ich habe mich mal etwas rumgegoogelt, aber nicht erwünschtes Ergebnis gefunden.

Meine Frage - für Euch vielleicht blöde Frage - lautet, ob der obenstehende Code nur Sinnvoll ist, wenn man eine Seite hat wo sich User einloggen bzw. registrieren können.

Oder ist er in Sachen Sicherheit für jede Seite gedacht, die mit MySQL in Verbindung steht.


Ich stelle vielleicht blöde Fragen, hat aber damit zu tun, dass ich mir nicht sicher bin und in sachen php noch ganz ganz frisch bin.
 
Die Funktion ist für jegliche Anwendung mit Datenbankanbindung relevant. Vor allem dann, wenn Daten von Außen, z.B. Nutzereingaben, in einem Query vorkommen.
 
Irgendwie kommen ja alle Daten von Aussen.:-)
Von der Seite aus gesehen: Freunde machen Fehler, Feinde machen Böses,
MySQL macht da keinen Unterschied und die Funktion schützt gegen Beides :)
 
Fraglich ist doch hierbei auch, ob es sich nicht eher um "Augenwischerei" handelt, wenn User in falscher Sicherheit gewogen werden ;)

Beim Einfügen in die Datenbank wird mit einem Cross-Site-Scripting wohl nicht viel passieren....aber was passiert mit dem Script, wenn es aus der DB gelesen und auf der Webseite angezeigt wird?

Da lege ich doch mehr wert auf htmlentities bzw ;)
 
Ich versuche schon seit 4,5 Stunden diesen Code in mein PHP Script einzubetten. Aber jedes Mal bekomme ich bzgl. des Codes eine Warning...Unknown Meldung. Kann mir B I T T E einer von Euch posten an welcher Stelle im Script der Code eingebettet gehört.

PHP:
mysql_real_escape_string($user),
mysql_real_escape_string($password));

Und jetzt die dümmste Frage, die ich hier stellen kann. Aber ich genieße ja noch Anfängerbonus...hehehe:rolleyes:

In den Klammern kommt einmal $user und einmal $password vor. Bezieht sich das auf die bzw. meine Login Daten meiner MySQL-DB oder auf die User die sich auf der Seite anmelden können anmelden können?

UND

Wofür steht folgender Code? Er soll sehr wichtig für die Sicherheit sein.

PHP:
require mysql_real_escape_string($site);
 
Zuletzt bearbeitet:
Ich versuche schon seit 4,5 Stunden diesen Code in mein PHP Script einzubetten. Aber jedes Mal bekomme ich bzgl. des Codes eine Warning...Unknown Meldung. Kann mir B I T T E einer von Euch posten an welcher Stelle im Script der Code eingebettet gehört.

PHP:
mysql_real_escape_string($user),
mysql_real_escape_string($password));
Zunächst einmal ist mir etwas schleierhaft, wieso du keinen Syntax-Error kriegst. Korrekt müsste das meines Erachtens z.B. so aussehen:

PHP:
$u = mysql_real_escape_string($user);
$pw = mysql_real_escape_string($password);


Wichtig ist hierbei vor allem, dass bereits eine Verbindung zur Datenbank bestehen muss, damit mysql_real_escape_string auch funktioniert.

In den Klammern kommt einmal $user und einmal $password vor. Bezieht sich das auf die bzw. meine Login Daten meiner MySQL-DB oder auf die User die sich auf der Seite anmelden können anmelden können?
$user und $password sind Daten, die der Benutzer auf deiner Website in ein (Login-)Formular eingegeben hat, werden also höchstwahrscheinlich aus $_POST['user'] und $_POST['password' kommen. Mit den Login-Daten für die MySQL-DB hat das nichts zu tun, die wirst du ja höchstwahrscheinlich ohnehin nur in phpMyAdmin eingeben, und das schaut schon selbst, dass es sicher ist. ;)

Wofür steht folgender Code? Er soll sehr wichtig für die Sicherheit sein.

PHP:
require mysql_real_escape_string($site);
Da bin ich überfragt. Auch in der Funktionsreferenz zu [phpf]mysql_real_escape_string[/phpf] findet sich nirgendwo ein require. :confused:
 
PHP:
require mysql_real_escape_string($site);

Was das sein soll ist mir ein Rätsel.
require unterscheidet sich nur geringfügig von include und in beiden Fällen wird eine Datei und keine Funktion o.ä. inkludiert.
Folglich macht das nicht im entferntesten Sinn.

Zunächst einmal ist mir etwas schleierhaft, wieso du keinen Syntax-Error kriegst. Korrekt müsste das meines Erachtens z.B. so aussehen:
PHP:
$u = mysql_real_escape_string($user);
$pw = mysql_real_escape_string($password);

Das stimmt nur bedingt. Ich glaube er hat die zwei Zeilen nur etwas aus dem Kontext gerissen.
Das Beispiel auf der PHP Seite enthält genau diese Zeilen und da ist es dann logischerweise auch erlaubt.

Hier das Beispiel
PHP:
<?php
// Verbindung herstellen
$link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password')
    OR die(mysql_error());

// Anfrage erstellen
$query = sprintf("SELECT * FROM users WHERE user='%s' AND password='%s'",
            mysql_real_escape_string($user),
            mysql_real_escape_string($password));
?>
 
Irgendwie kommen ja alle Daten von Aussen.
Von der Seite aus gesehen: Freunde machen Fehler, Feinde machen Böses,
MySQL macht da keinen Unterschied und die Funktion schützt gegen Beides



Bei meinem Projekt können sich keine User anmelden und registrieren. Das einzige, wofür ich meine MySQL-DB brauche, sind CSV Datein mit Datensätze eines Kunden, die in einer MySQL-Tabelle gespeichert und per PHP als HTML ausgelesen werden sollen. User können dann in Form von Sucheingaben nach Datensätze suchen.

Also benötige ich doch folgenden Code NICHT für meine Website?
Code:
mysql_real_escape_string($user)
mysql_real_escape_string($password)

Ich habe folgenden Zeile in meinem PHP Script:

PHP:
$sql = "SELECT * FROM meineTabelle";

Eine Verbindung zur DB steht auch. Jetzt meine Frage:
An welcher Stelle im Script muss folgender Code impletiert werden und was kommt in die Klammern?
PHP:
mysql_real_escape_string()
 
D. h. also, dass ich dann bei meinem Zweck mit einem real_escape_string um die Sucheingaben ausreichenden Schutz in Sachen php und mysql genieße?
 
Zurück