cgicorner.ch (https://www.cgicorner.ch/cgi-bin/YaBB/YaBB.cgi)
Hilfe >> jsGuest >> Secure-Code als Text ohne GD-Modul
(Thema begonnen von: cgicorner.ch am 05. März 2006 um 23:19)

Titel: Secure-Code als Text ohne GD-Modul
Beitrag von cgicorner.ch am 05. März 2006 um 23:19
Bezieht sich auf die Anfrage im Gästebuch:


Quote:
Hallo Juerg
Erstmal ein grosses Lob - super Script.
Leider scheidere ich ebenfalls am GD-Modul zur Erzeugung des Validierungscodes. Mein Webserver obliegt leider nicht meiner Hoheit
Eine etwas 'abgespeckte' Variante (nur eine Zufallszahl) als Validierungscode ist nicht etwa geplant ?

Gruss aus dem verschneiten Franken
Bernhard


Nein, geplant ist es nicht, aber es ist mit relativ geringem Aufwand machbar. Klar ist: der Code in Textform kann problemlos ausgelesen werden, d.h. automatisierte Einträge sind weiterhin möglich. Inwiefern dies bereits von Spammern missbraucht wird, kann ich nicht genau sagen. Möglich, dass es überhaupt nichts nützt, möglich, dass es den Gästebuch-Spam ebenfalls erheblich reduziert.

Wichtig: Vor der Anpassung des Scripts sollte natürlich ein Backup gemacht werden. Ebenfalls ist die Anpassung nach jedem Update auf eine neuere jsGuest-Version wieder durchzuführen.

Schritt 1: Validierungscode-Image entfernen
Im Template-File (neuer Eintrag) muss der der Verweis auf das Validierungscode-Image
<img src="<!--CGIURL-->?action=seccode&id=<!--id-->"/>
entfernt und durch
<!--seccode-->
ersetzt werden. Die ID-Zeile
<input type="hidden" name="id" value="<!--id-->"/>
ist weiterhin erforderlich!

Schritt 2: ID bei Formular-Anzeige generieren lassen
In der Datei jsguest.cgi muss im Abschnitt "sub newForm" zwischen IF-Abfrage und open-Anweisung der folgende Code 1:1 eingefügt werden:
           if ($DATA{"SC".$serverTime} > 0) {    # ID in Data-File --> verwenden
                 $FORMDATA{"seccode"}=$DATA{"SC".$serverTime};
           } else {   # nicht in Data-File --> generieren und speichern
                 $id=sprintf("%5.5d",int(rand(100000)));
                 $DATA{"SC".$serverTime}=$id;
                 $FORMDATA{"seccode"}=$id;
                 if (&lockFile($CONFIG{"DataFile"})) {
                       &saveDataFile;
                       &unlockFile($CONFIG{"DataFile"});
                 }
           }


Schritt 3: Validierungscode aktivieren
Im Adminbereich unter "Gästebuch Einstellungen ändern" muss die Option "Secure-Code (Missbrauchsschutz)" aktiviert werden.

Die Scriptanpassung wird offiziell von jsGuest nicht unterstützt. Fragen, Anregungen und Probleme können aber in diesem Forums-Thread veröffentlicht werden. Sofern irgendwie möglic h helfe ich gerne...

Gruss
Jürg

Titel: Re: Secure-Code als Text ohne GD-Modul
Beitrag von Roger am 29. Mai 2006 um 16:27
Hallo

Find jsguest absolut top. Nur leider beginnt jetzt die SPAM geschichte  *motz* und mein hoster hat leider das GD bzw. das perl-GD nicht.

Scheinbar bin ich aber zu dumm, das ganze nach der Anleitung umzubauen.

ich stecke hier fest:
"Schritt 2: ID bei Formular-Anzeige generieren lassen
In der Datei jsguest.cgi muss im Abschnitt "sub newForm" zwischen IF-Abfrage und open-Anweisung der folgende Code 1:1 eingefügt werden"

öhm wo genau muss jetzt der code hin ?

###########################################################################
sub newForm {                                    # Template für neuen Eintrag
     if (-e $CONFIG{"TemplNew"}) {
           open(TEMPLATE,$CONFIG{"TemplNew"});
           while (<TEMPLATE>) {
.......


wäre cool wenn Du mir da weiterhelfen könntest.
Hab so ziemlich alles ausprobiert, aber hab dann immer 500 Fehler
:-[

Vielen Dank

Gruss

Roger

Titel: Re: Secure-Code als Text ohne GD-Modul
Beitrag von cgicorner.ch am 29. Mai 2006 um 18:10
Hallo Roger

Ich vermute, du hast mit deinen Änderungen die Datei mit MS-DOS Zeilenumbrüchen gespeichert, so dass der internal server error immer kommt, auch wenn du den Text am richtigen Ort eingefügt hättest.

Um CGI-Scripts zu editieren benötigst du einen sinnvollen Editor. Notepad stellt ja das Script völlig falsch dar, WordPad kann es zwar öffnen, zerstört aber die Zeilenumbrüche. Ein paar sinnvolle Editoren (auch Freeware) habe ich unter [1] zusammengestellt.

Damit du dich aber nicht damit abquälen musst, habe ich unter [2] jsGuest in der modifizierten Version hochgeladen. Du kannst diese Datei also einfach austauschen und hast damit Schritt 2 erledigt.

Ich hoffe, dies hilft dir weiter. Bei allfälligen Fragen stehe ich dir gerne zur Verfügung.

Gruss
Jürg

[1] http://www.cgicorner.ch/cgi-bin/kb/kb.cgi?file=textedit.kb
[2] http://www.cgicorner.ch/files/jsguest-ohnegd.zip

Titel: Re: Secure-Code als Text ohne GD-Modul
Beitrag von Roger am 30. Mai 2006 um 08:55
Vielen Dank

Jetzt klappt's wunderbar  ;D

Werd mal deinen Editor auch noch installieren für Zukünftige arbeiten an Script's
;)

Liebe Grüsse

Roger



cgicorner.ch » Powered by YaBB 1 Gold - SP3!
YaBB © 2000-2004. All Rights Reserved.