- Ad -
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! Post your PHP questions here!

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 18-07-2007, 15:28
Dj Mik
 Registrierter Benutzer
Links : Onlinestatus : Dj Mik ist offline
Registriert seit: Jan 2003
Ort: Siebenen SZ Schweiz
Beiträge: 96
Dj Mik ist zur Zeit noch ein unbeschriebenes Blatt
Dj Mik eine Nachricht über ICQ schicken
Standard Sicherheit prüfen

Hallo
Es wäre sehr nett, wenn mir jemand folgendes auf Sicherheit prüfen könnte und mir ein paar Tips geben könnte.
Ich danke schon ein mal im Voraus

Vorab: Folgende Codes dienen den Übungszweck. Kommentare habe ich nicht für nötig gehalten, da das ganze nicht zu gross ist/wird.




login.php
PHP-Code:
<!DOCTYPE html Public 
"-//W3C//DTD XHTML 1.0 Strict//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-script.dtd"> 
<html> 
<head><title>ACS Login</title></head> 
<body> 
<?php 
include "connect.php"
include 
"shc.php"

?> 
<center><h1>Willkommen Zum Login in die ACS</h1><br><br> 
<form action="logein.php" method="post"> 
<table border="1" bordercolor="#FF0033"> 
<tr> 
<td width="50%">Name:</td><td width="50%"><input type="text" name="uname"></td> 
</tr> 
<tr> 
<td width="50%">Passwort:</td><td width="50%"><input type="password" name="pwort"></td> 
</tr> 
<tr> 
<td width="50%"><img border="0" height="50" src="grafischer-code.php?ID=<?php echo$ID?>" width="200"></td>
<td width="50%"><input name="ID" type="hidden" value="<?php echo$ID?>"> 
<input maxlength="6" name="EingegebenerCode" size="6" type="text"></td></tr> 
<tr> 
<td><input type="submit" value="Einlogen"</td> 
</tr> 
</body> 
</html>


Bei der Datei connect.php bin ich mir sicher, dass die Datei gut ist


shc.php
PHP-Code:

<?php 




$TableCode 
"Code"




$Buchstaben = array("A""B""C""D""E""F""G""H""K""M""N""P""Q""R""S""T""U"
"V""W""X""Y"); 
$Zahlen = array("2""3""4""5""6""7""8""9"); 




for(
$i 0$Code ""$AngezeigterCode ""strlen($Code) < 6$i++) 

if(
rand(01) == && isset($Buchstaben)) 

$Buchstabe $Buchstaben[rand(0count($Buchstaben)-1)]; 
$Code .= $Buchstabe
$AngezeigterCode .= $Buchstabe." "

else 

$Zahl $Zahlen[rand(0count($Zahlen)-1)]; 
$Code .= $Zahl
$AngezeigterCode .= $Zahl." "






$AngezeigterCode trim($AngezeigterCode); 




mysql_query("INSERT INTO $TableCode (Code, AngezeigterCode) VALUES ('$Code', '$AngezeigterCode')"); 
$ID mysql_insert_id(); 




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


<?php 

include "connect.php"
$TableCode "Code"

$ResultPointer mysql_query("SELECT Code FROM $TableCode WHERE ID = '".intval($_REQUEST['ID'])."'"); 
$Result mysql_fetch_object($ResultPointer); 
if(
strtolower($Result->Code) == strtolower($_REQUEST['EingegebenerCode'])) 

$mg $_POST['uname']; 
$pw md5($_POST['pwort']); 

$kontr "SELECT Mitglied, Passwort FROM admin WHERE Mitglied LIKE '$mg' LIMIT 1"
$ausk mysql_query($kontr); 
$row mysql_fetch_object($ausk); 

if(
$row->Passwort == $pw) { 
$_SESSION['Mitglied'] = $mg
echo 
"Login war erfolgreich.<br> 
<a href=\"acs.php\">Bitte Hier klicken um in die ACS weitergeleitet zu werden</a>"


else { 
echo 
"Benuterz und/oder Passwort ist falsch bitte noch mal versuchen.<br> 
<a href=\"login.php\">Hier gehts zurück</a>"



else { 
echo 
"Bildercode ist falsch! <a href=\"login.php\">Zurück</a>"

mysql_close($verbindung); 
mysql_error(); 
error_reporting(); 
?>

Dann bginnt es mit:
PHP-Code:
<?php 
session_start
(); 
?> 
<?php 


if(!isset($_SESSION['Mitglied'])) { 
echo 
"Bitte zuerst einlogen <a href=\"login.php\">Zum Login</a>"
exit; 

?>
Mit Zitat antworten
  #2 (permalink)  
Alt 18-07-2007, 15:41
jahlives
 Master
Links : Onlinestatus : jahlives ist offline
Registriert seit: Jun 2004
Ort: Hooker in Kernel
Beiträge: 8.280
jahlives ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zum Thema Code aufbauen: Ginge so doch schneller
PHP-Code:
$array array_merge(range('A','Z'),range(2,9));
shuffle($array);
$code implode('',array_slice($array,0,5)); 
Gruss

tobi
Mit Zitat antworten
  #3 (permalink)  
Alt 18-07-2007, 15:56
Dj Mik
 Registrierter Benutzer
Links : Onlinestatus : Dj Mik ist offline
Registriert seit: Jan 2003
Ort: Siebenen SZ Schweiz
Beiträge: 96
Dj Mik ist zur Zeit noch ein unbeschriebenes Blatt
Dj Mik eine Nachricht über ICQ schicken
Standard

Danke Tobi

Den Script habe ich als Tutorial auf webmaster-resource gelesen und angepasst.

Im Script gab es einige Fehler die ich schon behoben habe.
Darum frage ich auch nach, ob das ganze sicher ist.

Das mit array_merge hätte ich auch selbst drauf kommen können -.-
habe gerade erst kürzlich im buch von dem gelesen -.-

Mir geht es hauptsächlich bei dem ganzen um die Sicherhei.
Das mir kein billiger coder das login knackt und dort herumwühlt ^^
Mit Zitat antworten
  #4 (permalink)  
Alt 18-07-2007, 17:54
TobiaZ
  Moderator
Links : Onlinestatus : TobiaZ ist offline
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.425
Blog-Einträge: 1
TobiaZ befindet sich auf einem aufstrebenden Ast
Standard

der code sieht alles in allem eher "schlecht" aus.

Und wenn ich dann sowas hier sehe
PHP-Code:
$mg $_POST['uname']; 
$kontr "SELECT Mitglied, Passwort FROM admin WHERE Mitglied LIKE '$mg' LIMIT 1"
dann hat sich die Frage nach der Sicherheit, denke ich, erledigt. Das sind aber nun wirklich grundlagen. Da muss nicht jeder für jeden seiner Code einen extra Thread aufmachen...
__________________
ERST LESEN: Unsere Regeln. | Ich hab schon Pferde kotzen sehn!

READ THIS: Strings richtig trennen/verbinden | JOINs, das leidige Thema | Wegwerf E-Mail Adressen

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
  #5 (permalink)  
Alt 18-07-2007, 20:52
Dj Mik
 Registrierter Benutzer
Links : Onlinestatus : Dj Mik ist offline
Registriert seit: Jan 2003
Ort: Siebenen SZ Schweiz
Beiträge: 96
Dj Mik ist zur Zeit noch ein unbeschriebenes Blatt
Dj Mik eine Nachricht über ICQ schicken
Standard

Was meinst jetzt bei dem?
Direkt in ein mysql querry stopfen oder wie?
oder meinst, inval($_POST['uname']);


???

oder meinst du das mit Passwort und Mitglied, dass man das nicht benützen sollte?
Mit Zitat antworten
  #6 (permalink)  
Alt 18-07-2007, 20:59
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.649
Kropff befindet sich auf einem aufstrebenden Ast
Standard

1. eingabe ungeprüft übernommen
PHP-Code:
$mg $_POST['uname']; 
2. kein like
PHP-Code:
$kontr "SELECT Mitglied, Passwort FROM admin WHERE Mitglied LIKE '$mg' LIMIT 1"
3. genauer arbeiten, passwort nicht auswählen, nur überprüfen
PHP-Code:
$kontr "SELECT Mitglied FROM admin WHERE Mitglied = '$mg' AND passwort = '$pw'"
und bitte über sql-injections informieren.

gruß
peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
  #7 (permalink)  
Alt 18-07-2007, 21:49
Dj Mik
 Registrierter Benutzer
Links : Onlinestatus : Dj Mik ist offline
Registriert seit: Jan 2003
Ort: Siebenen SZ Schweiz
Beiträge: 96
Dj Mik ist zur Zeit noch ein unbeschriebenes Blatt
Dj Mik eine Nachricht über ICQ schicken
Standard

erstmals vielen danke!
genau das mit sql-injections habe ich für mein Gästebuch gesucht.
Ich habe es mal durch gelesen und hoffe, ich habe es richtig verstanden

1.
PHP-Code:
$mg $_POST['uname']; 
Also sollte ich hier erst mal prüfen, ob Sonderzeichen drin sind und diese verbieten (z.B. Anführungszeichen, Prozentzeichen, etc.)
Ok, werde ich mal machen.

3.
PHP-Code:
$kontr "SELECT Mitglied FROM admin WHERE Mitglied = '$mg' AND passwort = '$pw'"
Das geht O.o? statt Mitglied würde doch auch ein * gehen? Oder ist das zu gefährlich?
Mit Zitat antworten
  #8 (permalink)  
Alt 18-07-2007, 21:54
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.649
Kropff befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Also sollte ich hier erst mal prüfen, ob Sonderzeichen drin sind und diese verbieten
hauptproblem ist so was:
PHP-Code:
// eingabe
$_POST['uname'] = 'user WHERE 1=1'
gruß
peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
  #9 (permalink)  
Alt 18-07-2007, 21:56
Griecherus
 PHP Senior
Links : Onlinestatus : Griecherus ist offline
Registriert seit: May 2005
Ort: Berlin
Beiträge: 1.036
Griecherus ist zur Zeit noch ein unbeschriebenes Blatt
Standard

In Sachen Maskierung potenziell gefährlicher Zeichen im SQL-Query-String: mysql_real_escape_string aus dem Manual.

Von SELECT * ist abzuraten, insbesondere wenn nicht alle Spalten benötigt werden. Benötigst du nur Spalte_a (oder auch Spalte_b und Spalte_c), dann selektiere auch nur diese. Das gehört (für mich) zum sauberen und übersichtlichen Programmieren und kann auch zur Performance beitragen.
Mit Zitat antworten
  #10 (permalink)  
Alt 18-07-2007, 21:59
Dj Mik
 Registrierter Benutzer
Links : Onlinestatus : Dj Mik ist offline
Registriert seit: Jan 2003
Ort: Siebenen SZ Schweiz
Beiträge: 96
Dj Mik ist zur Zeit noch ein unbeschriebenes Blatt
Dj Mik eine Nachricht über ICQ schicken
Standard

@Kropf

Sorry, habe ab und zu mal durcheinander und verstehe nichts


$mg = QB_SECURE_MYSQL_PARAM($_POST['uname']);

Das würde ja schon mal reichen?

Mit Zitat antworten
  #11 (permalink)  
Alt 18-07-2007, 22:36
JimmDaBimm
 Registrierter Benutzer
Links : Onlinestatus : JimmDaBimm ist offline
Registriert seit: Jun 2007
Beiträge: 53
JimmDaBimm ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von Griecherus
In Sachen Maskierung potenziell gefährlicher Zeichen im SQL-Query-String: mysql_real_escape_string aus dem Manual.

Dazu hab ich auch mal ne Frage; ist addslasches weniger sicher wenn es um Mysql geht? Weil ich lese oft "mysql-real-escape-string" aber so weit ich weiß, bewirt adsslasches das Gleiche... oder gibt es dort gravierende Unterschiede?
Mit Zitat antworten
  #12 (permalink)  
Alt 18-07-2007, 22:45
TobiaZ
  Moderator
Links : Onlinestatus : TobiaZ ist offline
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.425
Blog-Einträge: 1
TobiaZ befindet sich auf einem aufstrebenden Ast
Standard

@Mik: "QB_SECURE_MYSQL_PARAM" WTF??? Woher hast du das?

@Jimm:

Zitat:
mysql_real_escape_string() calls MySQL's library function mysql_real_escape_string, which prepends backslashes to the following characters: \x00, \n, \r, \, ', " and \x1a.
__________________
ERST LESEN: Unsere Regeln. | Ich hab schon Pferde kotzen sehn!

READ THIS: Strings richtig trennen/verbinden | JOINs, das leidige Thema | Wegwerf E-Mail Adressen

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
  #13 (permalink)  
Alt 18-07-2007, 22:54
JimmDaBimm
 Registrierter Benutzer
Links : Onlinestatus : JimmDaBimm ist offline
Registriert seit: Jun 2007
Beiträge: 53
JimmDaBimm ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von TobiaZ


@Jimm:
Hab ich ja... aber addslashes() escaped die genannten Sachen ebenfalls. Deshalb bin ich etwas verwundert.
Mit Zitat antworten
  #14 (permalink)  
Alt 18-07-2007, 23:43
Dj Mik
 Registrierter Benutzer
Links : Onlinestatus : Dj Mik ist offline
Registriert seit: Jan 2003
Ort: Siebenen SZ Schweiz
Beiträge: 96
Dj Mik ist zur Zeit noch ein unbeschriebenes Blatt
Dj Mik eine Nachricht über ICQ schicken
Standard

http://www.erich-kachel.de/quibui_ap..._schuetzen.php

ist das mit der session eigendlich sicher?
Wären vieleicht Cookies besser?

Geändert von Dj Mik (18-07-2007 um 23:54 Uhr)
Mit Zitat antworten
  #15 (permalink)  
Alt 18-07-2007, 23:55
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 24.962
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Original geschrieben von JimmDaBimm
Dazu hab ich auch mal ne Frage; ist addslasches weniger sicher wenn es um Mysql geht? Weil ich lese oft "mysql-real-escape-string" aber so weit ich weiß, bewirt adsslasches das Gleiche... oder gibt es dort gravierende Unterschiede?
Zum x-ten verflixten Mal:

Dass addslashes das gleiche tut wie mysql_real_escape_string, ist reiner Zufall, und kann sich in Zukunft auch beliebig ändern.
Vielleicht ändert sich DB-seitig mal irgendwas, was die Maskierung weiterer Zeichen notwendig macht - dann wird mysql_real_escape_string sicher entsprechend angepasst - addslashes aber wohl kaum, warum sollte es auch ...

Also: Zum Absichern von Eingaben, die in eine MySQL-Query eingebaut werden, wird mysql_real_escape_string verwendet, weil diese Funktion extra dafür gedacht ist - PUNKT. Wer stattdessen eine andere, die das gleiche zu machen scheint (wie bspw. addslashes), dafür nutzt - ist ein Idiot.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
Antwort

Lesezeichen


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

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

vServer-Angebot von Mittwald.de
vServer-Angebot von Mittwald.deAgentur-Toolbox für 3 Monate kostenlos testen

04.08.2014 | Berni

Magento - Was erwartet uns mit Magento 2?
Magento - Was erwartet uns mit Magento 2?Es scheint die Roadmap zur Veröffentlichung der neuen, von der Magento Gemeinde heiß ersehnten Magento Version 2 zu stehen. Welche Neuerungen Magento User und Entwickler mit der Version 2.0 erwarten können, haben wir für Euch hier kurz zusammengefasst.

30.07.2014 | Berni

 

Aktuelle PHP Scripte

Phpstorm ansehen Phpstorm

Umfangreiche Entwicklungsumgebung für PHP-Programmierer inkl JavaScript und HTML Support. Jetzt Version 8.0!

18.09.2014 Berni | Kategorie: PHP ENTWICKLUNGSUMGEBUNG
CSS3 Image Loading Effects

So setzt Ihr eure Bilder richtig in Szene.

15.09.2014 Berni | Kategorie: HTML5/ CSS-Responsive
NodeBB

NodeBB ist eine Foren-Software auf NodeJS-Basis

10.09.2014 Berni | Kategorie: PHP/ Forum PHP Software
 Alle PHP Scripte anzeigen

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