Dieser Beitrag ist schon älter. Bitte vergewissern Sie sich, dass die Rahmenbedingungen oder der enthaltene Lösungsvorschlag noch dem aktuellen Stand der Technik entspricht.

Captcha PHP Problem

Mitglied: 46356
Hallo

Ich habe ein kleines Problem mit meinem Bot Schutz...
Alle Codes stimmen bis auf keinen und 1...

Ich glaube meine elseif abfrage ist falsch aber ich komme nicht weiter... Ich saß den ganzen Vormittag an diesem Problem, konnte es aber nicht lösen...

Hier der Code:

Falls ihr noch mehr Code braucht, sagt bescheid...

Danke Alex

P.S.: Mein Captcha ist eine Zeichenkette!

Content-Key: 67390

Url: https://administrator.de/contentid/67390

Ausgedruckt am: 23.09.2021 um 03:09 Uhr

Mitglied: SlainteMhath
SlainteMhath 29.08.2007 um 14:33:11 Uhr
Goto Top
Was willst Du denn damit


prüfen?

(!isset($_POST['code']) ergibt true oder false, je nachdem ob $_POST['code'] gesetzt wurde oder nicht.

Diese Ergebniss verlgeichst Du dann mit dem Inhalt von $_SESSION['code'] ...

Ich kenn den Rest vom Code nicht, aber sollte da nicht ein


ausreichen?
Mitglied: 46356
46356 29.08.2007 um 14:38:48 Uhr
Goto Top
Hallo!

Funkioniert leider nicht!
Den ganzen Code:

Lg. Alex
Mitglied: SlainteMhath
SlainteMhath 29.08.2007 um 14:51:30 Uhr
Goto Top
Sieht fast so aus, als wärst Du Dir nicht über den Namen der POST Variable einig:

....<input type="text" name="captcha" size="7.5"> ...
.... $_POST['code']... $SESSION['code']...
... unset($_SESSION['captcha_code']);...


Und nochwas: Les Dir mal ein bischen was über sicheres Programmieren von PHP Scripts an.

Überleg Dir mal, was passiert wenn Dir hier:

jemand '; DELETE FROM users WHERE Nickname<>' in das Nickname Feld im Webformular rein schreibt
Mitglied: Spao
Spao 29.08.2007 um 14:53:11 Uhr
Goto Top
so :) face-smile hab mich mal durch dein code gewühlt ^^

also
1.) sehe nirgendes das die $_SESSION['code'] gefüllt wird. mit was willst du die dann vergleichen ? ( vielleicht in captcha.php ? )

2.) ändere
}elseif(!isset($_POST['code']) == $_SESSION['code'])

in

}elseif(!isset($_POST['code']) || $_POST['code'] != $_SESSION['code'])

3.)
wenn eine der Bedingungen wahr wird löschst du eine andere session
unset($_SESSION['captcha_code']);
müsst da nich $_SESSION['code'] in $_SESSION['captcha_code'] geändert werden ?



kannst nochmal die captcha.php posten ? wenn es noch nicht geht ?
Mitglied: EvilMoe
EvilMoe 29.08.2007 um 14:56:17 Uhr
Goto Top
Ohh das solltest du aber so schnell wie möglich beheben! Stichwort SQL-Injection!
Verwende bevor du die Variablen an die DB schicks "mysql_real_escape_string". Ich habe dafür diese Funktion:

Mitglied: 46356
46356 29.08.2007 um 15:52:50 Uhr
Goto Top
Hallo!

Danke für eure Antworten!

Hier die captcha.php:

Mfg. Alex
Mitglied: SlainteMhath
SlainteMhath 29.08.2007 um 15:58:32 Uhr
Goto Top
Hier die captcha.php:

Ok, nach meinem Dafürhalten sollte dann das elseif so aussehen:

Und bereinige mit EvilMoe's Code alle Eingaben aus dem Formular!

/edit: Tippfehler beseitigt.
Mitglied: 46356
46356 29.08.2007 um 16:16:23 Uhr
Goto Top
Hallo!

Funktioniert trotzdem noch nicht: Du hast die Sicherheitsprüfung nicht bestanden!! Zurück Benutzername alexbreuss wurde erstellt. Login

Was ist noch falsch?

Lg. Alex

P.S.: Könnt Ihr mir ein gutes Buch zum Thema Sicherheit mit PHP-Scripten empfehlen?
Mitglied: Spao
Spao 30.08.2007 um 06:52:44 Uhr
Goto Top
lass dir mal die 2 variablen

$_POST['captcha']
$_SESSION['captcha_code']

mit echo ausgeben. Sind die vielleicht unteschiedlich ?
Mitglied: Guenni
Guenni 10.09.2007 um 16:25:00 Uhr
Goto Top
Selbst wenn die Captcha-Überprüfung funktionieren sollte,
würde das Skript nicht korrekt arbeiten.

Nach der Captcha-Überprüfung geht es nämlich munter weiter mit dem
Anlegen des neuen Users.

Daher auch die Ausgabe, siehe oben:

Funktioniert trotzdem noch nicht:
Du hast die Sicherheitsprüfung nicht bestanden!! Zurück
Benutzername alexbreuss wurde erstellt. Login

Denn woher soll der PHP-Interpreter wissen, dass das Skript gestoppt werden soll,
falls der übertragene Captcha-Code falsch ist? Der Interpreter überprüft nur die
Syntax, nicht aber die Logik des Skript.

Ich muß dem Interpreter also auch sagen, was er im negativem Fall machen soll:


Zum zweiten ist eine solche simple Überprüfung ...


... ziemlich sinnfrei, weil auch die Eingabe eines oder mehrerer Leerzeichen
eine korrekte Eingabe ist. Es würden also im Falle einer positiven
Captcha-Überprüfung einfach Datenfelder mit Leerzeichen in der
Datenbank angelegt!

Die Eingabe sollte also besser über einen regulären Ausdruck
auf erlaubte/nicht erlaubte Zeichen überprüft werden.

Ich habe das Skript oben mal ein wenig verkürzt(wg. Übersicht) und
einige Variablen meiner Umgebung angepasst, nur um die Funktionalität
zu überprüfen.



Grüße
Günni
Mitglied: 46356
46356 17.09.2007 um 15:42:34 Uhr
Goto Top
Hallo Günni!

Du hast mir mit deinem Script sehr geholfen...

Leider werden bei mir die Benutzerdaten nicht in meinen SQL Datenbank geschrieben!

Vielleicht kannst du mir helfen...

Script:


Lg. Alex
Mitglied: 46356
46356 17.09.2007 um 21:25:07 Uhr
Goto Top
Habe das Problem gelöst!

Es lag an der "Instert into ..." eingabe...

Lg. Alex
Heiß diskutierte Beiträge
tip
Outlook 2019 Konto hinzufügen - Kein Benutzername mehr bei IMAP Einstellungen - LösungFrankVor 1 TagTippOutlook & Mail32 Kommentare

Eine weitere Kuriosität unter Office 2019 ist bei mir gerade hart aufgeschlagen. Ich wollte ein normales IMAP/SMTP Konto zu Outlook 2019 hinzufügen. Das war aber ...

question
Dienst-PCs per Image sichern?Yan2021Vor 1 TagFrageBackup17 Kommentare

Hallo Ihr Lieben ;-) So, Urlaub vorbei und schon kommt mal wieder eine Frage von mir. Wir haben hier so rund gerechnet 10 PCs. Da ...

general
VPN-Einwahl für UnternehmensnetzwerkjoergVor 1 TagAllgemeinLAN, WAN, Wireless12 Kommentare

Hallo zusammen, aktuell beschäftige ich mich mit der Frage, ob unsere aktuelle User-VPN-Lösung noch die Richtige ist oder ob es bessere Alternativen gibt. Wir setzen ...

question
Webseite signierenUserUWVor 1 TagFrageInternet9 Kommentare

Gelegentlich möchte man auf einer Webseite kritische Daten veröffentlichen, zum Beispiel Checksummen von Dateien/Programmen oder den Fingerprint eines Schlüssels. Frage: Wie kann man diese Information ...

question
"Aktualisieren und Herunterfahren" nach Windows Update erzwingenFrM222Vor 1 TagFrageWindows Update7 Kommentare

Hallo Zusammen, wir verteilen unsere Windows Updates über WSUS (2016) und haben hier inzwischen eigentlich einen ganz guten Stand. Die Updates werden sehr zügig auf ...

question
Hyper-V VHDX Festplatte verkleinern ratsam gelöst nixwissenderVor 1 TagFrageWindows Server9 Kommentare

Moin! Ich beabsichtige, eine VHDX-Festplatte um ca. 100GB zu verkleinern. Das Vorgehen ist klar, ist es aber ratsam? Dazu habe ich unterschiedliche Meinungen und wollte ...

question
Überspringen ErsteinrichtungHendrik2586Vor 1 TagFrageWindows 106 Kommentare

Moin, moin meine Lieben. Heute mal ein Problem mit dem sich bestimmt schon etliche von euch rumgeschlagen haben. Kurz zur Umgebund des Kunden. DC: Windows ...

question
Unternehmensnetzwerk aufbauenbluelightVor 11 StundenFrageNetzwerke9 Kommentare

Moin zusammen, erstmal vielen Dank an der Stelle, dass mir beim letzten mal so super geholfen wurde! Aktuelle Situation: -> 5 VMs bei Netcup -> ...