CronJob-Service
bei SELFPHP mit ...
|
+ minütlichen Aufrufen
+ eigenem Crontab Eintrag
+ unbegrenzten CronJobs
+ Statistiken
+ Beispielaufrufen
+ Control-Bereich
Führen Sie mit den CronJobs von
SELFPHP zeitgesteuert Programme
auf Ihrem Server
aus. Weitere Infos

|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP 
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden |

22.09.2007, 00:54:06
|
Junior Member
|
|
Registriert seit: Jul 2007
Beiträge: 225
|
|
mysql_real_escape_string
Hey ich möchte diese Funktion benutzten um SQL injections zu verhindern
nun hatte eich mir das eigentlich so vorgestellt
PHP-Code:
$username = $_POST['user'];
$password = $_POST['password'];
$safe_user = mysql_real_escape_string($username);
$safe_password = mysql_real_escape_string($password);
//SQL abfrage
$sql = "SELECT * FROM user_tabelle WHERE user = '{$safe_user}' AND password = '{$safe_password}'";
$query = mysql_query($sql);
nun habe ich aber mal ein Blick ins Manual geworfen und das steht was von sprintf($query)
was ist denn der unterschied zwischen mysql_query und sprintf() ??
und habe ich da smit dem mysql_real_escape_string richtig gemacht, oder muss ich den auf die gesamte SQL Abfrage($sql) anwenden anstatt auf einzelne Variablen?
mfg Julius
|

22.09.2007, 01:27:11
|
SELFPHP Guru
|
|
Registriert seit: Jan 2004
Ort: Leipzig
Beiträge: 4.549
|
|
AW: mysql_real_escape_string
mysql_query — Sendet eine Anfrage an MySQL
sprintf — Gibt einen formatierten String zurück
so stehts im handbuch.
ebenso wird im handbuch mysql_escape_string nur auf den übergebenen wert angewendet und nicht auf das gesamte sql-statement. desweiteren sollte man mysql_real_escape_string verwenden, und nicht mehr das veraltete mysql_escape_string
|

22.09.2007, 17:12:43
|
Junior Member
|
|
Registriert seit: Jul 2007
Beiträge: 225
|
|
AW: mysql_real_escape_string
Zitat:
mysql_query — Sendet eine Anfrage an MySQL
sprintf — Gibt einen formatierten String zurück
|
jop das hab ich auch gelesen, aber ich weiß leider immer noch net genau, was das Handbuch unter einem "formatierten" string versteht
(heißt dass, dass der irgendwie farblich hervorgehoben ist, oder sind alle bösartigen eingaben darin geparset?)
wenn ich dich richtig verstehe, senden sprintf gar keine anfrage an den SQL server, sondern gibt lediglich eine "formatierte" query aus (was auch immer das ist...)
Zitat:
ebenso wird im handbuch mysql_escape_string nur auf den übergebenen wert angewendet und nicht auf das gesamte sql-statement. desweiteren sollte man mysql_real_escape_string verwenden, und nicht mehr das veraltete mysql_escape_string
|
also ist meine oben gepostete Vorgehensweise richtig oder?
|

22.09.2007, 17:43:55
|
Senior Member
|
|
Registriert seit: Sep 2007
Ort: Potsdam
Alter: 54
Beiträge: 1.020
|
|
AW: mysql_real_escape_string
sprintf() gibt eine Zeichenkette zurüc,
mysql_query() sendet eine Zeichenkette an einen Mysql Server.
"Formatiert" heißt in diesem Fall: Entsprechend dem übergebenen Format; der erste Parameter ist das Format
PHP-Code:
$string = sprintf("%d %07d", 4, 4);
Zitat:
Zitat von JuliusCaesar
also ist meine oben gepostete Vorgehensweise richtig oder?
|
$user und $password sind überflüssig. Aber davon abgesehen, ja.
Noch besser ist es, wenn Du die Verbindungsresource benutzt.
PHP-Code:
$link = mysql_connect( hostuserpass ); mysql_select_db(db, $link); $safe = mysql_real_escape_string($input, $link);
Geändert von defabricator (22.09.2007 um 17:46:44 Uhr)
|

23.09.2007, 03:05:17
|
Junior Member
|
|
Registriert seit: Jul 2007
Beiträge: 225
|
|
AW: mysql_real_escape_string
csho, ich glaube jetzt habe ich verstanden
ist das so sicher?
PHP-Code:
// Die Auswirkungen von magic_quotes_gpc zurücksetzen, sofern die // Option eingeschaltet ist if(get_magic_quotes_gpc()) { $nic_u = stripslashes($_POST['nic']); $email_u = stripslashes($_POST['email']); $pw1_u = stripslashes($_POST['password']); $pw2_u = stripslashes($_POST['password2']); } else { $nic_u = $_POST['nic']; $email_u = $_POST['email']; $pw1_u = $_POST['password1']; $pw2_u = $_POST['password2']; } $nic = mysql_real_escape_string($nic_u, $con); $email = mysql_real_escape_string($email, $con); $pw1 = mysql_real_escape_string($pw1, $con); $pw2 = mysql_real_escape_string($pw2, $con);
oder sollte ich noch etwas anderes beachten?
zusätzlich werde ich noch den cracker tracker installieren
doppelt hält besser^^
Geändert von JuliusCaesar (23.09.2007 um 03:48:25 Uhr)
|

24.09.2007, 18:22:50
|
Senior Member
|
|
Registriert seit: Sep 2007
Ort: Potsdam
Alter: 54
Beiträge: 1.020
|
|
AW: mysql_real_escape_string
Du hast nur bei der ersten mysql_real_escape_string zeile das _u richtig angehängt, bei den anderen Variablen aber vergessen. Das ist immer ein Problem, wenn man unnötige Variablen erzeugt.
PHP-Code:
function mysql_smart_quote($mysql, $s) { if (get_magic_quotes_gpc()) { trigger_error('stupid magic_quotes_gpc active', E_USER_NOTICE); $s = stripslashes($s); } return mysql_real_escape_string($s, $mysql); }
$sql = sprintf("INSERT INTO xyz (x,y,z) ('%s','%s','%s')", mysql_smart_quote($mysql, $_POST['nic']), mysql_smart_quote($mysql, $_POST['email']), mysql_smart_quote($mysql, $_POST['password1']));
|

24.09.2007, 21:54:04
|
Junior Member
|
|
Registriert seit: Jul 2007
Beiträge: 225
|
|
AW: mysql_real_escape_string
hm deine methode wirkt auf den ersen blick komplizierter...
die funktion verstehe ich, aber nicht was danach kommt
warum nimmst du wieder sprinf?
hätte es nicht auch
PHP-Code:
$sql = "INSERT INTO xyz (x,y,z) ('%s','%s','%s')";
getan?
|

24.09.2007, 22:43:36
|
Senior Member
|
|
Registriert seit: Sep 2007
Ort: Potsdam
Alter: 54
Beiträge: 1.020
|
|
AW: mysql_real_escape_string
|

12.05.2009, 15:30:05
|
Anfänger
|
|
Registriert seit: May 2009
Alter: 51
Beiträge: 1
|
|
AW: mysql_real_escape_string
Hallo Zusammen,
bin neu im Forum und eher PHP-Anfänger. Die Anweisungen von defabricator habe ich ja soweit verstanden, nur bin ich mir bei "$mysql" nicht so sicher, was diese Variable beinhalten soll. Ist das die Verbindung zur Datenbank und wenn ja, wieso muss dann diese jedesmal aufgemacht werden, macht man das nicht nur 1x vorher?
Zitat:
Zitat von defabricator
Du hast nur bei der ersten mysql_real_escape_string zeile das _u richtig angehängt, bei den anderen Variablen aber vergessen. Das ist immer ein Problem, wenn man unnötige Variablen erzeugt.
PHP-Code:
function mysql_smart_quote($mysql, $s)
{
if (get_magic_quotes_gpc())
{
trigger_error('stupid magic_quotes_gpc active', E_USER_NOTICE);
$s = stripslashes($s);
}
return mysql_real_escape_string($s, $mysql);
}
$sql = sprintf("INSERT INTO xyz (x,y,z) ('%s','%s','%s')",
mysql_smart_quote($mysql, $_POST['nic']), mysql_smart_quote($mysql, $_POST['email']), mysql_smart_quote($mysql, $_POST['password1']));
|
Freundliche Grüße
Uwe
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Themen-Optionen |
|
Ansicht |
Linear-Darstellung
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 21:16:34 Uhr.
|