ID's für Forum sperren

  • Hallo,

    ich habe mal ein Problem :(

    *Kurze Hintergrundinfo: Ich nutze bereits ein fertiges Forum welches ich nach und nach meinen Bedürfnissen anpasse*

    Also.. das Forum ist so aufgebaut das jeder User das Forum betreten kann und die ganzen Unterforen sieht (wie in jedem forum :) )
    Bestimmte Ränge sind so vergeben das mit dem Rang "versteckte" Foren angezeigt werden die normalen Usern verborgen bleiben.

    In PHP Form sieht das ganze so aus:

    Ab dem untersten IF sieht man das dort der Befehl kommt wenn die ID der Tabelle 1 beträgt das die versteckten Foren dann angezeigt werden.
    Soweit klappt auch alles.

    Das Problem ist aber wenn jemand die ID des Forums weiß kann er Problemlos das Unterforum aufrufen indem er die URL manuell eingibt obwohl er nicht den Status 1 hat - denn dieser verhindert ja lediglich das in der Forumübersicht diese Foren angezeigt werden.

    Nun weiß ich nicht was ich machen kann damit User "gesperrt" werden wenn sie versuchen diese Forenkategory aufzurufen.

    Ich hatte schon Ansätze probiert wie dies hier:

    Code
    else{
            output_message('alert',$lang['youhavenorights']);
            $req_tpl = false;
        }

    Aber komme damit nicht so wirklich weiter....
    Kann mir hier wer Hilfestellung geben? Ein User der Seite (der übrigens diese Sicherheitslücke herausfand) teilte mir mit ich solle sowas mit Session Id's machen.. aber da versteh ich dann doch wieder nur Bahnhof wie man sowas in ein fertiges System implentieren kann :(

  • Ja das hatte ich auch schon überlegt nur die ID des jeweiligen Unterforums ist ja in der DB hinterlegt und nicht in der entsprechenden php-Datei. Wie kann ich in der PHP Datei es also so verfassen das er nur bei Aufruf einer ganz bestimmten ID die Prüfung macht das die Rechte vorliegen und demnach den User rein läßt oder ggf. die Fehlermeldung mit else ausgibt?

    Code
    else{ 
            output_message('alert',$lang['youhavenorights']); 
            $req_tpl = false; 
        }
  • Nicht so wirklich :)
    dieses Forum ist ein halbwegs zusammengeschustertes Forum welches nicht viele Funktionalitäten beinhaltet.
    Ist also nicht sowas wie Wotlab und Phpbb und was es da alles gibt.
    Die eizigen Einstellungen die man machen skann sind wirklich nur:

    - Forenkategorie erstellen
    - Unterkategorie erstellen
    - und angeben ob Forum versteckt oder öffentlich sein soll

    Also gegenübr anderen Fertigforen ist dies doch eher rar ausgestattet. Reicht für meine Zwecke aber.
    Eine direkte Benutzerkontensteuerung gibt es demnach nicht für das Forum.
    Ich kann lediglich User als Mitglied oder als Admin eintragen und je nachdem was beim User aktiv ist handelt das Forum dementsprechend und zeigt die versteckten Foren an oder nicht.

  • ja is schwierig für irgend ein forum einen code zu schreiben...

    Ich mein wir kennen die Struktur ja gar nicht usw... also vllt. hilft dir der Programmierer dieses Forums oder gibt es ein spezielles Support Forum?

  • Leider nicht - Supportforum gibt es zwar - allerdings ohne Regung. Offiziell ist er zwar nicht eingestellt aber seit ungefähr Mai regt sich da gar nichts mehr :(

    Struktur der DB ansich kann man ja oben im ersten Posting entnehmen wo die DB Abfrage durchläuft...
    Gibt es nicht irgendwie die möglichkeit einzustellen wenn der User das Forum mit der ID (z.B.) 9 aufruft das dann die Abfrage gemacht wird ob berechtigungen vorliegt?

  • so in etwa, nur musst du mal die db etc durchsehn, ob die namen ok sind so, des weiss ich ja nich:

    PHP
    <?php
    if($user['id'] == 0) {
      $query = "SELECT sichtbarkeit FROM f_forums WHERE id = '".$_GET['id']."';
       $result = mysql_query($query);
       if($result['sichtbarkeit'] == "hidden") {
          die("keine berechtigung
    ";
       }
    }
    ?>

    Sei immer du selbst. Außer du kannst Batman sein. Sei immer Batman!

  • Zitat von BendOr

    so in etwa, nur musst du mal die db etc durchsehn, ob die namen ok sind so, des weiss ich ja nich:

    PHP
    <?php
    if($user['id'] == 0) {
      $query = "SELECT sichtbarkeit FROM f_forums WHERE id = '".$_GET['id']."';
       $result = mysql_query($query);
       if($result['sichtbarkeit'] == "hidden") {
          die("keine berechtigung
    ";
       }
    }
    ?>

    Ahhh.. das ganze kommt den schon nahe wenn ich mir das angucke... da ich selber aber nur teilweise verstehe was welcher Befehl verursacht scheitert leider meine Kentniss selbst an dem obigen "Ansatz".

    Ich geb mal eben die DB Struktur durch das man sieht wie sie aufgebaut ist.. daran sollte man einfach erkennen können wie sie funktioniert :)

    Also.. die erste wichtige Tabelle heißt: "account_groups". Das ist sozusagen die Tabelle in der die Benutzergruppen stehen.. wie "Gast", Mitglied" "Vorstand" etc pp.. also alle Ränge. Neben den Gruppen ID's und den Gruppennamen gibt es dort auch eine Spalte die sich "g_forum_moderate" nennt. Dort wird lediglich 0 bzw 1 eingetragen. Der Name der Spalte sagt ja schon aus ob diese Gruppe das Forum moderieren darf bzw eben die versteckten Foren einsehen kann (1) oder nicht (0).

    Nächste wichtige Tabelle ist für Forum selber: "f_forums" Dort werden die Foren-Id's festgelegt, die Forennamen, Moderatoren etc pp.
    Eine Spalte dort heißt "hidden" und kann ebenfalls nur mit 0 oder 1 belegt werden. Dies gibt an ob das Forum sichtbar (0) oder versteckt (1) ist.

    So.. aus diesen beiden Tabellen/Spalten muß ein Kuddelmuddel entstehen das fuktioniert :)

    Das o.g. Bsp von Bend0r bezieht dabei auf die User id - das in diesem Fall irrelevant ist da nicht die User id sondern die Gruppen ID vorgesehen ist ob Forum angezeigt wird oder nicht.
    Leider pack ich des dennoch nicht trotz des schon guten Beispiels oben, etwas vernünftiges daraus zu basteln was funktioniert :(

    Wobei ich denke das diese Variante nur etwas angepasst werden müßte mit den Tabellenangaben die ich hier eben geschrieben habe.

    MfG
    ein verzweifelter Foren"zerstörer" :)

  • Hat hier keiner weiter noch ein Tip für mich?
    Hab die Tage verzweifelt versucht den o.g. Script für mich anzupassen... irgendwie stell ich mich wohl zu Blöd dafür an denn ich habs nie hinbekommen :(