php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 05.11.2011, 23:28  
Neuer Benutzer
 
Registriert seit: 05.11.2011
Beiträge: 4
PHP-Kenntnisse:
Anfänger
dasgehtab befindet sich auf einem aufstrebenden Ast
Standard sql injection

Hallo Community,
ich bin neu auf dem Gebiet Sql und möchte wissen was ich in diesen 2 scripts ändern muss, damit meine Datenbank sicher ist.

PHP-Code:
<?php
$verbindung 
mysql_connect("****""****" "*****")
or die(
"Es ist ein Fehler aufgetreten.");

mysql_select_db("*****") or die ("Es ist ein Fehler aufgetreten.");

$username $_POST["username"];
$passwort $_POST["passwort"];
$passwort2 $_POST["passwort2"];

if (
strlen(trim($_POST['passwort'])) < 6)
{
    echo 
"Ihr Passwort muss mindestens 6 Zeichen lang sein.";
    exit;
}

if(
$passwort != $passwort2 OR $username == "" OR $passwort == "")
    {
    echo 
"Bitte fülle die Felder korrekt aus <a href=\"registrieren.htm\">Zurück</a>";
    exit;
    }
    
$passwort md5($passwort);



$result mysql_query("SELECT id FROM login WHERE username LIKE '$username'");
$menge mysql_num_rows($result);

if(
$menge == 0)
    {
    
$eintrag "INSERT INTO login (username, passwort) VALUES ('$username', '$passwort')";
    
$eintragen mysql_query($eintrag);

    if(
$eintragen == true)
        {
        echo 
"Benutzername <b>$username</b> wurde erstellt. <a href=\"login.htm\">Login</a>";
        }
    else
        {
        echo 
"Fehler beim Speichern des Benutzernames. <a href=\"registrieren.htm.html\">Zurück</a>";
        }


    }

else
    {
    echo 
"Benutzername schon vorhanden. <a href=\"registrieren.htm\">Zurück</a>";
    }
?>
und

PHP-Code:
<?php
session_start
();
?>

<?php
$verbindung 
mysql_connect("*******""*****" "******")
or die(
"Es ist ein Fehler aufgetreten.");
mysql_select_db("*****") or die ("Es ist ein Fehler aufgetreten.");

$username $_POST["username"];
$passwort md5($_POST["password"]);

$abfrage "SELECT username, passwort FROM login WHERE username LIKE '$username' LIMIT 1";
$ergebnis mysql_query($abfrage);
$row mysql_fetch_object($ergebnis);

if(
$row->passwort == $passwort)
    {
    
$_SESSION["username"] = $username;
    echo 
"Login erfolgreich. <br> <a href=\"geheim.php\">Geschützer Bereich</a>";
    }
else
    {
    echo 
"Benutzername und/oder Passwort waren falsch. <a href=\"login.html\">Login</a>";
    }

?>
An alle die mir helfen, jetzt schonmal danke

Geändert von dasgehtab (05.11.2011 um 23:41 Uhr).
dasgehtab ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 05.11.2011, 23:33  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

Beim Posten von PHP-Beispielcode bitte [php]-Tags benutzen, zwecks Lesbarkeit.

Des weiteren ist das hier kein „macht mal“-Service – du wirst dich also schon selber mit der Thematik beschäftigen müssen.

Arbeite diesen Artikel mal vollständig durch: http://wiki.selfhtml.org/wiki/Artikel:Kontextwechsel
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline   Mit Zitat antworten
Alt 05.11.2011, 23:45  
Neuer Benutzer
 
Registriert seit: 05.11.2011
Beiträge: 4
PHP-Kenntnisse:
Anfänger
dasgehtab befindet sich auf einem aufstrebenden Ast
Standard

Dann sag mir bitte wenigstens ob das schwer ist und ob ich viel ändern muss
dasgehtab ist offline   Mit Zitat antworten
Alt 05.11.2011, 23:45  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

Arbeite den Artikel durch, damit du verstehst, wo überhaupt das Problem liegt, und was dagegen zu unternehmen ist.
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline   Mit Zitat antworten
Alt 05.11.2011, 23:57  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.266
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Jede Benutzereingabe ($_POST, $_GET, ..), die du direkt oder indirekt in einem SQL-Query verwendest, musst du mit mysql_real_escape_string() escapen. Das gilt uebrigens fuer alle variablen Zeichenketten, mit denen du ein Query zusammenbaust.

Beispiel:
PHP-Code:
<?php
$username 
$_POST["username"];
$sql "SELECT email FROM user WHERE name = '$username'";
$result mysql_query($sql) or die(mysql_error());
$email mysql_result($result);
$sql2 "SELECT * FROM user_address WHERE email = '$email'";
// ..
Sowohl $username als auch $email gilt es zu escapen, denn nur weil $email aus der DB kommt, heisst das ja noch nicht, dass darin keine SQL-Injection stecken kann.
__________________
"Nuschel ich?" - "Was?"
Chriz ist offline   Mit Zitat antworten
Alt 06.11.2011, 00:01  
Neuer Benutzer
 
Registriert seit: 05.11.2011
Beiträge: 4
PHP-Kenntnisse:
Anfänger
dasgehtab befindet sich auf einem aufstrebenden Ast
Standard

Wenn ich das jetzt alles richtig verstanden habe heißt es das ich in der zeile

PHP-Code:
$abfrage "SELECT username, passwort FROM login WHERE username LIKE '$username' LIMIT 1"
es so machen müsste

PHP-Code:
$abfrage "SELECT username, passwort FROM login WHERE username LIKE= '" mysql_real_escape_string($username)   ."' LIMIT1"
aber ich versteh einfach nicht wie man $_POST und $_GET (etc.) escapen soll?

Geändert von dasgehtab (06.11.2011 um 00:11 Uhr).
dasgehtab ist offline   Mit Zitat antworten
Alt 06.11.2011, 00:02  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

Nein, das wird dir in der Form mit einem Syntaxfehler um die Ohren fliegen.

Wenn dir die Grundlagen der PHP-Syntax noch nicht geläufig sind, dann bitte erst mal hier entlang: http://www.php.de/php-einsteiger/489...rundlagen.html
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline   Mit Zitat antworten
Alt 06.11.2011, 00:10  
Neuer Benutzer
 
Registriert seit: 05.11.2011
Beiträge: 4
PHP-Kenntnisse:
Anfänger
dasgehtab befindet sich auf einem aufstrebenden Ast
Standard

ich habs nochmal verbessert ist es so besser?
dasgehtab ist offline   Mit Zitat antworten
Alt 06.11.2011, 03:12  
Erfahrener Benutzer
 
Registriert seit: 18.04.2009
Beiträge: 126
ibeg befindet sich auf einem aufstrebenden Ast
Standard

Wieso eigentlich "LIKE" ? Sollte nicht der exakte Username geprüft werden? Und das Passwort kann man auch gleich im Query auf Übereinstimmung prüfen.
ibeg ist offline   Mit Zitat antworten
Alt 06.11.2011, 13:55  
Neuer Benutzer
 
Registriert seit: 05.11.2011
Beiträge: 22
PHP-Kenntnisse:
Fortgeschritten
Soundz befindet sich auf einem aufstrebenden Ast
Standard

du könntest in der form auch direkt sonderzeichen wie -, ;, = etc.. verbieten. .. aber das am Rande.

Du solltest auch auf htmlentities zurück greifen damit die leute dir kein html bzw javascript da reinfüllen
Soundz ist offline   Mit Zitat antworten
Antwort


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

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] Case führt nicht alle SQL Abfragen aus Angel PHP Einsteiger 2 05.09.2011 12:20
SQL Statement mit UPDATE und SELECT: fetch_array Micodat Datenbanken 2 21.04.2011 18:09
[Erledigt] SQL Abfrage escapen wooha PHP Einsteiger 3 18.04.2011 10:13
SQL funktioniert in DB aber nicht im php Code SabrinaSt PHP Einsteiger 15 29.03.2011 00:25
MySQL Website via SQL Injection gehackt m0dpad Off-Topic Diskussionen 0 28.03.2011 10:34
[Erledigt] SQL WHERE ohne mehrere SQL Abfragen Soulstormer Datenbanken 10 01.03.2011 16:26
[Erledigt] Das leidige Thema SQL Injection EmmKey PHP Einsteiger 12 05.02.2011 16:12
Problem mit PHP Variablen in SQL Befehl Noahndertaler Datenbanken 2 26.01.2011 17:14
Umlaute (ä) in der SQL Abfrage noop Datenbanken 5 09.01.2011 23:06
Forum - neusten Beiträge anzeigen sql langsam jackie1983 Datenbanken 11 06.01.2011 19:57
Use The Index, Luke! - SQL Tuning Resource Markus Winand Datenbanken 0 04.12.2010 11:12
False Abfrage und SQL hängt sich auf marc77 Datenbanken 4 22.11.2010 14:57
SQL Datei mit PHP ausführen Kein Genie PHP Tipps 2010 2 09.11.2010 09:52

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php sql injection select * from

Alle Zeitangaben in WEZ +2. Es ist jetzt 15:18 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