Hackerboard Wiki HaboBlog
Hackerboard bei Facebook Hackerboard bei Google+ Hackerboard bei Twitter

[HaBo]

 
Webmaster-Security Fragen zur richtigen Serverkonfiguration oder Absicherung dynamischer Scripte gehören hier hinein.

Login bei meiner Website

Diskussion: Login bei meiner Website im Forum Webmaster-Security, in der Kategorie Security Area; Anzeige Hallo zusammen, ich bin ganz neu hier und hoffe, dass ihr mir helfen könnt... ich habe meine erste eigene ...

Antwort
Alt 13.06.07, 23:10   #1 (permalink)
 
Registriert seit: 13.06.07
Lilu Leistung: Facit NTK
Likes: 0
Standard Login bei meiner Website

Anzeige

Hallo zusammen,

ich bin ganz neu hier und hoffe, dass ihr mir helfen könnt... ich habe meine erste eigene Website mit PHP und CSS gebastelt (oder bin bessergesagt noch dran) und frage mich jetzt, wie sicher sie überhaupt ist...

ich habe einen login, der mittels Sessions arbeitet... bei erfolgreichem login wird in der Session hinterlegt, dass die person eingeloggt ist... Wenn ich mich jetzt aber auf dem lokalen Apache server "einlogge" erscheint unten auf der Seite folgender Text:

Warning: Unknown: Your script possibly relies on a session side-effect which existed until PHP 4.2.3. Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled. You can disable this functionality and this warning by setting session.bug_compat_42 or session.bug_compat_warn to off, respectively. in Unknown on line 0

ich bin aus der ganzen sache nicht besonders schlau geworden, wollte aber mal fragen, ob sich jemand damit auskennt und mir vielleicht sagen kann, ob es leicht wäre auf meiner Seite in meinen Acc. einzusteigen?? ich möchte die sicherheit einigermassen hoch halten, damit sich nicht jeder in die verschiedenen acc. "einhacken" kann, da ich vorhabe dass sich die leute persönliche Mitteilungen schicken können.

das hier ist meine Seite: http://laurentweber.la.funpic.de/reisen/index.php

über geschmack lässt sich soviso streiten, also nichts über das design ;)

Gruss
Lilu

Lilu ist offline   Mit Zitat antworten
Alt 13.06.07, 23:22   #2 (permalink)
Member of Honour
 
Registriert seit: 07.12.04
end4win hat die Renommee-Anzeige deaktiviert
Likes: 256
Standard RE: Login bei meiner Website

http://www.php-fehlermeldungen.de/ar...arning-unknown()-your-script-possibly-relies-on-a-session-side-effect-which-existed,.html

Gruss
__________________
Die deutsche Rechtschreibung ist Freeware, daher darf man sie kostenlos nutzen.
Allerdings ist sie nicht Open Source, dies bedeutet man darf sie nicht verändern oder in veränderter Form
veröffentlichen.
end4win ist offline   Mit Zitat antworten
   
HaBOT
 
- Anzeige -

Werbung ist gerade online    
Alt 13.06.07, 23:34   #3 (permalink)
Themenstarter
 
Registriert seit: 13.06.07
Lilu Leistung: Facit NTK
Likes: 0
Standard

danke dir für die Antowrt, aber funktioniert irgendwie nicht...

mein "session-code" sieht so aus:

session_start();
session_register('eingeloggt');
session_register('User_Vorname');
session_register('User_Name');
$eingeloggt = $_SESSION['eingeloggt'];
$User_Name = $_SESSION['User_Name'];
$User_Vorname = $_SESSION['User_Vorname'];

nachdem ich die session starte, schreibe ich drei variabeln in die Session (eingeloggt, User_Vorname und User_Name) mittels session_register... diese hole ich anschliessend gleich wieder raus und schreibe sie wieder in normale Variabeln...

laut der beschreibung die ich unter deinem link finde, sollte ich aber nicht session_register benutzen, sondern nur die globale $_SESSION variabel... aber die ist doch nur um variabeln aus der session zu holen und nicht um sie reinzuschreiben, oder sehe ich das falsch??
Lilu ist offline   Mit Zitat antworten
Alt 13.06.07, 23:56   #4 (permalink)
Member of Honour
 
Registriert seit: 07.12.04
end4win hat die Renommee-Anzeige deaktiviert
Likes: 256
Standard

$_SESSION['eingeloggt'] = 'eingeloggt';

diese Syntax sollst du verwenden

Gruss
__________________
Die deutsche Rechtschreibung ist Freeware, daher darf man sie kostenlos nutzen.
Allerdings ist sie nicht Open Source, dies bedeutet man darf sie nicht verändern oder in veränderter Form
veröffentlichen.
end4win ist offline   Mit Zitat antworten
Alt 14.06.07, 00:03   #5 (permalink)
Themenstarter
 
Registriert seit: 13.06.07
Lilu Leistung: Facit NTK
Likes: 0
Standard

funktioniert leider nicht...

wenn sich jemand einloggt hinterlege ich eine 1 in $eingeloggt, diese wird dann immer wieder geprüft...

wenn ich aber die von dir vorgeschlagene syntax nehme, fliege ich immer wieder raus, heisst also, die variabel wird nicht in die Session geschrieben... auch mit:

$_SESSION['eingeloggt'] = $eingeloggt;

funktioniert es nicht... jedoch mit:

session_register('eingeloggt');

komisch...
Lilu ist offline   Mit Zitat antworten
Alt 14.06.07, 00:51   #6 (permalink)
LX
Moderator
 
Registriert seit: 14.02.06
LX Leistung: Z3
LX eine Nachricht über ICQ schicken LX eine Nachricht über AIM schicken LX eine Nachricht über Yahoo! schicken
Likes: 21
Arrow

Die PHP-Dokumentation rät von der Benutzung von session_register() ab und empfiehlt die Nutzung des superglobalen $_SESSION-Arrays.

Vielleicht solltest du mal das Skript posten, welches bei dir das Session-Handling übernimmt, denn die Zuweisung direkt in dieses Array funktioniert normalerweise problemlos.
__________________
"Ever tried. Ever failed. No matter.
Try again. Fail again. Fail better."
- Samuel Beckett

JS BB LX UP
LX ist offline   Mit Zitat antworten
Alt 14.06.07, 01:18   #7 (permalink)
Member of Honour
 
Registriert seit: 07.12.04
end4win hat die Renommee-Anzeige deaktiviert
Likes: 256
Standard

Ist $eingeloggt überhaupt schon mit 1 belegt?
Welche Werte hast du in der Session?
print_r($_SESSION);
Gibt dir diese aus.

Gruss
__________________
Die deutsche Rechtschreibung ist Freeware, daher darf man sie kostenlos nutzen.
Allerdings ist sie nicht Open Source, dies bedeutet man darf sie nicht verändern oder in veränderter Form
veröffentlichen.
end4win ist offline   Mit Zitat antworten
Alt 14.06.07, 11:28   #8 (permalink)
 
Registriert seit: 04.10.05
bLaCk-DrAg0n Leistung: Facit NTK
bLaCk-DrAg0n eine Nachricht über ICQ schicken
Likes: 0
Standard

mh...

PHP-Code:
session_start();
if (
$username "username" && md5($password) == md5("passwort"))
{
$_SESSION['eingeloggt'] = true;
$_SESSION['User_Name'] = "nachname";
$_SESSION['User_Vorname'] = "vorname";
}

if ( 
$_SESSION['eingeloggt'] != true)
echo 
"Bitte loggen sie sich ein.";
else
echo 
"Hallo "$_SESSION['User_Vorname'] . " " $_SESSION['User_Name'] . ".<br />Sie sind eingeloggt."
das wär ne SEHR simple version ^^
bLaCk-DrAg0n ist offline   Mit Zitat antworten
Alt 14.06.07, 12:38   #9 (permalink)
Themenstarter
 
Registriert seit: 13.06.07
Lilu Leistung: Facit NTK
Likes: 0
Standard

So, ich habs dank eurer Hilfe geschafft, ihr seid gold wert

@bLaCk-DrAg0n: Mein Zeugs sieht ein bisschen komplizierter aus, weiss aber nicht ob es effektiver ist...!

@end4win: Danke dir, das mit print_r() war ein super tipp, da bin ich zuvor nicht drauf gekommen...!

@LX: Ja, direkt hat es dann funktioniert hatte vorher eine komische konstellation mit post formular etc. und da sind die variabeln irgendwo dazuwischen verloren gegangen...

Jetzt aber doch nochmals eine frage, die ich schon zu beginn gestellt habe... wie sicher ist das ganze?? Ist es mit einfach mitteln möglich sich als jemand anders anzumelden, ohne dessen passwort zu kennen?? also den Variabeln in der session von aussen irgendwelche werte zuzuweisen (also eben den genannten Nam User_Name, User_Vorname und eingeloggt)?? sollte ich vielleicht noch zusätzlich eine sicherheitsabfrage über die Cookies machen??

Nochmals vielen dank für eure hilfe...!
Lilu ist offline   Mit Zitat antworten
Alt 14.06.07, 13:19   #10 (permalink)
Member of Honour
 
Registriert seit: 07.12.04
end4win hat die Renommee-Anzeige deaktiviert
Likes: 256
Standard

Bis jetzt kennen wir dein Script nicht.
Aber wenn dies der einzige Prüfmechanismus ist geht es sicherer.

http://www.cms-sicherheit.de/module-...-1-pid-30.html

Gruss
__________________
Die deutsche Rechtschreibung ist Freeware, daher darf man sie kostenlos nutzen.
Allerdings ist sie nicht Open Source, dies bedeutet man darf sie nicht verändern oder in veränderter Form
veröffentlichen.
end4win ist offline   Mit Zitat antworten
Alt 14.06.07, 13:38   #11 (permalink)
Themenstarter
 
Registriert seit: 13.06.07
Lilu Leistung: Facit NTK
Likes: 0
Standard

das ist mein script:
Code:
$EMail = $_POST["EMail_login"];
$Passwort = $_POST["Passwort_login"];
if($EMail && $Passwort)
  {
    $Query = "select * from benutzer where EMail = '$EMail'";
    $Eintragen = mysql_query($Query);
    $row = mysql_fetch_row($Eintragen);
    if($row[1] == md5($Passwort))
      {
        $_SESSION['eingeloggt'] = 1;
        $_SESSION['User_Name'] =  $row[3];
        $_SESSION['User_Vorname'] = $row[4];
      }
  }
aber ich glaube es sollte reichen... irgendwie scheint es ein grosser aufwand zu sein, das ganze sicherer zu gestallten...
Lilu ist offline   Mit Zitat antworten
Alt 14.06.07, 15:33   #12 (permalink)
Member of Honour
 
Registriert seit: 07.12.04
end4win hat die Renommee-Anzeige deaktiviert
Likes: 256
Standard

Kommt darauf an was du schützen willst.

Ein CMS - dann graut es mir.
Ein paar extra Bilder von deinen Reisen - dies musst du entscheiden.

zumindest die POST Daten solltest du validieren bevor du sie verwendest.

Gruss
__________________
Die deutsche Rechtschreibung ist Freeware, daher darf man sie kostenlos nutzen.
Allerdings ist sie nicht Open Source, dies bedeutet man darf sie nicht verändern oder in veränderter Form
veröffentlichen.
end4win ist offline   Mit Zitat antworten
Alt 14.06.07, 16:28   #13 (permalink)
 
Registriert seit: 04.10.05
bLaCk-DrAg0n Leistung: Facit NTK
bLaCk-DrAg0n eine Nachricht über ICQ schicken
Likes: 0
Standard

PHP-Code:
$EMail $_POST["EMail_login"];
$Passwort $_POST["Passwort_login"];
if(
$EMail && $Passwort)
  {
    
$sql "select `User_Name`, `User_Vorname`, `password` from benutzer where EMail = '" $EMail "' LIMIT 1;";
    
$query mysql_query($sql);
    
$row mysql_fetch_assoc($query);
    if(
$row['password'] == md5($Passwort))
      {
        
$_SESSION['eingeloggt'] = 1;
        
$_SESSION['User_Name'] =  $row['User_Name'];
        
$_SESSION['User_Vorname'] = $row['User_Vorname'];
      }
  } 
machs lieber so...

lass aber email vorher escapen...
wenn bei dir magic_quotes_gpc on is (mit "if (get_magic_quotes_gpc()) " prüfbar) einfach nen $string = stripslashes($string);, oder du machst es mit mysql_real_escape_string($string).
bei letzterem darfs aber glaub kein integer sein,also kein numerischer wert... sollte aber bei ner email eh nich der fall sein ^^.
ohne escapen richten einträge wie:

'; TRUNCATE `tabelle`;

in dem email feld großen schaden an ^^

brauch ned so viel ressourcen bei mysql..
is doch schwachsinn ne ganze zeile zu selecten wenn du nur den wert einer einzigsten spalte brauchst...
das "limit 1" dient dazu fehlern aus den weg zu gehen wenn du die spalte nich auch "UNIQUE" hast...
bLaCk-DrAg0n ist offline   Mit Zitat antworten
Alt 14.06.07, 19:20   #14 (permalink)
Themenstarter
 
Registriert seit: 13.06.07
Lilu Leistung: Facit NTK
Likes: 0
Standard

Zitat:
Original von end4win
(...)

zumindest die POST Daten solltest du validieren bevor du sie verwendest.
@end4win: Meinst du mit validieren, ich sollte zuerst prüfen, dass auch wirklich nur buchstaben und keine sonderzeichen oder Zahlen in die Felder geschrieben werden? Dann sollte ich das wohl auch bei meinem Anmeldeformular machen, denke ich... Funktionsfähig machen ist eine sache, aber an all diese Sicherheitsvorkehrungen denken ist schon etwas ganz anderes... das problem ist wohl, dass ich selber nicht weiss, was man alles bösartges anstellen kann und wie, denn sonst würde ich wohl versuchen das zu unterbinden... aber für etwas habe ich ja euch...

@bLaCk-DrAg0n: ok, den code werde ich von dir übernehmen, wenn ich wieder zu hause bin... was du aber mit dem escapen meinst, habe ich nicht ganz verstanden... der stripslashes(); bewirkt doch (so wie ich das gelesen und verstanden habe), dass die backslashes vor sonderzeichen die der addslashes(); macht wieder entfernt werden... was bringt mir denn das ganze?? also bei einer einwandfreien e-mail addi wohl soviso nichts, da es dort keine sonderzeichen hat, aber auch bei dem
Zitat:
'; TRUNCATE `tabelle`;
würde doch nichts geschehen, oder steh ich da auf dem schlauch??

nochmals danke euch beiden...!

PS: was das HTTP Request zeugs macht, von dem ich nur Bahnhof verstehe versuche ich mit meinem (lausigen) databecker buch zu verstehen...
Lilu ist offline   Mit Zitat antworten
Alt 14.06.07, 20:01   #15 (permalink)
 
Registriert seit: 14.06.07
Bytestream Leistung: Facit NTK
Likes: 0
Standard

Doch, durch eine ungeprüfte Variable kann schon Schaden entstehen. Wieviel hängt von der Konfiguration an ab. Aber man könnte zumindest mittels Bypassing den Login umgehen. Abhilfe schafft die Funktion mysql_real_escape_string()
Bytestream ist offline   Mit Zitat antworten
Antwort
   
- Anzeige -

Werbung ist gerade online    

[HaBo] » Security Area » Webmaster-Security » Login bei meiner Website
Themen-Optionen
Ansicht

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 sind aus
Pingbacks sind aus
Refbacks sind aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Bewertung meiner Website L2G Umfragen 30 07.10.07 21:23
...mit meiner Uhr RedEagle Hardware Probleme 3 02.09.07 05:58
Login bei meiner Website Lilu (Web-) Design und webbasierte Sprachen 8 14.06.07 12:38
WebSite LogIn mit VB DolphVS Code Kitchen 2 12.11.05 19:15
Mit meiner Grafikkarte choasman Die Problemzone 3 23.10.04 16:36


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61