php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2009

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 09.05.2009, 15:37  
Erfahrener Benutzer
 
Benutzerbild von wassereimer
 
Registriert seit: 06.04.2009
Beiträge: 105
PHP-Kenntnisse:
Anfänger
wassereimer befindet sich auf einem aufstrebenden Ast
wassereimer eine Nachricht über ICQ schicken wassereimer eine Nachricht über MSN schicken
Standard mysql_real_escape_string / Sicherheit - Was, wann und wie?

Hallo an alle.

Ich wollte fragen wann man mysql_real_escape_string und htmlspecialchars einsetzt. Desweiteren noch wie man es genau einsetzt...
Ich habe mir zwar schon etwas dazu durchgelesen, aber da habe ich so ein paar Schwierigkeiten dies zu verstehen...

Ich hoffe Ihr könnt mir da ein wenig weiter helfen.

Beispiel 1:
Ich habe ein Login Formular. Reicht es hier aus mysql_real_escape_string zu verwenden? Oder empfiehlt es sich hier noch andere Sachen zusätzlich anzuwenden?
Wann nutze ich nun mysql_real_escape_string? An der ersten Stelle wo ich die Daten verarbeite oder erst wenn es auf die Datenbank zu geht?
Und wie nutze ich diese Funktion?

PHP-Code:
$sql "SELECT name, pw FROM "$dbprefix."admin_user WHERE (name like '".$_REQUEST["nutzer"]."') AND (pw = '".md5 ($_REQUEST["passwd"])."')"
-----

Beispiel 2:
Ich habe einen WYSIWYG Editor mit dem ich etwas in die Datenbank schreiben kann. (Inhalte mit Tabellen o.ä.)
Derzeit mache ich mit den Inhalten gar nichts... Also alle Inhalte, auch wenn HTML Zeichen drin vorkommen, werden einfach so in die Datenbank geschrieben.
Sollte ich hier htmlspecialchars verwenden? Und wie nutze ich diese Funktion? Und sollte ich zusätzlich noch mysql_real_escape_string verwenden? Schließlich kann ich bei dem Editor ja auch auf Quellcode umstellen und dann jeden mist da rein schreiben...

PHP-Code:
$sql="UPDATE "$dbprefix."web_onoff SET text = '".($_POST['textfeld'])."', wert = '".($_POST['onoff'])."' WHERE id='1'"
-----

Beispiel 3:
Ich habe ein einfaches Feld (input type text). Sollte ich hier auch beides verwenden oder nur eins von beiden?

-----

Und würden diese beiden Sachen ausreichen um Sicherheitslücken zu beseitigen? Oder sollte ich noch andere Sachen zusätzlich verwenden?

Vielen Dank erstmal für eure Antworten.

Lg
wassereimer

Geändert von wassereimer (10.05.2009 um 11:09 Uhr).
wassereimer ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 09.05.2009, 15:49  
Erfahrener Benutzer
 
Registriert seit: 28.09.2008
Beiträge: 1.168
PHP-Kenntnisse:
Fortgeschritten
Koala befindet sich auf einem aufstrebenden Ast
Standard

mysql_real_escape_string wenn Du die Variable innerhalb einer mySQL-Abfrage verwendest:
htmlspecialchars wenn Du die Daten ausgibst (z.B. per echo).
Koala ist offline  
Alt 09.05.2009, 16:10  
Erfahrener Benutzer
 
Benutzerbild von wassereimer
 
Registriert seit: 06.04.2009
Beiträge: 105
PHP-Kenntnisse:
Anfänger
wassereimer befindet sich auf einem aufstrebenden Ast
wassereimer eine Nachricht über ICQ schicken wassereimer eine Nachricht über MSN schicken
Standard

Danke erstmal für deine Antwort...

Also mysql_real_escape_string wird nur in einer Abfrage verwendet, richtig?
Ich glaube mysql_real_escape_string maskiert bestimmte Zeichen, oder? Muss ich das dann wieder Rückgängig machen, wenn ich eingetragene Daten (mit mysql_real_escape_string) wieder ausgeben lassen möchte?

htmlspecialchars brauche ich also nicht verwenden wenn ich etwas in die Datenbank schreibe? Dies muss ich nur benutzen wenn ich z.b. html Sachen aus der Datenbank raus holen möchte um sie auszugeben?

Beides zusammen muss man nicht verwenden?

Gibt es noch andere Sachen die ich benutzen sollte um Sicherheitslücken zu schließen?
wassereimer ist offline  
Alt 09.05.2009, 16:12  
Erfahrener Benutzer
 
Registriert seit: 28.09.2008
Beiträge: 1.168
PHP-Kenntnisse:
Fortgeschritten
Koala befindet sich auf einem aufstrebenden Ast
Standard

Lies doch in der Doku nach oder benutz Google.
Ich hab keine Lust alles noch mal zu wiederholen.
Koala ist offline  
Alt 09.05.2009, 16:22  
Erfahrener Benutzer
 
Benutzerbild von litterauspirna
 
Registriert seit: 24.04.2008
Beiträge: 3.172
PHP-Kenntnisse:
Anfänger
litterauspirna sorgt für eine eindrucksvolle Atmosphärelitterauspirna sorgt für eine eindrucksvolle Atmosphäre
litterauspirna eine Nachricht über ICQ schicken
Standard

Htmlspecialchars benutzt du eigentlich beim Output. Beim eintragen in die Datenbank benutzt du im SQL Statement mysql_real_escape_string. Wenn du in einer Where Clausel nach Strings abfragts benutzt du auch mysql_real_escape_string. Ansonsten bein Integerwerten eben (int) oder intval.

Bevor du die Daten in die DB schrribst prüfe sie aber auch mit strip_tags ab. Ebenfalls prüfe vorher über die Funktion

PHP-Code:
if(get_magic_quotes_gpc()==&& get_magic_quotes_runtime())
{
       
//vars mit stripslashes versehen und somit escapes entfernen

ob magic_quotes auf on stehen. in dem Fall also die Variablen mit stripslashes bearbeiten, dadurch werden bereits gesetzte escapes entfernt und die variablen erst escaped wenn du sie in die DB einträgst. Mit ein wenig Googlen hättest du das aber auch selber herausfinden können.

Gruß litter
__________________
Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
http://www.lit-web.de
litterauspirna ist offline  
Alt 09.05.2009, 17:10  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Das Thema wurde bereits hinreichend behandelt. Bitte benutze die Forensuche und beachte diesen Thread!
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline  
Alt 09.05.2009, 22:46  
Erfahrener Benutzer
 
Benutzerbild von wassereimer
 
Registriert seit: 06.04.2009
Beiträge: 105
PHP-Kenntnisse:
Anfänger
wassereimer befindet sich auf einem aufstrebenden Ast
wassereimer eine Nachricht über ICQ schicken wassereimer eine Nachricht über MSN schicken
Standard

Danke erstmal für eure Antworten.

Ich hab nun nochmal weiter gegoogelt und ein wenig geforscht...

Wenn ich diese Funktion
PHP-Code:
function protect($value)
{
    
// stripslashes, falls nötig
    
if (get_magic_quotes_gpc() && get_magic_quotes_runtime()) {
        
$value stripslashes($value);
    }

    
// quotieren, falls kein integer
    
if (!is_numeric($value)) {
        
$value mysql_real_escape_string($value);
    }

    return 
$value;

bei jeder Variable, die mit der Datenbank in Kontakt kommt anwende, bin ich dann auf der sicheren Seite?

Lg
wassereimer

Geändert von wassereimer (09.05.2009 um 22:54 Uhr).
wassereimer ist offline  
Alt 09.05.2009, 22:58  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Imho nicht. Und dass diese Kombination nicht wirklich praktisch ist habe ich in einem anderen Thread schon mal ausführlich beschrieben.

http://www.php.de/php-einsteiger/516...injection.html
http://www.php.de/php-einsteiger/523...on-sicher.html
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--

Geändert von nikosch (09.05.2009 um 23:08 Uhr).
nikosch ist offline  
Alt 09.05.2009, 23:45  
Erfahrener Benutzer
 
Benutzerbild von wassereimer
 
Registriert seit: 06.04.2009
Beiträge: 105
PHP-Kenntnisse:
Anfänger
wassereimer befindet sich auf einem aufstrebenden Ast
wassereimer eine Nachricht über ICQ schicken wassereimer eine Nachricht über MSN schicken
Standard

Irgendwie helfen mir die beiden Threads nicht so ganz weiter...
Da hat ja auch jeder zweite eine anderer Meinung...
Jetzt bin ich total verwirrt...

Hat nicht jemand Lust mal ein Mini-Tutorial zu schreiben?
Das ganze wird ja anscheinend häufiger angefragt... Dann könnte man immer an diesen Thread verweisen...
Und das würde bestimmt nicht nur die Unwissenden (wie mich) glücklich machen, sondern auch euch. Da ihr euch nicht immer wiederholen müsst und euer Blutdruck dann nicht in die Höhe schnellt...
Also wann was gemacht werden sollte, was gemacht werden muss, wie man es machen sollte und so...

Lg
wassereimer

Geändert von wassereimer (09.05.2009 um 23:49 Uhr).
wassereimer ist offline  
Alt 10.05.2009, 00:13  
yab
Erfahrener Benutzer
 
Registriert seit: 05.04.2009
Beiträge: 291
PHP-Kenntnisse:
Anfänger
yab befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von wassereimer Beitrag anzeigen
Irgendwie helfen mir die beiden Threads nicht so ganz weiter...
Da hat ja auch jeder zweite eine anderer Meinung...
Jetzt bin ich total verwirrt...

Hat nicht jemand Lust mal ein Mini-Tutorial zu schreiben?
Du könntest vielleicht schonmal Vorarbeit leisten. Alle dir wichtigen (gewünschten) Punkte inkl. Unterpunkte auflisten, also eine grobe Inhaltsstruktur liefern. Dann die recherchierten, "verschiedenen Meinungen" mit deinen offenen Fragen dazu auflisten.

Das wäre schonmal eine gute, diskussionswürdige Grundlage für ein Tutorial. Wie stehst du dazu?
yab ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
wassereimer, reicht mysql_real_escape_string, mysql_real_escape_string verwenden, wann mysql_real_escape_string, mysql_real_escape_string richtig einsetzen, mysql_real_escape_string richtig nutzen, wassereimer bild, php sicherheit mysql_real_escape_string, mysql_real_escape_string sicher, wann mysql_real_escape_string nicht verwenden, mysql_real_escape sicherheit, mysql_real_escape_string reicht nicht, wassereimer zeichnung, mysql_real_escape_string sicherheit, komplette abfrage real_escape_string, mysql_real_escape_string rückgängig, bild wassereimer, mysql_real_escape_string wann benutzen, mysql_real_escape_string reicht?, mysql_real_escape_string() richtig einsetzen

Alle Zeitangaben in WEZ +2. Es ist jetzt 18:29 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum