Login & übergabe Session ID

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.
travelzone50g
Mitglied
Beiträge: 21
Registriert: 02.08.2008 09:46
Wohnort: Berlin

Login & übergabe Session ID

Beitrag von travelzone50g »

Hallo,

habe die SuFu schon genutzt leider keine Lösung für mein Problem gefunden.

Habe die DoKu Integration der Benutzerverwaltung von phpBB in eine Internet-Präsenz abgearbeitet und wie beschrieben Manuell eine Benutzersitzung erstellt, er speichert auch alles in der DB nun übergebe ich via Link :

http://www.domain.de/forum/index.php?sid=BLABLALUB

die sid aber ich bin im Forum dann nicht eingeloggt wie in der Doku beschrieben :( möchte auch aus bestimmten Gründen nicht die login.php des Forums nutzen meine test Login schaut momentan so aus :

Code: Alles auswählen

<?php

// Erstellt gesendetes Password als String für md5

$md5pwd = $_REQUEST["pwd"];

// Prüft ob Username zu Password gehört

$query_login = "SELECT username, user_password, user_id, user_active FROM phpbb_users WHERE username like '".$_REQUEST["usr"]."' AND user_password = '".md5($md5pwd)."'";

$result_login = mysql_query ($query_login);

// Schleife um user_active zu prüfen

while($row_login=mysql_fetch_array($result_login)) {

$user_active = $row_login['user_active'];
$user_id = $row_login['user_id'];

}

// Ist Username & User Password gleich & User active 1  ist LogIn Ok und Sessions werden erstellt

if (mysql_num_rows ($result_login) > 0 && $user_active == 1)  
   {
   // Speichert Session in Datenbank phpbb_sessions
   
   $sql_session_in = "INSERT INTO phpbb_sessions (
                                                 session_id,
												 session_user_id,
												 session_start,
												 session_time,
												 session_ip,
												 session_page,
												 session_logged_in,
												 session_admin)
		              VALUES (
					         '".md5(uniqid(mt_rand(), true))."',
							 '$user_id',
							 '".time()."',
							 '".time()."',
							 '".ip2long(getenv("REMOTE_ADDR"))."',
							 '0',
							 '1',
							 '0'
							 )";
							 
   mysql_query($sql_session_in);
    
   echo "Login OK";
   }
   
   
   
  // Sind LogIn Daten falsch oder User nicht aktiviert zeigt er dieses Meldung an   
   
   else
      {
	  echo "<table width='767' border='0' cellspacing='0' cellpadding='0'>
  <tr>
    <td width='50%'>&nbsp;</td>
    <td width='50%'>&nbsp;</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td width='50%' rowspan='3'><img src='./gfx/wrong_login.gif' width='323' height='330'></td>
  </tr>
  <tr>
    <td><strong>Information</strong></td>
  </tr>
  <tr>
    <td><p>Du hast einen falschen oder inaktiven Benutzernamen oder ein falsches Passwort eingegeben.</p>
      <p>Bitte versuche es noch einmal... </p>
      <p>Klick <a href='./index.php'>hier</a> um zum Index zur&uuml;ckzukehren.</p>
      <p>Sollte das Problem weiterhin bestehen so wende Dich bitte an unseren Support :</p>
    <p><a href='mailto:support@berliner-goeren.de'>support@berliner-goeren.de </a></p></td>
  </tr>
</table>";
	  }

?>

Kann auch keinen Fehler finden da er die Daten wie beschrieben alle in der DB speichert aber wenn ich sie via Link übergebe passiert nix, wo könnte dort der Fehler liegen warum funzt dat net.

Vielen Dank !!!

Lg Maria
Benutzeravatar
cYbercOsmOnauT
Ehemaliges Teammitglied
Beiträge: 3820
Registriert: 18.02.2004 23:02
Wohnort: Göttingen
Kontaktdaten:

Beitrag von cYbercOsmOnauT »

Ich wäre den Login ganz anders angegangen. Aber davon mal ab sehe ich auf dem ersten Blick 2 eklatante Sicherheitslücken in Deinem Script.
  1. Du verwendest die Superglobale $_REQUEST, somit ist es egal, ob Deinem Script die Daten per Link (GET) oder Formular (POST) gesendet werden. Dies ist noch keine echte Sicherheitslücke, aber die Kontrolle kann einem sehr schnell entgleiten.
  2. Du haust den Wert von $_REQUEST['usr'] direkt in die SQL. Damit sind SQL-Injections Tür und Tor geöffnet.
  3. Du verwendest unterständlicherweise "LIKE" in der SQL, das ist ein großes Problem. Stell Dir vor, Du hast eine riesige Community. Nun gebe ich folgendes ein: Username %e% und gehe nun einige Standardpasswörter durch. Da Deine SQL mit LIKE arbeitet, spuckt er mir nun brav sämtliche Usernamen aus, die ein 'e' beinhalten und deren Passwort z.B. 'admin123' oder '1234567890' oder sonst ein Standardpasswort ist.
Zudem hast Du einen logischen Fehler. Wenn ich Username und Passwort eingebe, gibt es genau einen User auf dem diese Kombination zutrifft. Es kommt demnach entweder nur 1 Treffer oder gar keins. Eine while-Schleife ist demnach unnötig.

Bei Deinem Problem hilft vielleicht dies hier weiter.

Viele Grüße,
Tekin
• prof. phpbb-Installation, Reparatur, Rettung nach Hackattacken, sowie PHP/JS Programmierung aller Art
Zend Certified Engineer, Linux Administrator und die Sicherheit von 34 Jahren Programmiererfahrung
• Interesse? Kontakt unter t.birduezen@web-coding.eu
travelzone50g
Mitglied
Beiträge: 21
Registriert: 02.08.2008 09:46
Wohnort: Berlin

Beitrag von travelzone50g »

Vielen Dank für die Info es ist ja auch noch nicht das entgültige Ergebniss habe Deine Hinweise sofort dankend berücksichtigt und es entsprechend abgeändert, sonst könnt ich ja gleich username und pw auf die webseite schreiben... *g* :roll:


EDIT : Danke der Beitrag hat mir weitergeholfen nach einer kleinen Anpassung hamoniert mein login nun mit dem Forum... ;)


lg maria
Benutzeravatar
atrox
Mitglied
Beiträge: 242
Registriert: 08.08.2007 00:48
Wohnort: Ravensburg

Beitrag von atrox »

Vielleicht könntest du noch den korrekten Code schreiben
Zuletzt geändert von atrox am 09.08.2008 18:24, insgesamt 1-mal geändert.
travelzone50g
Mitglied
Beiträge: 21
Registriert: 02.08.2008 09:46
Wohnort: Berlin

Beitrag von travelzone50g »

Sorry, nenn es eigen oder auch eingebildet aber ich lege mein fertiges LogIn-Script bzw. die Prüf-Routine nicht offen da.

Aber mit ein bissel PHP-Grundkentnissen bekommst Du es anhand der Hinweise von cYbercOsmOnauT und meines oben geposteten Code meiner Test Datei selbst hin.

Bei Fragen bzw. Problemen kannst Du gern nachfragen, und dir wird geholfen... ;)
Boecki91
Ehemaliges Teammitglied
Beiträge: 4744
Registriert: 18.06.2006 15:21

Beitrag von Boecki91 »

(Un-)Sicherheit durch Verdecken :-?

Was wenn du durch die Änderungen ein neues Sicherheitsloch geschaffen hast, aber zum Glück findet das ja keiner ;) Was in Windows drin ist weiß auch (fast) keiner, und dennoch gibt es Viren die Schwachstellen ausnutzen :roll:
Standart: Am besten mit beiden Beinen auf dem Boden
Standardmäßig antworte ich nicht auf PMs
travelzone50g
Mitglied
Beiträge: 21
Registriert: 02.08.2008 09:46
Wohnort: Berlin

Beitrag von travelzone50g »

@Boecki91

(Un-) Sicherheit u. neue Sicherheitslöcher hin oder her seh es wie Du es möchtest, aber ich muss mein Gedankengut nicht Preis geben wenn ich es nicht möchte.

Ich gebe gerne Tips soweit ich Sie richtig geben kann wie es zu Lösen ist, aber muss wie gesagt mein fertiges Script nicht offen da legen.

Und im Grunde genommen wurde dies Thema betreffend schon alles gesagt was gesagt werden mußte.

Also erspare mir jegliche sinnlose Diskusion dieser Art

LG Maria
Benutzeravatar
Dr.Death
Moderator
Moderator
Beiträge: 17401
Registriert: 23.04.2003 08:22
Wohnort: Xanten
Kontaktdaten:

Beitrag von Dr.Death »

Du schottest Dein Wissen in einem Open Source Projekt ab und verlangst von uns Dir zu helfen?

Nette Idee :-?
travelzone50g
Mitglied
Beiträge: 21
Registriert: 02.08.2008 09:46
Wohnort: Berlin

Beitrag von travelzone50g »

Sorry aber mein wissen bzw das Script betrifft nicht das open source projekt phpbb Thema wurde ja nicht umsonst von einem MOD des Forums verschoben...

Sondern meinen eigenen login zu MEINER Website bzw. die prüf routine des script und ich verweiger in keinem fall meine hilfe zu diesem Problem sondern ich veröffentliche nur mein eigenes Gedankengut sprich meine prüf-routine des logins nicht wozu ich auch nicht verpflichtet bin...

wenn Du es richtig gelesen und auch verstanden hättest biete ich sogar meine Hilfe bei Problemen an nur meinen eigenen fertigen Quellcode eben nicht...

und mal ehrlich anhand des obiegen codes und der info von cYbercOsmOnauT und dessen antwort im anderen Thread ist ja wohl jegliche Hilfe mit ein bissel Grundkentniss ausgeschloßen...

nennt es eingebildet arogant oder was weiss ich aber ich stehe zu meiner Meinung und muss es nicht veröffentlichen, fertig aus Ende...


LG Maria

*entweder man hasst oder liebt mich aber ich mache es keinem außer mir recht....
Zuletzt geändert von travelzone50g am 09.08.2008 22:57, insgesamt 1-mal geändert.
Benutzeravatar
Dr.Death
Moderator
Moderator
Beiträge: 17401
Registriert: 23.04.2003 08:22
Wohnort: Xanten
Kontaktdaten:

Beitrag von Dr.Death »

Anders herum gefragt, warum nutzt du nicht die vorhandene API zum externen einloggen in das Forum ?


includes/auth.php

Code: Alles auswählen

	/**
	* Authentication plug-ins is largely down to Sergey Kanareykin, our thanks to him.
	*/
	function login($username, $password, $autologin = false, $viewonline = 1, $admin = 0)
Antworten

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