WBCE CMS Forum

WBCE CMS – Way Better Content Editing.

You are not logged in.

#26 09.03.2024 13:41:20

Slugger
Member

Re: PollsNew

Was hast du den vor?


Hoster: ALL-INKL *** Grundsätzliche WBCE Konfig ***
WBCE: 1.5.4 • BE: 2.1.0 • PHP: 8.1.16 * 1. Projekt: FE: Simple responsive • BE: Argos * 2. Projekt: FE: hortal • BE: Argos * 3. Projekt: FE: WBCEZon • BE: Argos * 4. Projekt: FE: WBCETik • BE: Argos
Status Projekt 1-4:  OK

Online

#27 09.03.2024 23:07:51

cyberdyne
Member

Re: PollsNew

Slugger wrote:

Was hast du den vor?

Guten Abend,
eine Umfrage mit 15 - 20 Themen/ Schwerpunkte soll es werden. Alle Punkte können jeweils markiert werden können. Am Ende soll eine Auswertung der getroffenen Auswahl ausgegeben werden.

Grüße,
Klaus


Macht's gut und danke für den Fisch!

Offline

#28 10.03.2024 00:14:07

florian
Administrator

Re: PollsNew

Aber hallo. Das ist dann doch eher etwas für ein richtiges Umfrageetool wie Limesurvey.


Sorgen sind wie Nudeln: man macht sich meist zu viele.

Offline

#29 10.03.2024 12:23:14

cyberdyne
Member

Re: PollsNew

florian wrote:

Aber hallo. Das ist dann doch eher etwas für ein richtiges Umfrageetool wie Limesurvey.

Guten Morgen,
bin über andere Kanäle fündig geworden und kann nun meinerseits aidaforum wärmstens empfehlen. Vor allem wegen der einfachen Implementierung als html via CODE2 in die bestehende WBCE-Seite. Sieht auch ohne Bezahlaccount richtig gut aus.

Schönen Sonntag & viele Grüße,
Klaus


Macht's gut und danke für den Fisch!

Offline

Liked by:

florian

#30 24.04.2025 13:37:16

kleo
Member

Re: PollsNew

Moin,

bei der Auswertung der Log-Datei für Webseitezugriffe habe ich folgenden Aufruf gefunden:

...modules/pollsnew/ajax/show_results.php

Ich habe probiert die Adresse selbst aufzurufen, es geht und es wird die leere Seite angezeigt mit dem Text. dass keine Ergebnisse vorliegen.

Es hat mich ein wenig gewundert, dass die Datei show_results.php direkt im Browser aufgerufen werden kann, genauso wie die anderen Dateien aus diesem Ordner:

delete_votes.php

regist_vote.php


In diesem Zusammenhang habe ich einige Fragen:

1.  Werden beimr direkten Aufruf der Datei show_results.php die Ergebnisse einer aktueller Befragung gezeigt?

2.  Warum beim Aufruf einer Datei des Moduls, wie z.B.  modules/pollsnew/delete.php die Weiterleitung zur Startseite der Webseite erfolgt, und bei den anderen wie z.B. functions.inc.php nicht?

3.  Wäre es aus Sicherheitsgründen sinvoll den direkten Aufruf der jeweiligen Dateien eines Moduls zu verbieten und generell zur Startseite umzuleieten?

Offline

#31 26.04.2025 11:44:08

kleo
Member

Re: PollsNew

Moin,

eine allgemeine Frage, unabhängig von diesem Modul:

Wäre es aus Sicherheitsgründen sinvoll den direkten Aufruf über Browser der jeweiligen Dateien eines Moduls zu verbieten und generell zur Startseite umzuleieten?

Last edited by kleo (26.04.2025 11:44:45)

Offline

#32 28.04.2025 15:04:09

webbird
Administrator

Re: PollsNew

Ja, natürlich.


Ich habe eine Amazon-Wishlist. wink Oder spende an das Projekt.
Ich kann, wenn ich will, aber wer will, dass ich muss, kann mich mal

Offline

#33 29.04.2025 10:37:41

kleo
Member

Re: PollsNew

webbird wrote:

Ja, natürlich.

Wie macht man am besten?

Ich glaube davon betroffen sind auch viele anderen Modulle.

Offline

#34 29.04.2025 16:43:49

webbird
Administrator

Re: PollsNew

Das wichtigste ist die Prüfung, ob die Datei innerhalb von WBCE aufgerufen wurde, oder direkt im Browser. Das erfolgt über die Prüfung der Konstante WB_PATH. Es gibt da mehrere Varianten, zum Beispiel:

[== PHP ==]
// Must include code to stop this file being access directly
if (!defined('WB_PATH')) {
    exit("Cannot access this file directly");
}

oder

[== PHP ==]
if (!defined('WB_PATH')) die(header('Location: index.php'));

Welche "best practice" in WBCE gilt, kann ich spontan nicht sagen. In den Beispielen wird im ersten Fall eine Fehlermeldung ausgegeben, im zweiten stillschweigend auf die index.php (von WBCE) umgeleitet.

Scripten, die ein Backend Login erfordern, sollten mindestens die admin.php im Verzeichnis <WB_PATH>/modules einbinden. Zusätzlich kann über die Admin-Klasse (class.admin.php im framework-Verzeichnis) prüfen, ob bestimmte Benutzerrechte vorliegen. Die admin.php im modules-Verzeichnis prüft immerhin schon mal, ob der Benutzer prinzipiell Seiten bearbeiten darf.

Bei Aufruf via AJAX wirst Du das Problem haben, dass dieser praktisch schon per Definition immer außerhalb von WBCE stattfindet. Da ist die Sache etwas komplizierter. Du musst sicherstellen, dass die Daten, die man auf diese Weise potenziell erhalten kann, auch bei Angabe der korrekten Aufrufparameter (z.B. page_id, section_id etc.) keine "heiklen" Informationen sind. Wenn Du das nicht so ohne weiteres sicherstellen kannst, wird es *richtig* kompliziert. Dann musst Du über das Session Cookie prüfen, ob es sich um einen legitimierten Benutzer handelt oder nicht. Oder halt auf AJAX verzichten.

Das erst mal ganz allgemein. Ob es dazu eine aktuelle Anleitung gibt, kann ich leider nicht sagen. Das "Hello World"-Modul ist in der Hinsicht leider nicht hilfreich.


Ich habe eine Amazon-Wishlist. wink Oder spende an das Projekt.
Ich kann, wenn ich will, aber wer will, dass ich muss, kann mich mal

Offline

#35 29.04.2025 21:27:22

kleo
Member

Re: PollsNew

Moin,

danke für die Antwort.

Heißt es, dass die PHP-Datein des Moduls einen von den zwei vorgeschlagenen Code am Anfang der Datei beinhalten sollen?
Oder?

Last edited by kleo (29.04.2025 21:29:08)

Offline

#36 30.04.2025 11:59:29

webbird
Administrator

Re: PollsNew

Genau. Laut "Hello World"-Vorlage die zweite Variante.


Ich habe eine Amazon-Wishlist. wink Oder spende an das Projekt.
Ich kann, wenn ich will, aber wer will, dass ich muss, kann mich mal

Offline

#37 05.05.2025 16:35:59

florian
Administrator

Re: PollsNew

Wenn Dateien irgendwo "reingeajaxt" werden, ist if (!defined('WB_PATH')) die() nicht anwendbar.

Die Dateien werden in der view.tpl und modify.tpl aufgerufen (z.B. Zeile 157).
Wenn man diesen ändert in

var delete_file = '<?=WB_URL?>/modules/<?=$mod_dir?>/ajax/delete_votes.php?sec=Wqu4UTopYWCBKOjJRE';

usw
und dann in den jeweiligen Dateien gleich als erste Zeile einfügt

if (!isset($_GET['sec']) || $_GET['sec']!="Wqu4UTopYWCBKOjJRE") { die(header('Location: ../../../index.php')); }

also irgend einen x-beliebigen String übergibt und prüft, ob dieser vorhanden ist, bleibt einerseits die Funktionalität erhalten und andererseits wird beim direkten Aufruf der ajax-Dateien dann auf die Startseite weitergeleitet.
Ist zwar nicht Fort Knox, hält aber zumindest Herumprobierer ab, glaube ich.


Sorgen sind wie Nudeln: man macht sich meist zu viele.

Offline

Board footer

up