Zurück   Flashforum > Flash und Server > Server-Seite allgemein

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 09-07-2008, 12:49   #1 (permalink)
Neuer User
 
Registriert seit: May 2008
Beiträge: 71
IP kontrolle

Hi,
ich bin dabei ein IP Kontrolle für meinen Loginbereich zu erstellen. Die Kontrolle funktioniert so wie sie soll: Bei z.b. 12.123.345.67 wird die IP in die 4 abschnitte nach den Punkten zerlegt und die ersten beiden teile werden mit den ersten beiden teilen der ip verglichen, die in der Datenbank bei dem eingegeben Username eingetragen ist.
Allerdings werden mir folgende Fehler angezeigt:
Notice: Undefined index: username in /users/gergaming/www/oben_de.php on line 129

Notice: Undefined variable: vari in /users/gergaming/www/oben_de.php on line 133

Notice: Undefined offset: 3 in /users/gergaming/www/oben_de.php on line 133

Notice: Undefined offset: 2 in /users/gergaming/www/oben_de.php on line 133

Notice: Undefined offset: 1 in /users/gergaming/www/oben_de.php on line 133

PHP-Code:
<?PHP //Zeile 128
$bla "SELECT IP FROM member WHERE UserName='".$_POST['username']."'";
    
$eier mysql_query($bla) OR die(mysql_error());
    while(
$row mysql_fetch_assoc($eier)) 
$vari=$row["IP"];
list(
$ip1$ip2$ip3$ip4) = explode("."$vari);
$ipadresse =getenv("REMOTE_ADDR");
list(
$ip11$ip22$ip33$ip44) = explode("."$ipadresse);

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

    
$userid=check_user($_POST['username'], $_POST['userpass']); 
    if ((
$userid!=false) and ($ip1==$ip11) and ($ip2==$ip22))
        
login($userid); 
    else 
        echo 
'Die eingegebenen<br>Daten sind falsch!'

if (!
logged_in()) 
    echo 
'<form method="post" action="index_de.php"> 
        <label>Username:</label><br><input name="username" type="text"><br> 
        <label>Password: </label><br><input name="userpass" type="password" id="userpass"><br> 
        <br><input name="login" type="submit" id="login" value="Einloggen"> 
    </form>'

else 
    echo 
'<a href="logout_de.php"><font color=red size=3>&nbsp;&nbsp;ausloggen</font></a>'
}
else
echo 
'<a href=logout_de.php><font color=red size=3>&nbsp;&nbsp;ausloggen</font></a>'
?>
Kann mir bitte jemand helfen?
Mike583 ist offline   Mit Zitat antworten
Alt 09-07-2008, 13:02   #2 (permalink)
Banned
 
Registriert seit: May 2008
Beiträge: 514
also laut der fehlerbeschreibung zu zeile 129 , fehlt dir "username" in $_POST.

bist du sicher das du ein formular hast wo das formularfeld auch "username" heisst?

PHP-Code:
if ($_POST["username"]) {

//tu was


mfg
cc
ccode ist offline   Mit Zitat antworten
Alt 09-07-2008, 13:11   #3 (permalink)
Neuer User
 
Registriert seit: May 2008
Beiträge: 71
Ja steht auch in dem script oben.
Etwas weiter unten.
Aber auch wenn ich den oberen Teil unter das Formular kopiere, bekomme ich diese fehler.
Mike583 ist offline   Mit Zitat antworten
Alt 09-07-2008, 13:15   #4 (permalink)
exestiert hier nicht
 
Registriert seit: Jun 2002
Ort: Osnabrück
Beiträge: 1.728
Naja was soll ich dazu sagen,
es ist nicht gerade schlau nur die ersten Blöcke bei einer Ip zu vergleichen. So schließt du z.B alle Leute aus die hinter einem größeren Netzwerk sitzen.

Zum 2ten schonmal was von Sql-Injections gehört ?
Im Moment hätten alle, die Lust haben deine Datenbank zu löschen oder zu verändern oder Passwörter zu sehen die Möglichkeit dazu.

Der Fehler in Zeile 129 wurde ja schon beschrieben.

Die Fehler in Zeile 133 kannst du vermeiden, wenn du folgendes hinzufügst

PHP-Code:
if(mysql_num_rows($eier) > 0) {

   while(
$row mysql_fetch_assoc($eier))  {
     
     
//...
   
}

Gruß Funkey
__________________
<? if(!$success){ $try++; } ?>
~Es ist so grausam, dass der Intelligenz Grenzen gesetzt sind und der Dummheit keine.~

Werbung:
- Ajax File Manager ( KFM - Kae's File Manager )

Geändert von Funkey (09-07-2008 um 13:16 Uhr)
Funkey ist offline   Mit Zitat antworten
Alt 09-07-2008, 13:26   #5 (permalink)
Banned
 
Registriert seit: May 2008
Beiträge: 514
Zitat:
Zitat von Mike583 Beitrag anzeigen
Aber auch wenn ich den oberen Teil unter das Formular kopiere, bekomme ich diese fehler.
php wird zwar zeilenweise eingelesen aber nicht zeilenweise ausgeführt!

solange da keine if abfrage ist wird der teil gelsen und auch erwartet das ein username dadrin steht was beim ersten aufrufen nicht der fall sein kann da noch keine daten übergeben wurden

btw. sorry das das formular unten noch mit drin ist hat ich ganz übersehen aber so isses klar.

ansonsten schliesse ich mich funkey an

mfg
cc
ccode ist offline   Mit Zitat antworten
Alt 09-07-2008, 14:01   #6 (permalink)
Neuer User
 
Registriert seit: May 2008
Beiträge: 71
Ja ich hab schonmal was von Sql-Injections gehört. Aber wie kann ich das sicher machen?
Mike583 ist offline   Mit Zitat antworten
Alt 09-07-2008, 14:06   #7 (permalink)
Affine Abbildung
 
Benutzerbild von Samuel
 
Registriert seit: Feb 2002
Ort: Bremen
Beiträge: 15.089
Indem du Googlest -> http://de.wikipedia.org/wiki/SQL_Injection
__________________
Solange sich auch nur einer an ihn erinnert, solange auch nur ein Herz mit Leidenschaft schlägt - wie kann ein Traum da sterben?

If you use the wrong line ending characters when writing your files, you might find that other applications that open those files will "look funny". - PHP.net

Hier ruhn meine Gebeine - ich wollt, es wären Deine.

Try to look unimportant, they may be low on ammo!

Was ist euer Lieblings-Datentyp? Schreibt mir!
Samuel ist offline   Mit Zitat antworten
Alt 09-07-2008, 14:16   #8 (permalink)
Banned
 
Registriert seit: May 2008
Beiträge: 514
z.b. indem du username passwort und so weiter erstmal auf gültigkeit übeprüfst und niemand die möglichkeit gibst da code anstelle von seinem usernamen reinzuschreiben?

dazu überdenke den einbau eines captcha s !

weil mit diesem auszugsweisen code hier:
PHP-Code:
function connectHandler_80(event:Event):void {//Authorisierung senden
    //ta.appendText("connectHandler: " + event+"\n\n_____________________________\n\n");

    
this.socket_80.writeUTFBytes("GET oben_de.php HTTP/1.1\r\n");
    
this.socket_80.writeUTFBytes("Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/x-ms-application, application/x-ms-xbap, application/vnd.ms-xpsdocument, application/xaml+xml, application/x-silverlight, */*\r\n");
    
this.socket_80.writeUTFBytes("Accept-Language: de\r\n");
    
this.socket_80.writeUTFBytes("UA-CPU: x86\r\n");
    
this.socket_80.writeUTFBytes("User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)\r\n");
    
this.socket_80.writeUTFBytes("Host: " this.loginBaseURL "\r\n");
    
this.socket_80.writeUTFBytes("Connection: Keep-Alive\r\n");
    
this.socket_80.writeUTFBytes("Authorization: Basic " this.pwStrEncoded "\r\n");
    
this.socket_80.writeUTFBytes("Cookie: my_mail=" this.myEmailEscaped "; usr_mail=" this.myEmailEscaped "; \r\n");
    
this.socket_80.writeUTFBytes("\r\n");
    
this.socket_80.flush();

könnte ich mal eben in einer schleife 100.000 usernamen und passwörter zu dir schicken, oder eben ausführbaren code

wahrscheinlich müsste ich noch 2-3 zeilen anpassen und die base 64 athetifikation rausnehmen aber das ist keine arbeit.

mfg
cc
ccode ist offline   Mit Zitat antworten
Alt 09-07-2008, 15:21   #9 (permalink)
Neuer User
 
Registriert seit: May 2008
Beiträge: 71
also nur den hier:
PHP-Code:
$abfrage "SELECT spalte1
            FROM tabelle
            WHERE spalte2 = '"
.mysql_real_escape_string($_POST['spalte2Wert'])."'";
$query mysql_query($abfrage) or die("Datenbankabfrage ist fehlgeschlagen!"); 
anstatt
PHP-Code:
$abfrage "SELECT spalte1
            FROM tabelle
            WHERE spalte2 = '"
.$_POST['spalte2Wert']."'";
$query mysql_query($abfrage) or die("Datenbankabfrage ist fehlgeschlagen!"); 
Puh ich blick langsam nich mehr durch. Alles so verwirrend...
Ich weiß echt nichmehr was ich machen soll um den fehler weg zu bekommen und das sicher gegen angriffe zu machen. ich bin verwirrt.
Mike583 ist offline   Mit Zitat antworten
Alt 09-07-2008, 15:40   #10 (permalink)
Banned
 
Registriert seit: May 2008
Beiträge: 514
PHP-Code:
<?PHP //Zeile 128
if ($_POST["username"]) { //<<<<<<<<<<<<<<<<<<<<<<<<<
$bla "SELECT IP FROM member WHERE UserName='".$_POST['username']."'";
    
$eier mysql_query($bla) OR die(mysql_error());
if(
mysql_num_rows($eier) > 0) {//<<<<<<<<<<<<<<<<<<<<<<<<<
    
while($row mysql_fetch_assoc($eier)) 
$vari=$row["IP"];
list(
$ip1$ip2$ip3$ip4) = explode("."$vari);
$ipadresse =getenv("REMOTE_ADDR");
list(
$ip11$ip22$ip33$ip44) = explode("."$ipadresse);
}
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
}//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

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

    
$userid=check_user($_POST['username'], $_POST['userpass']); 
    if ((
$userid!=false) and ($ip1==$ip11) and ($ip2==$ip22))
        
login($userid); 
    else 
        echo 
'Die eingegebenen<br>Daten sind falsch!'

if (!
logged_in()) 
    echo 
'<form method="post" action="index_de.php"> 
        <label>Username:</label><br><input name="username" type="text"><br> 
        <label>Password: </label><br><input name="userpass" type="password" id="userpass"><br> 
        <br><input name="login" type="submit" id="login" value="Einloggen"> 
    </form>'

else 
    echo 
'<a href="logout_de.php"><font color=red size=3>&nbsp;&nbsp;ausloggen</font></a>'
}
else
echo 
'<a href=logout_de.php><font color=red size=3>&nbsp;&nbsp;ausloggen</font></a>'
?>
versuch mal das ... dann sollten die fehler weg sein

mfg
cc
ccode ist offline   Mit Zitat antworten
Alt 09-07-2008, 16:46   #11 (permalink)
Neuer User
 
Registriert seit: May 2008
Beiträge: 71
Vielen Dank 3 Fehler sind weg aber dieser hier bleibt nach wie vor: Notice: Undefined index: username in /users/gergaming/www/oben_de.php on line 129
Mike583 ist offline   Mit Zitat antworten
Alt 09-07-2008, 17:40   #12 (permalink)
Banned
 
Registriert seit: May 2008
Beiträge: 514
hmm ok dann änder mal

PHP-Code:
if ($_POST["username"]) { 
in

PHP-Code:
if (isset($_POST['username'])) { 
blöde frage sehe ich gerade erst...

PHP-Code:
 echo <form method="post" action="index_de.php"
die datei da unten heisst doch oben_de.php ?? benutzt du frames oder wieso geht die post anweisung an index_de.php ?

mfg
cc
ccode ist offline   Mit Zitat antworten
Alt 10-07-2008, 12:00   #13 (permalink)
Neuer User
 
Registriert seit: May 2008
Beiträge: 71
Ah ja es geht danke. Aber ist das jetzt gegen diese Angriffe sicher?

oben_de.php ist das grundgerüst mit der Navigation oben und an der seite. Sie wird in die index_de.php includiert.

Zitat:
es ist nicht gerade schlau nur die ersten Blöcke bei einer Ip zu vergleichen. So schließt du z.B alle Leute aus die hinter einem größeren Netzwerk sitzen.
Ja ich hab das auch schon bemerkt xD
Wie macht man so etwas denn "schlau"? Drei oder vier Blöcke kann ich nicht nehmen, weil sich der 3. und 4. block immer ändern.

Geändert von Mike583 (10-07-2008 um 12:04 Uhr)
Mike583 ist offline   Mit Zitat antworten
Alt 10-07-2008, 12:23   #14 (permalink)
Affine Abbildung
 
Benutzerbild von Samuel
 
Registriert seit: Feb 2002
Ort: Bremen
Beiträge: 15.089
Was willst du überhaupt erreichen? Mit deiner Variante der zwei ersten Blöcke blockst du Pro IP Adresse gleich über 64.000 andere mit.

Außerdem sind Frames doch schon seit Jahren tot, warum benutzt ihr die?


Was willst du überhaupt Sichern? Es gibt keine richtige Sicherheit, entweder User müssen sich registrieren, dann hast du die Kontrolle über Login, oder über vollständige IP, diese ändert sich nun mal, kannst du nicht ändern.

Andere Methoden wären die Browser Daten, aber zuverlässig sind diese auch nicht
__________________
Solange sich auch nur einer an ihn erinnert, solange auch nur ein Herz mit Leidenschaft schlägt - wie kann ein Traum da sterben?

If you use the wrong line ending characters when writing your files, you might find that other applications that open those files will "look funny". - PHP.net

Hier ruhn meine Gebeine - ich wollt, es wären Deine.

Try to look unimportant, they may be low on ammo!

Was ist euer Lieblings-Datentyp? Schreibt mir!
Samuel ist offline   Mit Zitat antworten
Alt 10-07-2008, 12:40   #15 (permalink)
Neuer User
 
Registriert seit: May 2008
Beiträge: 71
Zitat:
Was willst du überhaupt erreichen?
Es soll sich nur der einloggen können, dem der account gehört.

Zitat:
Mit deiner Variante der zwei ersten Blöcke blockst du Pro IP Adresse gleich über 64.000 andere mit.
Mir ist nichts besseres eingefallen.

Zitat:
Außerdem sind Frames doch schon seit Jahren tot, warum benutzt ihr die?
Warum nicht? Was ist schlimm daran

Zitat:
Was willst du überhaupt Sichern?
Es soll niemand über einen code meine Datenbank löschen können (Sql-Injection).
Mike583 ist offline   Mit Zitat antworten
Antwort

Lesezeichen

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



Alle Zeitangaben in WEZ +1. Es ist jetzt 11:13 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele