php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Bewertung: Bewertung: 1 Stimmen, 5,00 durchschnittlich.
  #1 (permalink)  
Alt 06-12-2011, 20:55
Alpha0493
 Registrierter Benutzer
Links : Onlinestatus : Alpha0493 ist offline
Registriert seit: Dec 2011
Beiträge: 14
Alpha0493 befindet sich auf einem aufstrebenden Ast
Question Umgehen des Passwortschutzes verhindern?

Hallo,

ich habe folgendes Problem:
ich habe für eine Website einen Passwortschutz eigerichtet der so aussieht:

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

<?php 
$verbindung 
mysql_connect("xxxx""xxxx" "xxxx"
or die(
"Verbindung zur Datenbank konnte nicht hergestellt werden"); 
mysql_select_db("xxxx") or die ("Datenbank konnte nicht ausgewählt werden"); 

$username $_POST["username"]; 
$passwort md5($_POST["password"]);
$hostname $_SERVER['HTTP_HOST'];
$path dirname($_SERVER['PHP_SELF']); 

$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
    
header('Location: http://'.$hostname.($path == '/' '' $path).'/geheim.php'); 
    } 
else 
    { 
    
header('Location: http://'.$hostname.($path == '/' '' $path).'/index.html'); 
    } 
?>
Nun wird man danach auf geheim.php weitergeleitet :

PHP-Code:
<?php 
session_start
(); 
?> 
<?php 
$hostname 
$_SERVER['HTTP_HOST'];
$path dirname($_SERVER['PHP_SELF']); 

if(!isset(
$_SESSION["username"])) 
   { 
   echo 
"Bitte erst <a href=\"index.html\">einloggen</a>"; } 
   else {
header('Location: http://'.$hostname.($path == '/' '' $path).'/News.html');}     
?>
und dann kommt man zur geschützten Seite.

Jedoch wenn jemand einfach einen Link zu einer der eigendlich geschüzten Seiten, z.b http://...news.html in die Suchleiste des Browsers eingibt so umgeht er die index.html und der Passwortschutz brigt garnichts.

Kann mir jemand einen Tipp geben wie ich das verhindern kann?
Kenne mich leider nicht so gut mit php aus.

Mit freundlichen Grüßen Alpha0493
Mit Zitat antworten
  #2 (permalink)  
Alt 06-12-2011, 21:01
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.578
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Die Seite mit PHP ausliefern.

Davon abgesehen hat dein "Passwortschutz" noch einige weitere scheunentorgroße Löcher:

- Verwende nicht LIKE, um den Benutzernamen zu prüfen.
- Du hast SQL-Escaping vergessen (Grundlagen!).

Du prüfst übrigens nirgendwo, ob die Datenbankabfrage erfolgreich war. Was ist, wenn sie mal fehlschlägt?
Mit Zitat antworten
  #3 (permalink)  
Alt 06-12-2011, 21:13
Alpha0493
 Registrierter Benutzer
Links : Onlinestatus : Alpha0493 ist offline
Registriert seit: Dec 2011
Beiträge: 14
Alpha0493 befindet sich auf einem aufstrebenden Ast
Standard

Erstmal vielen Dank für die schnelle Antwort.

Wie gesgt bin ein totaler Anfänger mit php

kannst du das mit dem "ausliefern" etwas näher erläutern ? ich nehme an ich muss dazu etwas in den header der einzelnen seiten schreiben?


Was schlägst du denn als Alternative zu 'Like' vor?


Wenn Benutzername und Passwort nicht gefunden werden wird man zurück zur Login Seite geleitet (index.html)

Schonmal Danke im Voraus

Geändert von Alpha0493 (06-12-2011 um 21:16 Uhr)
Mit Zitat antworten
  #4 (permalink)  
Alt 06-12-2011, 21:19
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.578
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Alpha0493 Beitrag anzeigen
kannst du das mit dem "ausliefern" etwas näher erläutern ? ich nehme an ich muss dazu etwas in den header der einzelnen seiten schreiben?
Das hat nichts mit dem Header zu tun.

deliver_page.php
PHP-Code:
session_start();

if (empty(
$_SESSION['username'])) {
    
header('Location: http://example.org/login.php');
} else {
    
$pageWhitelist = array(
        
'news''foo''bar''baz'
    
);

    if (isset(
$_GET['page']) && in_array($_GET['page'], pageWhitelisttrue)) {
        include 
'/www/content_folder/' $_GET['page'] . '.html';
    }

Und dann die Seite zB. mit ./deliver_page.php?page=news aufrufen

Zitat:
Zitat von Alpha0493 Beitrag anzeigen
Was schlägst du denn als Alternative zu 'Like' vor?
Was spricht gegen "="?
Mit Zitat antworten
  #5 (permalink)  
Alt 06-12-2011, 21:50
Alpha0493
 Registrierter Benutzer
Links : Onlinestatus : Alpha0493 ist offline
Registriert seit: Dec 2011
Beiträge: 14
Alpha0493 befindet sich auf einem aufstrebenden Ast
Standard

Ich denke es spricht nichts gegen ein '='

hab den php-code jetzt so :
PHP-Code:
<?php
session_start
(); 

$hostname $_SERVER['HTTP_HOST'];
$path dirname($_SERVER['PHP_SELF']); 

if (empty(
$_SESSION['username'])) { 
    
header('Location: http://'.$hostname.($path == '/' '' $path).'index.html');
} else { 
    
$pageWhitelist = array( 
        
'News''Gaestebuch''Kontakt''Links' 
    
); 

    if (isset(
$_GET['page']) && in_array($_GET['page'], $pageWhitelisttrue)) { 
        include (
'meineSeite' $_GET['page'] . '.html'); 
    } 

?>
nur das include funktioniert nicht in zeile 15
kommt eine warnung das der Wrapper ausgeschalten ist in der Server config und das die Adresse nicht gefunden werden kann
warum das?

Danke

Geändert von Alpha0493 (06-12-2011 um 21:57 Uhr)
Mit Zitat antworten
  #6 (permalink)  
Alt 06-12-2011, 23:49
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.578
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Du zeigst Fantasiecode und nicht den tatsächlichen. Die Fehlermeldung kann bei diesem Code niemals auftreten.
Mit Zitat antworten
  #7 (permalink)  
Alt 07-12-2011, 09:22
Alpha0493
 Registrierter Benutzer
Links : Onlinestatus : Alpha0493 ist offline
Registriert seit: Dec 2011
Beiträge: 14
Alpha0493 befindet sich auf einem aufstrebenden Ast
Standard

So hab das 'meineSeite' (also den path) wegenommen und nun funktioniert es:

PHP-Code:
<?php
session_start
(); 

$hostname $_SERVER['HTTP_HOST'];
$path dirname($_SERVER['PHP_SELF']); 

if (empty(
$_SESSION['username'])) { 
    
header('Location: http://'.$hostname.($path == '/' '' $path).'index.html');
} else { 
    
$pageWhitelist = array( 
        
'News''Gaestebuch''Kontakt''Links' 
    
); 

    if (isset(
$_GET['page']) && in_array($_GET['page'], $pageWhitelisttrue)) { 
        include ( 
$_GET['page'] . '.html'); 
    } 

?>
Wahrscheinlich bin ich einfach nur zu blöd aber was hindert mich den jetzt daran die seite immernoch über http://meineseite/News.html aufzurufen?
Mit Zitat antworten
  #8 (permalink)  
Alt 07-12-2011, 09:50
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.578
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Gar nichts. Du musst diese Datei in einen nicht öffentlichen Ordner verschieben, der nicht über HTTP erreicht werden kann.
Mit Zitat antworten
  #9 (permalink)  
Alt 07-12-2011, 09:54
Alpha0493
 Registrierter Benutzer
Links : Onlinestatus : Alpha0493 ist offline
Registriert seit: Dec 2011
Beiträge: 14
Alpha0493 befindet sich auf einem aufstrebenden Ast
Standard

wie lege ich einen solchen ordner an ?
habe einen ordner erstellt der sich schutz nennt, der kann aber auch ohne probleme erreicht werden


um noch mal auf das sql-escaping zurück zu kommen: reicht es wenn ich das einfach so einfüge unter der Abfrage?
PHP-Code:
mysql_real_escape_string($username);
mysql_real_escape_string($passwort); 
Mit Zitat antworten
  #10 (permalink)  
Alt 07-12-2011, 10:02
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Hallo,

google mal nach „htaccess Verzeichnisschutz“.

Zu deiner anderen Frage: Ja, das reicht. In einer Datenbankabfrage rufst du diese Funktion für jede Benutzereingabe auf und kannst das Ergebnis dann sicher verwenden. Besser und auch einfacher sind allerdings Prepared Statements und die Verwendung von PDO.

Gruß,

Amica
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
Mit Zitat antworten
  #11 (permalink)  
Alt 07-12-2011, 10:02
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.578
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Alpha0493 Beitrag anzeigen
wie lege ich einen solchen ordner an ?
Indem du aus dem Document-Root-Ordner rausgehst und einen neuen anlegst?

Zitat:
Zitat von Alpha0493 Beitrag anzeigen
habe einen ordner erstellt der sich schutz nennt, der kann aber auch ohne probleme erreicht werden
Dann hast du ihn an der falschen Stelle erstellt.

Zitat:
Zitat von Alpha0493 Beitrag anzeigen
um noch mal auf das sql-escaping zurück zu kommen: reicht es wenn ich das einfach so einfüge unter der Abfrage?
PHP-Code:
mysql_real_escape_string($username);
mysql_real_escape_string($passwort); 
Unter der Anfrage bringts nix. In der Abfrage schon eher.
Mit Zitat antworten
  #12 (permalink)  
Alt 07-12-2011, 10:13
Wotan
 Master
Links : Onlinestatus : Wotan ist offline
Registriert seit: Sep 2001
Ort: Berlin
Beiträge: 5.349
Wotan ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Da du ja mit Session arbeitest, setze dir nach dem Erfolgreichen Login einfach eine Session[var] und prüfe diese nach dem vorhanden sein und nach dem Inhalt in deiner news.html, ist die Session[var] nicht vorhanden oder hat den falschen Inhalt, schickst du den User einfach wieder auf die Loginseite zurück, ansonsten zeigst du den User eben die news.html an.
__________________
*winks*
Gilbert
------------------------------------------------
Hilfe für eine Vielzahl von Problemen!!!
http://www.1st-rootserver.de/
Mit Zitat antworten
  #13 (permalink)  
Alt 07-12-2011, 10:18
Alpha0493
 Registrierter Benutzer
Links : Onlinestatus : Alpha0493 ist offline
Registriert seit: Dec 2011
Beiträge: 14
Alpha0493 befindet sich auf einem aufstrebenden Ast
Standard

Kann den das php-script dann noch ohne probleme auf den ordner zugreifen wenn ich ihn mit "htaccess Verzeichnisschutz" versehe?
wenn das geht wäre das eine super möglichkeit


hmm ich benutze zur zeit nur einen kostenlosen server auf cwsurf.de un da habe ich nur zugriff auf ein verzeichnis in welchem sich standarmäßig die ordner "bot", "botconfig" und "useragent" befinden
bisher habe ich meine dateien einfach nur in das selbe verzeichnis gespeichert
soll ich nun verher noch einen root ordner anlegen? oder ist auf dem server ein unerreichbarer ordner nicht realisierbar?


bei login.php sieht nun wie folgt aus :
PHP-Code:

<?php 
session_start
(); 
?> 

<?php 
$verbindung 
mysql_connect("dxxxx""xxxxx" "xxxx"
or die(
"Verbindung zur Datenbank konnte nicht hergestellt werden"); 
mysql_select_db("xxxxx") or die ("Datenbank konnte nicht ausgewählt werden"); 

$username $_POST["username"]; 
$passwort md5($_POST["password"]);
$hostname $_SERVER['HTTP_HOST'];
$path dirname($_SERVER['PHP_SELF']); 

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

if(
$row->passwort == $passwort
    { 
    
$_SESSION["username"] = $username
    
header('Location: http://'.$hostname.($path == '/' '' $path).'/deliver_page.php?page=News'); 
    } 
else 
    { 
    
header('Location: http://'.$hostname.($path == '/' '' $path).'/index.html'); 
    } 
?>
ist das nun so richtig mit dem sql-escaping?


Geändert von Alpha0493 (07-12-2011 um 10:23 Uhr)
Mit Zitat antworten
  #14 (permalink)  
Alt 07-12-2011, 10:21
Alpha0493
 Registrierter Benutzer
Links : Onlinestatus : Alpha0493 ist offline
Registriert seit: Dec 2011
Beiträge: 14
Alpha0493 befindet sich auf einem aufstrebenden Ast
Standard

@ wotan
aber diese prüfung geschieht doch auch durch ein php.script oder?
kann ich das einfach mit in ein html-dokument schreiben?

Geändert von Alpha0493 (07-12-2011 um 10:25 Uhr)
Mit Zitat antworten
  #15 (permalink)  
Alt 07-12-2011, 10:24
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
Standard

Zitat:
Kann den das php-script dann noch ohne probleme auf den ordner zugreifen wenn ich ihn mit "htaccess Verzeichnisschutz" versehe?
.htaccess Dateien werden vom Webserver gelesen und ausgewertet.
Dem PHP sind die völlig wurscht.

Zitat:
ist das nun so richtig mit dem sql-escaping?
Nein!
__________________
Wir werden alle sterben
Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
kennwort, passwort, php, schutz, umgehen


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

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
beim Download eines PDF-Dokuments die Sicherheitsmeldung des IE umgehen joextra PHP Developer Forum 10 02-04-2007 22:41
Unmittelbare Ausgabe bei einer Schleife (Während des Laufzeit des Scripts) Melligem PHP Developer Forum 5 12-07-2006 15:46
doppelt abschicken des formulars verhindern ment PHP Developer Forum 4 21-07-2004 14:51
Verwendung des Kreuzchen oben rechts verhindern ForrestGump HTML, JavaScript, AJAX, jQuery, CSS, Bootstrap, LESS 3 25-05-2003 23:45
weiterführen des folgenden codes verhindern gravis HTML, JavaScript, AJAX, jQuery, CSS, Bootstrap, LESS 3 10-02-2003 22:00

Themen-Optionen
Thema bewerten
Thema bewerten:

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 an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 12:03 Uhr.