php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger

PHP Einsteiger PHP Problemlösungen für Spracheinsteiger
Archive: 2004, 2004/2, 2005, 2005/2, 2006, 2007, 2008, 2009, 2010,

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 13.10.2011, 17:30  
Benutzer
 
Registriert seit: 03.04.2011
Beiträge: 89
PHP-Kenntnisse:
Anfänger
Anima ist zur Zeit noch ein unbeschriebenes Blatt
Standard Passwort abfragen

Hey,
ich möchte gerne einen kleinen Administrationsbereich für meine Website erstellen. Die Betonung liegt hier wirklich auf "klein", denn ich möchte alles möglichst knapp halten und kein ganzes CMS, dass auf tausenden von Tabellen aufbaut, programmieren.

Nun zu meiner Frage: Ist es okay, wenn ich das Passwort in meiner PHP-Datei so abfrage?

PHP-Code:
if ($password == 'blablabla') {
// access successfully
}
else {
// access denied

Oder sollte ich dafür lieber eine extra Tabelle in phpMyAdmin anlegen, damit die Abfrage "abgesicherter" ist? Ich bin zwar sonst ein Fan von Datenbanken und so, aber in diesem Fall finde ich das echt unnötig, weil ich der einzigste Betreuer meiner Seite bin und in den nächsten paar Jahren mit Sicherheit auch bleiben werde.

MfG Anima
Anima ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 13.10.2011, 17:39  
Erfahrener Benutzer
 
Benutzerbild von Eimer
 
Registriert seit: 28.05.2010
Beiträge: 126
PHP-Kenntnisse:
Fortgeschritten
Eimer befindet sich auf einem aufstrebenden Ast
Standard

Pack das Passwort in eine Tabelle. Da ist es sicherer und kann nicht so leicht ausgelesen werden.
Einwegverschlüsseln kannst du es mit md5().
Dazu würde ich noch ein Salt reinpacken, um gegen Wörterbuchangriffe gewapnet zu sein.
PHP-Code:
$salt "as!f3jfsd"// oder so ...
md5(md5($password).$salt); 
Dieses Passwort speicherst du nur verschlüsselt in die Tabelle!
Um zu überprüfen, ob das pw übereinstimmt:
PHP-Code:
$eingegebenes_passwort "bla";
$aus_der_tabelle "";
$salt "as!f3jfsd"// oder so ...
if(md5(md5($eingegebenes_passwort).$salt) == $aus_der_tabelle) {
   
// passwort ok


Geändert von Eimer (13.10.2011 um 17:43 Uhr).
Eimer ist offline   Mit Zitat antworten
Alt 13.10.2011, 17:40  
Erfahrener Benutzer
 
Registriert seit: 22.07.2004
Beiträge: 226
DirkHo befindet sich auf einem aufstrebenden Ast
Standard

Hallo Anima,

bevor ich zu dieser Lösung greifen würde würde ich doch lieber eine .htaccess-Lösung anstreben.

Dann musst du dich nur noch um die Admin-Funktionalitäten kümmern und kannst die Sicherheitsfrage der .htaccess überlassen.

Grüße,

Dirk
DirkHo ist offline   Mit Zitat antworten
Alt 13.10.2011, 17:50  
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

Zitat:
Pack das Passwort in eine Tabelle. Da ist es sicherer und kann nicht so leicht ausgelesen werden.
Also diese Aussage hätte ich ja gerne begründet.
__________________
--
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   Mit Zitat antworten
Alt 13.10.2011, 17:59  
Benutzer
 
Registriert seit: 16.06.2010
Beiträge: 64
PHP-Kenntnisse:
Fortgeschritten
crossfader zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Du kannst den Bereich ruhig so verschlüsseln. Solltest das pw vielleich in einem sha1 hash speichern, dass es eben nicht im Klartext drin steht.

Gruß Olli
crossfader ist offline   Mit Zitat antworten
Alt 13.10.2011, 19:45  
Benutzer
 
Registriert seit: 16.06.2010
Beiträge: 64
PHP-Kenntnisse:
Fortgeschritten
crossfader zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

So - jetzt bin ich am PC online Hier nochmal so, wie ich es machen würde:

PHP-Code:
<?php
    
//Passwort abfrage
    
if(sha1($_POST['password']) == '09d839cadd41220d01da629b2bb150e260dd479d') {
        
//Login erfolgreich
    
} else {
        print(
'Access Denied');
    }
?>
Die Idee mit der .htaccess ist natürlich am einfachsten.. vielleicht nicht so Benutzerfreundlich - müsste für ein Backend aber reichen

Gruß Olli
crossfader ist offline   Mit Zitat antworten
Alt 13.10.2011, 19:57  
Erfahrener Benutzer
 
Benutzerbild von Eimer
 
Registriert seit: 28.05.2010
Beiträge: 126
PHP-Kenntnisse:
Fortgeschritten
Eimer befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Pack das Passwort in eine Tabelle. Da ist es sicherer und kann nicht so leicht ausgelesen werden.
Also diese Aussage hätte ich ja gerne begründet.
Welche? Ich lese da zwei.
Eimer ist offline   Mit Zitat antworten
Alt 13.10.2011, 19:58  
Benutzer
 
Registriert seit: 03.04.2011
Beiträge: 89
PHP-Kenntnisse:
Anfänger
Anima ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Naja,
ich habe mich jetzt doch für das Verschlüsseln ohne Datenbank entschieden:

PHP-Code:
if (isset($_POST['login'])) {
    
$password $_POST['password'];
    
$salt 'as!f3jfsd';
    
$masterpassword md5(md5($masterpassword).$salt);
    
    if (
md5(md5($password).$salt) == $masterpassword) {
        
$_SESSION['admin'] = $masterpassword;
        
header('location:index.php?site=overview');
        exit;
    }

Ich hoffe mal, dass diese Variante für den Anfang relativ sicher ist.
Danke.
Anima ist offline   Mit Zitat antworten
Alt 13.10.2011, 20:05  
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

Tipp: Redundanten Code immer auslagern. Erleichtert auch den Austausch des Algorithmus

PHP-Code:

define 
('PW_SALT' 'as!f3jfsd');


function 
getPasswordHash ($password $salt) {
  return (
md5 (md5 ($password) . $salt));
}


if (isset(
$_POST['login'])) {

    
$masterpasswordHash getPasswordHash ($masterpassword PW_SALT);
    
    if (
getPasswordHash ($_POST['password'] , PW_SALT) == $masterpasswordHash) {
        
$_SESSION['admin'] = $masterpasswordHash;
        
header('location:index.php?site=overview'); // bitte vollständige Pfade verwenden!!
        
exit;
    }

[edit]

Nochwas. Wie oben bereits gesagt wurde, solltest Du im Script das Klartextpasswort gar nicht ablegen (hier wäre es ja $masterpassword:

PHP-Code:
$masterpasswordHash getPasswordHash ($masterpassword PW_SALT); 
sondern nur den Hash ablegen. Also:

PHP-Code:
$masterpasswordHash '89b473e3492ff389dee324983148'
__________________
--
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   Mit Zitat antworten
Alt 13.10.2011, 20:08  
Erfahrener Benutzer
 
Registriert seit: 03.08.2010
Beiträge: 1.141
PHP-Kenntnisse:
Anfänger
hausl wird schon bald berühmt werdenhausl wird schon bald berühmt werden
Standard

Also irgendwie ist der Code komisch... Mach dir doch in deiner "generellen Config" (irgendsowas in der Art hat man normalerweise) doch eine Konstante die den Wert enthält den du dann mit dem prüfst was im form kommt..

Quasi so:

PHP-Code:
// in der config
define('CONF_PASSWORD''09d839cadd41220d01da629b2bb150e260dd479d')
define('CONF_SALT''as!f3jfsd')

// -----

// in der datei wo du den dann brauchst so in der Art
if (sha1($_POST['password'].CONF_SALT) == CONF_PASSWORD) {
 
// alles gut
} else {
  
//  falsch!

Ich hab hier im forum mal gelesen das doppelt md5() nix bringt, daher hab ich mal sha1() statt desssen genommen. Für den salt dann auch noch ev. eine Konstante wenn du den haben willst.
__________________
Keine Zahl != ein Zeichen das keine Zahl ist

Geändert von hausl (13.10.2011 um 20:21 Uhr).
hausl 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
Passwort vergessen MD5 darkicenetwork PHP Tipps 2010 12 25.03.2010 16:33
[Erledigt] Passwort verstecken... Request: mal gehts, mal nicht defcut JavaScript, Ajax und mehr 21 04.03.2010 00:19
passwort vergleich funktioniert leider nicht coyboc PHP Tipps 2010 10 11.02.2010 17:32
Einfaches Passwort vergessen Script sakanoue PHP Tipps 2009 7 23.12.2009 14:22
Name und Passwort abfragen? Ähm PHP Tipps 2008 16 26.07.2008 13:49
bildanzeige bei falschem passwort chrissie PHP Tipps 2006 1 22.08.2006 15:37
mehrere abfragen funzen ned GrungeRocker PHP Tipps 2007 2 29.12.2005 00:11
Passwort abfragen PHP Tipps 2005-2 5 02.10.2005 10:07
[Erledigt] Passwort und Nutzerverwaltung in Php und Mysql PHP Tipps 2005-2 7 23.06.2005 17:46
Mit PHP Warenkorb erzeugen sowieso Passwort abfragen sichern PHP Tipps 2005 5 26.04.2005 13:17
3 Seiten durch Passwort schützen mit einmaliger PW-Eingabe? PHP Tipps 2005 12 19.04.2005 22:41
Passwort geschützte Seite - PHP ohne MySQL PHP Tipps 2004-2 3 29.12.2004 18:26
2 Tabellen abfragen und dann variable unterschiedlich setzen Anuschka PHP Tipps 2004-2 2 22.12.2004 02:46
Passwort verschlüsselung Datenbanken 5 06.09.2004 10:31
benutzername + passwort pruefen PHP Tipps 2004 4 07.07.2004 16:14

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
access passwort abfragen

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