mögliche schwachstelle?

Chakky

Member of Honour
hi,
ich hab mir jetzt ein ganz einfaches login script geschrieben nur jetzt hab ich irgendwie bedenken das ich da ein fehlergemacht habe und da durch auf den geschützen bereich zu greifen kann.könnte vielleicht einer bitte "korregtur" lesen? (sofern fehler drinne sind)
hier mal das script:
Code:
<?
$loginc = $_POST['login'];
$passwordc=$HTTP_POST_VARS["password"];
$hack=$HTTP_POST_VARS["hack"];

?>
<?
include ('config.php');
?> <?

?>
<?
if ($passwordc == $password and $loginc == $login and $hack=="nimda")
{
include ('log_see.php');
}
else
{
echo "Fehlerhafter Login";
include ('../fehler/403.php');
exit();

}
   ?>

die zu überprüfende variabeln werden dabei in der config.php bzw in den vorgeschalten html dokument festgelegt?
 
Hallo,
dein Fehler:
include ('log_see.php');


Was ist wenn man log_see.php direkt aufruft? Ich denke dann sieht man den geschützen Bereich.

Aber sonst sehe ich am Code nichts falsches.
Man müsste aber mal die config.php sehen und wissen wie und wo die PW's gespeichert werden
 
Einfach nur für einen Passwortschutz auf einer Seite fährst du mit http-auth (auf apache z.B. in .htaccess konfigurierbar oder auch über PHP nutzbar) besser. Für einen echten Login brauchst du eine Session-Verwaltung.

Greets, Ziri
 
hi,
gut dann bin ich beruigt das password wird normal als varibale gespeichert sprich
Code:
$password=test
joa stümmt da kann man es direkt sehen das is schlecht da noch eine überpüfun rein dann passt das sicherlich.

die variante mit htacces wollte ich eigtl nicht machen. wie kann ich das mit der ses id machen? vielleicht ein tut schnell zur hand?
 
Chakky, im Prinzip:
- Aller Inhalt wird nur dynamisch ausgegeben.
- Ein login-Script überprüft Benutzername und Passwort und legt dann eine neue Session an (sessionid lässt sich über Kominationen von uniqid() und md5() erzeugen), am besten in einer Datenbank, Textfile geht zur Not auch.
- Die Sessionid muss immer mitgeführt werden, entweder als Teil der URL (?sid=bla) oder als Cookie
- Jede andere Seite überprüft diese Sessionid auf Gültigkeit bevor die Daten herausgegeben werden.
- Beim Logout wird die Session wieder gelöscht
- Bestandteil der Session sollte außer Username und Sessionid auch ein Timestamp sein, zu lange idle-Times sollten sicherheitshalber zum "Zwangs-logout" führen.
- Außerdem kann man zusätzlich noch die IP in der Session vermerken, als weitere Sicherheitsabfrage.

Habe hier übrigens eine Session-Management-Klasse selbst geschrieben (die wird einfach in jeder Seite include()et) für ein Board, das ich immer noch versuche zu programmieren. Leider fehlen Kommentare, vielleicht kannst du ja trotzdem etwas herauslesen ;):
http://palmen.homeip.net/~fmp/gbb/inc/session.class.phps

Greets, Ziri

PS: Also für das, was du willst, ist http_auth wahrscheinlich wirklich besser geeignet. Das KANNST du mittels .htaccess machen, aber du kannst auch von PHP aus auf http_auth zugreifen, wenn dir das lieber ist, siehe http://www.php.net/manual/de/features.http-auth.php
 
Zurück
Oben