Grafikcode mit php
Arne
- php
Hallo,
ich möchte ein loginscript schreiben was voraussetzt, dass ein grafischer code (bestehend aus zahlen / buchstaben) abgetippt wird.
so wie es diese seite auch mach http://login.xwars.de
Würde mich sehr um Hilfe oder ein Tutorial freuen. Habe leider noch nichts gefunden.
Gruß
Arne
Hallo,
ich möchte ein loginscript schreiben was voraussetzt, dass ein grafischer code (bestehend aus zahlen / buchstaben) abgetippt wird.
Was hast Du denn fuer so wichtige und
so schuetzenswerte Inhalte, dass Du
meinst, einen solchen "Schutz" machen
zu muessen?
---
Es gibt (mindestens) zwei Methoden:
1. Die <img>-Tags fuer mehrere kleine Teil-Grafiken
ausgeben, die dann im Browser "aneinander kleben".
2. Eine richtige Grafik mit PHP zusammenbasteln.
Dafuer musst Du die Bibliothek GD zur Verfuegung haben.
Schau mal in der phpinfo(), was unter GD steht,
und kopiere diese Infos hierhin, wenn Du wirklich
diesen Weg in Angriff nehmen willst.
Gruesse,
Thomas
Moin!
Es gibt (mindestens) zwei Methoden:
Die <img>-Tags fuer mehrere kleine Teil-Grafiken
ausgeben, die dann im Browser "aneinander kleben".Eine richtige Grafik mit PHP zusammenbasteln.
Dafuer musst Du die Bibliothek GD zur Verfuegung haben.
Schau mal in der phpinfo(), was unter GD steht,
und kopiere diese Infos hierhin, wenn Du wirklich
diesen Weg in Angriff nehmen willst.
Diese Methoden haben einen entscheidenenden Nachtteil: Die Grafiken sind durch böse Skripte auf der "Browserseite" identifizierbar und zwar durch den Name oder die Größe.
Der bessere Weg:
[1] erzeuge die Grafiken mit einem geigneten Programm im PNG- Format, dieses kennt Kommentare...
[2] Kommetiere die Grafiken so lange, bis alle die exakte Größe der größten Grafik haben.
[3] erzeuge mehrere Sätze dieser Grafiken: ein Skript könnte Hash- Summen (CRC) verwenden um die Grafiken zu identifizieren.
Du brauchst: abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ012345[6.]78[9.]
Das sind 26+26+10=62 * x (für die Anzahl der Sätze) Grafiken.
Speichere die Grafiken im Dateisystem unter [stelle]_[satz].
[4] Du vergibst dem Besucher eine Session- ID.
[5] Du benötigst eine "grafik.pl" oder was immer folgendes macht:
Erzeugt zwei Zufallszahlen, eine für die Grafik [stelle], eine für den [satz].
Diese beiden Zahlen zu einem String zusammenfügen.
[stelle] (also das erwartete Zeichen) an das Ende einer Datei schreiben, die eventuell bereits die Stelle(n) vorgehende(n) Grafik(en) enthält oder halt in eine Datenbank... jeweils der session- id zugeordnet. Dazu die Zeit (beim ersten Eintrag)
Liest die Grafikdatei, welche dem String entspricht, vom Dateisystem in eine Variable und liefert diese per print aus, Achtung : sende zuvor den richtigen Content-type.
[6] Du sendest die Seite mit der Session und entsprechende Tags
<img src="grafik.pl?sid=[SESSION]" height...><img src="grafik.pl?sid=[SESSION]" height...> mach das n - Mal jedesmal wird ein Zeichen unter der Session gespeichert.
[7] Formular...
[8] Der Benutzer tippt etwas ein... Das vergleichst Du anhand der Session mit den gespeicherten Daten.
[9] Schau noch zu, wie Du überaltete Sessions loswirst.
[10a] Im Positiv- Fall: weiter, Benutzer anhand der Session weiter identifizieren.
[10b]Im Negativ- Fall: Beliebige Fehlermeldung.
Ach ja: Wenn Dein Sicherheitsbewustsein sich der Paranoia annähert brauchst sehr viele Sätze a 62 oder mehr Zeichen (wegen der CRC- Summen und der Identifizierungmöglichkeit durch trial & error -> böse Skripte der Benutzer- natürlich kannst Du auch den Zeichensatz erweitern. Denke aber an die nichtdeutschen Tastaturen)
Alternativ (und noch besser) statt [1]-[3],[5]: Erzeuge die Grafik per PHP, achte aber darauf, daß Du neben einem zufälligen Schriftzeichen in zufälliger Größe und zufälliger Position sowie zufälliger Farbe des selben auch noch eine zufällige Anzahl Graupixel im Hintergrund an zufälligen Positionen plazierst (wegen der CRC- Summe und/oder Dateigröße, die sonst "erlernbar" ist).
--Ach so:--
Achte darauf, daß Du kein Patent verletzt. Ich schätze nämlich, dies hat sich eirgendeiner schon patentieren lassen.
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix®
hi,
also erstmal danke. hab jetzt ne idee bekommen wie man die sachen angehen könnte. werde es mal versuchen.
der grafikcode soll dafür da sein, dass sich nicht irgendein script in die seite einloggen kann bzw es schwieriger wird ein script zu schreiben was das kann.
danke!
arne