SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



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



:: Buchempfehlung ::

Der CSS-Problemlöser

Der CSS-Problemlöser zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP Grundlagen
Hilfe Community Kalender Heutige Beiträge Suchen

PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 22.09.2007, 00:54:06
JuliusCaesar JuliusCaesar ist offline
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
Mit Zitat antworten
  #2  
Alt 22.09.2007, 01:27:11
feuervogel feuervogel ist offline
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
Mit Zitat antworten
  #3  
Alt 22.09.2007, 17:12:43
JuliusCaesar JuliusCaesar ist offline
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?
Mit Zitat antworten
  #4  
Alt 22.09.2007, 17:43:55
defabricator defabricator ist offline
Senior Member
 
Registriert seit: Sep 2007
Ort: Potsdam
Alter: 55
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"44); 
Zitat:
Zitat von JuliusCaesar Beitrag anzeigen
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_connecthostuserpass );
mysql_select_db(db$link);
$safe mysql_real_escape_string($input$link); 

Geändert von defabricator (22.09.2007 um 17:46:44 Uhr)
Mit Zitat antworten
  #5  
Alt 23.09.2007, 03:05:17
JuliusCaesar JuliusCaesar ist offline
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)
Mit Zitat antworten
  #6  
Alt 24.09.2007, 18:22:50
defabricator defabricator ist offline
Senior Member
 
Registriert seit: Sep 2007
Ort: Potsdam
Alter: 55
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'])); 
Mit Zitat antworten
  #7  
Alt 24.09.2007, 21:54:04
JuliusCaesar JuliusCaesar ist offline
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?
Mit Zitat antworten
  #8  
Alt 24.09.2007, 22:43:36
defabricator defabricator ist offline
Senior Member
 
Registriert seit: Sep 2007
Ort: Potsdam
Alter: 55
Beiträge: 1.020
AW: mysql_real_escape_string

Nein, das tut es nicht.
http://www.php.net/sprintf
Mit Zitat antworten
  #9  
Alt 12.05.2009, 15:30:05
ukd2706 ukd2706 ist offline
Anfänger
 
Registriert seit: May 2009
Alter: 52
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 Beitrag anzeigen
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
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

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.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 11:36:37 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt