User-ID des eingeloggten Users herausfinden

In diesem Forum kann man Fragen zur Programmierung stellen, die bei der Entwicklung von Mods für phpBB2 oder dem Modifizieren des eigenen Forums auftauchen.
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.1, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Olli@Matrix
Mitglied
Beiträge: 16
Registriert: 30.11.2006 23:19

Beitrag von Olli@Matrix »

...verdammt... zu früh gefreut...

Jetzt brauch ich noch 'nen kleinen Tipp, wie ich die Variable ins php bringe... :/

Code: Alles auswählen

<?php
$Benutzer="{BENUTZER}";
echo $Benutzer;
?>
Wenn ich's so mache, wird nichts angezeigt... :/
Benutzeravatar
Miriam
Mitglied
Beiträge: 12310
Registriert: 13.10.2004 07:18
Kontaktdaten:

Beitrag von Miriam »

Aua...... :roll:

Code: Alles auswählen

print($userdata['user_id']);
Wär' das was? :lol:

Aber das geht nur, wenn Du die Session-Verwaltung des phpBB benutzt.
Scroll mal nochmal zurück :-P
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
Olli@Matrix
Mitglied
Beiträge: 16
Registriert: 30.11.2006 23:19

Beitrag von Olli@Matrix »

Miriam hat geschrieben:Aua...... :roll:
Sorry, bin halt nicht so der Crack...^^



Das klappt so nicht. Wie gesagt, ich arbeite in der .tpl Datei. Dort ist die Variable $userdata['user_id']; leer.

Okay, wenn ich diese Session Verwaltung vornedransetze, dann sieht's so aus:

Code: Alles auswählen

<?php
$userdata = session_pagestart($user_ip, PAGE_PROFILE);
init_userprefs($userdata);
print($userdata['user_id']);
?>
Allerdings bekomme ich dann die Fehlermeldung:
Warning: Cannot modify header information - headers already sent by (output started at /srv/www/vhosts/the-ill-o.de/httpdocs/abi/cache/tpl_fisubsilversh.overall_header.php:197) in /srv/www/vhosts/the-ill-o.de/httpdocs/abi/includes/sessions.php on line 260 Warning: Cannot modify header information - headers already sent by (output started at /srv/www/vhosts/the-ill-o.de/httpdocs/abi/cache/tpl_fisubsilversh.overall_header.php:197) in /srv/www/vhosts/the-ill-o.de/httpdocs/abi/includes/sessions.php on line 261 -1
Benutzeravatar
Miriam
Mitglied
Beiträge: 12310
Registriert: 13.10.2004 07:18
Kontaktdaten:

Beitrag von Miriam »

Also Du arbeitest mit den TPL Dateien. Gut.. Da gibt es nur die

Code: Alles auswählen

{Platzhalter}
und evtl.

Code: Alles auswählen

<!--switches -->
auch HTML... aber kein PHP.. Nicht in phpBB2.
Die Session Verwaltung passiert in der php Datei.
Die Übergabe an die TPL Datei hatten wir ja schon geklärt.
Der Parser ersetzt dann dort die Platzhalter.

Die Variable ist die

Code: Alles auswählen

$userdata[user_id']
in der php Datei, diese wird dargestellt durch (in Deiner Lösung) die Variable

Code: Alles auswählen

{BENUTZER}
in der TPL Datei.

Was möchtest Du in Deiner Abi-Zeitung nun genau machen?
Hast Du Dir den Nickpage Mod mal angeschaut?
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
Olli@Matrix
Mitglied
Beiträge: 16
Registriert: 30.11.2006 23:19

Beitrag von Olli@Matrix »

Genau, du hast es erfasst! :-)
Ist natürlich ärgerlich, dass das nicht geht... :/
Miriam hat geschrieben:Was möchtest Du in Deiner Abi-Zeitung nun genau machen?
Also, ich möchte, dass im Benutzerprofil Kommentare von anderen Benutzern über diesen Benutzer angezeigt werden, sowie ein kleines Feld, in das man selbst eintragen kann.

In einer Datenbank mit den Spalten VON, AN und Kommentar soll eingefügt werden:
VON - UserID der Verfassers
AN - UserID des Empfängers
Kommentar - Das, was im Formular stand

Unten im Profil wird also immer die DB ausgelesen,
profile.php?mode=viewprofile&u=2
natürlich werden nur die Felder angezeigt in denen AN = 2 ist. Also WHERE AN = $_Get['u'] und so.

Dann gibt es das Formular:

Code: Alles auswählen

<input type="text" name="Kommentar" size="50" cols="10">
<input type="hidden" name="VON" value="{BENUTZER}">
<input type="hidden" name="AN" value="
<?php
echo $_GET['u'];
?>
">
Eigentlich funktioniert das Script schon.

Doch jetzt will ich, dass geprüft wird, ob der User eingeloggt ist.
Wenn {BENUTZER} bzw. $userdata['user_id'] leer ist, soll weder Formular noch einträge angezeit werden.
Wenn der Benutzer auf seinem eigenen Profil ist, also wenn {BENUTZER} = $_GET['u'] ist, soll das Formular nicht angezeigt werden, aber seine Einträge.

Klingt doch total easy, oder?!^^

Ich hab's auch schon passend in die .tpl Datei eingebaut, sieht schick aus und alles, ich muss nur noch die UserID des eingeloggten Users überprüfen. Aber das kann ich nur, wenn ich sie als php Variable habe... :(



Miriam hat geschrieben:Hast Du Dir den Nickpage Mod mal angeschaut?
Nein, habe ich mir noch nicht angeschaut.
Ich guck mal rein!
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Beitrag von gn#36 »

Die Prüfung ob der User der angemeldet ist derjenige ist der in dem Link steht kannst du auch im PHP Teil machen und dann einen Switch setzen der das Formular anzeigt oder nicht.

Code: Alles auswählen

if($userdata['user_id'] == $_GET['u'])
{
$template->assign_block_vars('anzuzeigen_wenn_selbst', array());
}
else
{
$template->assign_block_vars('anzuzeigen_wenn_nicht_selbst', array());
}
Im Template

Code: Alles auswählen

<!-- BEGIN anzuzeigen_wenn_selbst -->
Das hier kommt wenn der User selbst auf die Seite geht
<!-- END anzuzeigen_wenn_selbst -->
<!-- BEGIN anzuzeigen_wenn_nicht_selbst -->
und das hier wenn er es nicht selbst ist
<!-- END anzuzeigen_wenn_nicht_selbst -->
und das hier immer.
Alles was du an php code zu tun hast kannst du in den PHP Dateien erledigen (nicht im Template). Die direkte Ausgabe von Parametern (echo $_GET['u'] z.b.) ist extrem unsicher, damit öffnest du XSS Attacken Tür und Tor (probier dann z.b. mal was wie

Code: Alles auswählen

seite.php?u="><script>alert('attacke!')</script>
beim Zugriff auf die Seite...)
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Olli@Matrix
Mitglied
Beiträge: 16
Registriert: 30.11.2006 23:19

Beitrag von Olli@Matrix »

Genial, das funktioniert wunderbar!!

Danke!! :-)

Ich habe nur noch ein Problem:

Wie geht das gleich mit if(...) AND (...)

Also wenn zwei Bediungungen erfüllt sein sollen?


Und zu den XSS-Attacken:

Bitte was soll das bringen?^^
Sorry, hab ich nciht ganz verstanden...

?u="><script>alert('attacke!')</script>

Wenn ich das als Linkadresse eingebe, kommt, dass der Benutzer nicht gefunden wird, was sogar mir irgendwie klar ist.

Aber was soll es bringen das in den Quelltext zu schreiben?


Edit:

Aha, okay, hab's rausgefunden:

if ( ... && ...)

und außerdem ist die user_id nicht empty, sondern -1 wenn kein user eingeloggt ist.



Aber das mit den XSS Attacken muss mir noch jemand erklären. Den Wikipediaeintrag hab ich auch nciht verstanden... *peinlich*
Zuletzt geändert von Olli@Matrix am 08.10.2008 13:37, insgesamt 1-mal geändert.
Olli@Matrix
Mitglied
Beiträge: 16
Registriert: 30.11.2006 23:19

Beitrag von Olli@Matrix »

[[Posting kann gelöscht werden]]
Zuletzt geändert von Olli@Matrix am 08.10.2008 13:38, insgesamt 1-mal geändert.
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Beitrag von gn#36 »

Bitte kein Bumping...

Dann war da an dem Skript noch mehr dran als du gezeigt hast.

Die URL zielte genau auf XSS hin. Wenn nur das was ich oben gelesen habe als Skript da gewesen wäre, dann hätte die Eingabe dieses Codes in der URL eigentlich zu einem JavaScript Infofenster mit "attacke!" darin führen müssen. Wenn du die vorher noch verarbeitest dann vielleicht sowas:
?u=2"><script>alert('attacke!')</script>

Könnte natürlich auch zu einem SQL Fehler führen wenn du das nicht abfängst.

Bei einem XSS Angriff versucht der Angreifer im Prinzip genau das: Durch Manipulation von Daten die an das Skript gehen Verhalten provozieren das der Admin der Website eigentlich nicht haben möchte. Wenn du bei so einer Manipulation ein Infofenster produzieren kannst, dann auch ein Popup, einen Iframe, ... und damit völlig veränderten Content (du könntest auch JavaScript laden das die gesamte Seite ersetzt sofern der User JavaScript nicht blockiert).
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Olli@Matrix
Mitglied
Beiträge: 16
Registriert: 30.11.2006 23:19

Beitrag von Olli@Matrix »

Okay, ich glaube ich hab's verstanden...

Man änder praktisch die Linkzeile, und fügt dadurch im Script noch eine oder mehrere Zeilen ein, weil man den aktuellen Tag einfach abbricht... Dadruch könnte man sicherlich auch Datenbanklogin-Daten anzeigen lassen, das wäre natürlich fatal.

Dann werde ich es also noch so ändern, dass ich möglichst vieles über hidden-felder mache, dann bin ich jedenfalls sicher, oder?
Antworten

Zurück zu „phpBB 2.0: Mod-Bastelstube“