zurück zur Startseite
  


Zurück XHTMLforum > Webentwicklung (außer XHTML und CSS) > Serveradministration und serverseitige Scripte
Seite neu laden Problem mit Captcha Script

Antwort
 
LinkBack Themen-Optionen Ansicht
  #1 (permalink)  
Alt 28.05.2007, 20:15
Opera-User
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 01.08.2006
Ort: Hessen
Beiträge: 100
dementius befindet sich auf einem aufstrebenden Ast
Standard Problem mit Captcha Script

Hey,

Ich baue gerade ein kleines Captcha Skript testweise in ein Gästebuch ein, aber irgendwie komme ich gerade nicht weiter:

captcha.php
PHP-Code:
<?
    setcookie
("spam"""time()-3600);

    function 
randomString($len)
    {

        
srand(date("s"));
        
$possible="abcdefghijkmnpqrstuvwxyz23456789";
        
$str="";

        while(
strlen($str)<$len)
        {
            
$str.=substr($possible,(rand()%(strlen($possible))),1);
        }

        return(
$str);

    }

    
$breite "65";
    
$hoehe "22";

    
header("Content-Type: image/png");
    
$pas ImageCreate($breite$hoehe);
    
$hintergrund ImageColorAllocate($pas10215351);
    
$text ImageColorAllocate($pas255255255);
    
$lf ImageColorAllocate($pas235,235,235);
    
$h "14";
    
$v "3";
    
$key randomString("4");
    
$cookie md5($key);
    
setcookie("spam"$cookietime()+3600);
    
ImageFill($pas00$hintergrund);
    
imagestring($pas,6,$h,$v,$key,$text);
    
ImagePng($pas);
    
ImageDestroy($pas);

?>
Die Datei captcha.php wird per img in die Seite ingebunden, das Captcha wird auch korrekt angezeigt. Wenn ich jetzt aber mit
PHP-Code:
if(isset($_COOKIE['spam']) AND md5($_POST['sicherheitscode']) == $_COOKIE['spam'])
{
  ..
}

else {
  
// Code Falsch!

prüfen will, ob der md5-code im Cookie mit dem angegebenen aus dem Formular übereinstimmt, scheint der Code immer falsch zu sein.

Hoffe jmd kann mir helfen
Greetz
__________________
* html { display: none; }
Mit Zitat antworten
Sponsored Links
  #2 (permalink)  
Alt 28.05.2007, 22:24
Benutzerbild von fox
fox fox ist offline
Erfahrener Benutzer
XHTMLforum-Kenner
 
Registriert seit: 11.09.2006
Beiträge: 1.008
fox sorgt für eine eindrucksvolle Atmosphärefox sorgt für eine eindrucksvolle Atmosphäre
Standard

Überprüf mal, was im Cookie steht und wie die richtige Lösung aussieht, mach debug-Ausgaben, damit kommst du leicht weiter

Bist du sicher, dass das Cookie richtig gesetzt wird?


Außerdem tust du dir leichter, wenn du den Code nicht in Cookies sondern in Sessions speicherst

Was mir grad beim überfliegen auffällt: Der Keks wird nicht gespeichert:

PHP-Code:
setcookie("spam"""time()-3600); 
Nach diesem Code verfällt das Cookie 3600 Sekunden, sprich eine Stunde, vor dem Zeitpunkt an dem es gesendet wird. Der Browser speichert den Keks also nicht und somit kann das ganze gar nicht funktionieren - hier müsste ein + rein
__________________
:)
Mit Zitat antworten
Sponsored Links
  #3 (permalink)  
Alt 28.05.2007, 22:38
Opera-User
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 01.08.2006
Ort: Hessen
Beiträge: 100
dementius befindet sich auf einem aufstrebenden Ast
Standard

Danke schonmal.
Wenn ich das ändere, wird das Cookie komischerweise immer noch nicht gesetzt.

EDIT
Habe das ganze jetzt mit Sessions gelöst, und es funktioniert einwandfrei.
__________________
* html { display: none; }

Geändert von dementius (28.05.2007 um 23:15 Uhr)
Mit Zitat antworten
  #4 (permalink)  
Alt 29.05.2007, 00:19
Benutzerbild von Gumbo
XHTMLforum-Kenner
 
Registriert seit: 22.08.2004
Ort: Trier
Beiträge: 2.733
Gumbo ist jedem bekanntGumbo ist jedem bekanntGumbo ist jedem bekanntGumbo ist jedem bekanntGumbo ist jedem bekanntGumbo ist jedem bekannt
Standard

Wenn du die geheime Information in einem Cookie speicherst, geht dir die Sicherheit, die du mit einem Captcha erhoffst, gleich wieder flöten.
__________________
Markus Wulftange
Mit Zitat antworten
  #5 (permalink)  
Alt 29.05.2007, 09:14
Benutzerbild von fox
fox fox ist offline
Erfahrener Benutzer
XHTMLforum-Kenner
 
Registriert seit: 11.09.2006
Beiträge: 1.008
fox sorgt für eine eindrucksvolle Atmosphärefox sorgt für eine eindrucksvolle Atmosphäre
Standard

Zitat:
Zitat von Gumbo Beitrag anzeigen
Wenn du die geheime Information in einem Cookie speicherst, geht dir die Sicherheit, die du mit einem Captcha erhoffst, gleich wieder flöten.
Nicht unbedingt - schließlich lässt sich vom md5-Hash nicht auf den Ausgangswert schließen.
Allerdings ist es nicht Barrierefrei, ich nehme selbst nur Cookies von bestimmten Seiten an Sessions bieten ja die Möglichkeit, die ID über die Adresse zu übertragen.
__________________
:)
Mit Zitat antworten
  #6 (permalink)  
Alt 29.05.2007, 12:57
Benutzerbild von Gumbo
XHTMLforum-Kenner
 
Registriert seit: 22.08.2004
Ort: Trier
Beiträge: 2.733
Gumbo ist jedem bekanntGumbo ist jedem bekanntGumbo ist jedem bekanntGumbo ist jedem bekanntGumbo ist jedem bekanntGumbo ist jedem bekannt
Standard

Zitat:
Zitat von fox Beitrag anzeigen
Nicht unbedingt - schließlich lässt sich vom md5-Hash nicht auf den Ausgangswert schließen.
Das ist auch gar nicht nötig. Es reicht eine beliebige Zeichenkette par POST und den MD5-Hash davon per Cookie zu senden.
__________________
Markus Wulftange
Mit Zitat antworten
  #7 (permalink)  
Alt 29.05.2007, 13:20
Benutzerbild von fox
fox fox ist offline
Erfahrener Benutzer
XHTMLforum-Kenner
 
Registriert seit: 11.09.2006
Beiträge: 1.008
fox sorgt für eine eindrucksvolle Atmosphärefox sorgt für eine eindrucksvolle Atmosphäre
Standard

Zitat:
Zitat von Gumbo Beitrag anzeigen
Das ist auch gar nicht nötig. Es reicht eine beliebige Zeichenkette par POST und den MD5-Hash davon per Cookie zu senden.
Stimmt, daran hatte ich garnicht gedacht.
__________________
:)
Mit Zitat antworten
  #8 (permalink)  
Alt 29.05.2007, 16:18
Opera-User
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 01.08.2006
Ort: Hessen
Beiträge: 100
dementius befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Es reicht eine beliebige Zeichenkette par POST und den MD5-Hash davon per Cookie zu senden.
Kannst du das evtl. näher erleutern?
__________________
* html { display: none; }
Mit Zitat antworten
  #9 (permalink)  
Alt 29.05.2007, 20:37
Benutzerbild von fox
fox fox ist offline
Erfahrener Benutzer
XHTMLforum-Kenner
 
Registriert seit: 11.09.2006
Beiträge: 1.008
fox sorgt für eine eindrucksvolle Atmosphärefox sorgt für eine eindrucksvolle Atmosphäre
Standard

Zitat:
Zitat von dementius Beitrag anzeigen
Kannst du das evtl. näher erleutern?
Mach ich jetzt einfach mal, obwohl du mich nicht angesprochen hast

Folgendes: Du generierst einen Zufallscode und sendest diesen per Cookie an den Browser - nirgends lokal auf dem Server. Der böse Benutzer, der dein Captcha umgehen will, könnte jetzt einfach eine beliebige Zeichenfolge generieren und den md5-hash speichern.
Der MD5-Wert wird per Cookie an den Server geschickt und die Zeichenfolge selbst per POST (also so, wie es der Benutzer normal eingibt). Du kannst somit also nicht überprüfen, ob der Sicherheitscode von deinem Server oder vom Benutzer stammt.

Bei Sessions hast du dieses Problem nicht, da hierbei nur eine eindeutige ID an den Benutzer gesendet wird, mithilfe derer PHP auf die Werte in der Session zugreift. Manipuliert werden kann da nichts.
__________________
:)
Mit Zitat antworten
Sponsored Links
  #10 (permalink)  
Alt 29.05.2007, 21:18
Benutzerbild von netspy
Erfahrener Benutzer
XHTMLforum-Kenner
 
Registriert seit: 13.08.2004
Ort: Leipzig
Beiträge: 1.953
netspy sorgt für eine eindrucksvolle Atmosphärenetspy sorgt für eine eindrucksvolle Atmosphäre
Standard

fox hat damit erst mal absolut Recht. Allerdings ließe sich dieses Problem lösen, indem man den Hash nicht alleine von dem Sicherheitscode bildet. Wenn man den Hash bspw. so bildet, ist das Ganze schon nicht mehr so leicht zu knacken:
Code:
md5('ganz' . $captcha_code . 'geheim')
Die Variante mit Sessions ist aber dennoch wesentlich besser und auch zuverlässiger.

Mario
__________________
AppDev Blog · AppDev Forum
Mit Zitat antworten
Sponsored Links
Antwort

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 are an
Pingbacks are an
Refbacks are aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
IE 7: Zoom Problem, Höhen Problem, Text problem Cu Chullain CSS 4 02.09.2010 13:56
JQuery Uploadify Upload Ordner Problem Mr. Tool Javascript & Ajax 5 10.06.2010 13:05
PNG in IE Problem mit der Mauserkennung (klickbar oder nicht) Angélique CSS 13 16.03.2010 18:20
Java Script Problem mit Auslagerung. Somba Javascript & Ajax 11 15.01.2007 12:00
Problem mit Background-Color im FireFox to.ni CSS 2 31.08.2004 11:13


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