php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 02.08.2006, 16:05  
Neuer Benutzer
 
Registriert seit: 02.08.2006
Beiträge: 25
Garry
Standard Script so sicher?

Hallo, ich habe mir ein kleines Loginscript geschrieben, dass auf PHP/MySQL Basis aufgebaut ist.

Der User muss Name, Passwort und einen Zahelncodex (zusätzliche Absicherung) eingeben, die dann mit den Daten in der Datenbank verglichen werden. Soweit, so schön. Jetzt ist meine Frage aber: Wie sicher ist mein Script?

Hier poste ich es einfach mal:

index.php

Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>Usercontrol V.0.9</title>
    <link rel="stylesheet" href="style.css" type="text/css">
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
  </head>
  <body>
  
  <p class="ueberschrift" align="center"><u>Usercontrol V.0.9 für die Freie Handelsgesellschaft Kapiland</u></p>

  

  

  


<table>
  <tr>
  <td>
  <div class="login">
  <div align="center"><u>Logindaten eingeben</u></div>
  <form action="login.php" method="post">
  

Loginname: <input type="text" name="name" class="textfeld"></p>
  

Loginpasswort: <input type="text" name="passwort" class="textfeld"></p>
  

Loginzahlencodex: <input type="text" name="codex" class="textfeld"></p>
  <p align="center"><input type="submit" value="Einloggen"></p>
  </form>
  </div>
  </td>
  <td valign="top">
  <p align="center">Es folgt eine kurze Einweisung..</p>
  

Trage hier bitte deinen Loginnamen ein. Danach folgt dein Loginpasswort.</p>
  

Als letztes folgt eine 10 stellige Nummer, die du unregelmäßig vom Administrator bekommst.</p>
  

Dieser Zahlencodex dient ausschließlich der Sicherheit des Tool's 
  und deines Admin - Account's.</p>
  

Die Weitergabe an Dritte ist natürlich, wie auch beim Passwort, 
  nicht gestattet und kann bis zum Ausschluss aus der FHK führen!</p>
  </td>
  </tr>
</table>
  
  

  

  

  
<p class="copyrights" align="center">Ein Projekt der Freien Handelsgesellschaft Kapiland, 
  programmiert von:
  

  &raquo Garry
</p>
  
  </div>
  </body>
</html>
Also wie unschwer zu erkennen ist, dient es als Adminoberfläche für ein Tool .

Und hier nun die login.php

PHP-Code:
<?php
@mysql_connect("localhost""root""") or die("Verbindung zum MySQL - Server fehlgeschlagen!");
@
mysql_select_db("usercontroldb") or die("Verbindung zur Datenbank fehlgeschlagen!");

$sql "SELECT admin, passwort FROM admins";

$result mysql_query($sql);

$row mysql_fetch_assoc($result);

if (
$_POST["name"] == $row["admin"] && $_POST["passwort"] == $row["passwort"] && $_POST["codex"] == $row["codex"]) {
  echo 
"Hallo $_POST[name]";
}
  elseif (isset(
$_POST["name"])) {
  echo 
"Nö..";
}

mysql_close();
?>
Garry ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 02.08.2006, 16:33  
Erfahrener Benutzer
 
Registriert seit: 13.11.2005
Beiträge: 2.583
xabbuh
Standard

Dein Script wird so nicht einmal funktionieren:

1. Du liest alle Datensätze aus, verarbeitest aber nur den 1. erhaltenen Datensatz.
2. Du prüfst auf $row['codex'], obwohl du diese Spalte nicht einmal selektiert hast.
xabbuh ist offline  
Alt 02.08.2006, 16:39  
Neuer Benutzer
 
Registriert seit: 02.08.2006
Beiträge: 25
Garry
Standard

Stimmt, xabbuh.

Jedoch funktioniert es aber!

Wenn beide Eingaben richtig sind, bekomme ich "Hallo" abgezeigt, wenn nicht, dann "Nö..".

Aber zum zweiten hast du Recht, das ist mir ehrlich gesagt total entgangen .
Garry ist offline  
Alt 02.08.2006, 16:40  
there's only one psycho
 
Benutzerbild von PsychoEagle
 
Registriert seit: 21.08.2007
Beiträge: 1.283
PHP-Kenntnisse:
Anfänger
PsychoEagle ist ein sehr geschätzer MenschPsychoEagle ist ein sehr geschätzer MenschPsychoEagle ist ein sehr geschätzer Mensch
PsychoEagle eine Nachricht über ICQ schicken PsychoEagle eine Nachricht über Skype™ schicken
Standard

SQL-Injection ist schon mal nicht möglich. Einloggen auch nicht.

Fazit: Dein Script ist sicher, aber funktioniert nicht.

Grund:

Du hast alle Datensätze ausgelesen, aber nimmst nur den ersten Datensatz (bei einem User könnte es mit dem Login klappen, wenn nicht folgendes falsch wäre).

Du hast die Spalte Codex nicht ausgewählt

Edit:
ich bin zu langsam ... hab ich echt 6 min für den Beitrag gebraucht?
__________________
"Weaseling out of things is important to learn. It's what separates us from the animals ... except the weasel." (Homer J. Simpson)
PsychoEagle ist offline  
Alt 02.08.2006, 16:42  
there's only one psycho
 
Benutzerbild von PsychoEagle
 
Registriert seit: 21.08.2007
Beiträge: 1.283
PHP-Kenntnisse:
Anfänger
PsychoEagle ist ein sehr geschätzer MenschPsychoEagle ist ein sehr geschätzer MenschPsychoEagle ist ein sehr geschätzer Mensch
PsychoEagle eine Nachricht über ICQ schicken PsychoEagle eine Nachricht über Skype™ schicken
Standard

Zitat:
Zitat von Garry
Stimmt, xabbuh.

Jedoch funktioniert es aber!

Wenn beide Eingaben richtig sind, bekomme ich "Hallo" abgezeigt, wenn nicht, dann "Nö..".

Aber zum zweiten hast du Recht, das ist mir ehrlich gesagt total entgangen .
vielleicht ist $_POST["codex"] leer, denn $row["codex"] ist leer (bzw existiert nicht)
__________________
"Weaseling out of things is important to learn. It's what separates us from the animals ... except the weasel." (Homer J. Simpson)
PsychoEagle ist offline  
Alt 02.08.2006, 16:43  
Neuer Benutzer
 
Registriert seit: 02.08.2006
Beiträge: 25
Garry
Standard

Danke auch dir schonmal, Psycho .

Aber das liegt hier am Forum, das lädt ewig..
Garry ist offline  
Alt 02.08.2006, 16:44  
Neuer Benutzer
 
Registriert seit: 02.08.2006
Beiträge: 25
Garry
Standard

Sollte ich mit isset() überprüfen, ob alle gegeben sind?
Garry ist offline  
Alt 02.08.2006, 16:45  
Erfahrener Benutzer
 
Registriert seit: 13.11.2005
Beiträge: 2.583
xabbuh
Standard

Zum Einen das, zum Anderen solltest du nur die benötigten Datensätze selektieren.
xabbuh ist offline  
Alt 02.08.2006, 16:46  
Neuer Benutzer
 
Registriert seit: 02.08.2006
Beiträge: 25
Garry
Standard

Das habe ich doch aber gemacht. Es sind zwar nur 3, aber diese brauche ich ja auch. Obwohl, wenn man das ID Feld hinzuzählt, sind es 4!
Garry ist offline  
Alt 02.08.2006, 16:53  
there's only one psycho
 
Benutzerbild von PsychoEagle
 
Registriert seit: 21.08.2007
Beiträge: 1.283
PHP-Kenntnisse:
Anfänger
PsychoEagle ist ein sehr geschätzer MenschPsychoEagle ist ein sehr geschätzer MenschPsychoEagle ist ein sehr geschätzer Mensch
PsychoEagle eine Nachricht über ICQ schicken PsychoEagle eine Nachricht über Skype™ schicken
Standard

sind deine Namen eigentlich Unique? also kann es nur einen geben?

Du musst auf jeden Fall erstmal den Datensatz mit WHERE finden. Falls es keine UNIQUE Namen sind, dann mach am Besten WHERE name = $_POST ['name'] AND passwort = $_POST['passwort']

natürlich in anführungszeichen etc. Aber da man dem User nicht trauen kann, diese eingaben auf Fehler prüfen. trim() ist auch noch sinnvoll.

Ich bin mir sicher xabbuh wird noch was dazu sagen können bzw du findest was mit der suche (-> SQL-Injection), denn ich muss aufs Klo und hab dann Feierabend für heut

viel Erfolg

mfg
__________________
"Weaseling out of things is important to learn. It's what separates us from the animals ... except the weasel." (Homer J. Simpson)
PsychoEagle 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

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Diverses aus meinem Apache Logs robo47 Server, Hosting und Workstations 5 25.05.2007 22:45
Script beendet sich ohne Fehlermeldung Zahl PHP Tipps 2006 6 04.06.2006 20:41
passwort script problem PHP Tipps 2006 8 15.02.2006 10:30
[Erledigt] php script und ixed PHP Tipps 2005-2 14 12.10.2005 13:34
[Erledigt] Verzögerung durch included Script? Umgehen? PHP Tipps 2005-2 4 10.07.2005 19:26
[Erledigt] Relay Script PHP-Fortgeschrittene 11 01.06.2005 16:02
[Erledigt] Hilfe bei Download Verwaltungs Script PHP Tipps 2005 8 04.05.2005 10:29
Fehler bei Script, welches Ordner erstellt PsychoEagle PHP Tipps 2005 3 23.04.2005 16:03
[Erledigt] python script mit php aufrufen... PHP-Fortgeschrittene 1 17.11.2004 17:11
PHP Script aus PHP aufrufen Stümper PHP Tipps 2004 5 26.09.2004 08:15
"das" Script oder "der" Script?? Simbo Off-Topic Diskussionen 31 16.09.2004 17:04
Script bricht mitten in einer while Schleife ab PHP Tipps 2004 5 11.07.2004 17:16

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
kapiland script, 2 3 zahlencodex, <p class=\copyrights\>

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

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.