|
You last visited: Today at 15:49
Advertisement
CMS Bridge (Hilfe benötigt)
Discussion on CMS Bridge (Hilfe benötigt) within the Web Development forum part of the Coders Den category.
02/13/2017, 23:34
|
#1
|
elite*gold: 0
Join Date: Aug 2015
Posts: 194
Received Thanks: 31
|
CMS Bridge (Hilfe benötigt)
Guten Abend zusammen,
ich versuche mein Problem so gut es geht einmal zu schildern, denn was jetzt folgt wird für sehr viele wahrscheinlich totales Kauderwelsch werden.
Ein User kommt auf meine Domain und will sich einen Account erstellen, der Account wird aber nicht nur in das CMS von der Domain angelegt sondern zusätzlich auf dem Game Server und im Forum. Im Forum ist jedoch die Registrierung deaktiviert um Multiaccounts und Bots auszuschließen.
Jetzt zum CMS, das CMS erstellt mit einem klick 3 Accounts. (Naja eher 2, aber das ist Nebensache). Ich benutze normalerweise für eine andere Forensoftware eine sogenannte Bridge, das ist ein CMS internes Plugin. Hier gibt es nun einmal ein kleines Beispiel für eine Software die ich nicht verwende und auch nicht verwenden möchte.
PHP Code:
<?php
class Ipb extends Plugin
{
/**
* Runtime values
*/
private $username;
private $password;
private $email;
private $db;
/**
* Receive the user information
* @param String $username
* @param String $password
* @param String email
*/
public function register($username, $password, $email)
{
$this->username = $username;
$this->password = $password;
$this->email = $email;
$this->db = $this->CI->load->database($this->CI->config->item('bridge'), TRUE);
$this->process();
}
/**
* Add the account
*/
private function process()
{
$salt = $this->generatePasswordSalt(5);
$salt = str_replace( '\\', "\\\\", $salt );
$password = $this->encryptPassword($salt);
$key = $this->generateAutoLoginKey();
$expire = time() + 86400;
$this->db->query("INSERT INTO ".$this->CI->config->item('forum_table_prefix')."members(`name`, `members_pass_hash`, `email`, `members_display_name`, `joined`, `members_pass_salt`, `member_login_key`, `member_login_key_expire`, `members_l_display_name`, `members_l_username`, `members_seo_name`, `member_group_id`) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, '3')", array($this->username, $password, $this->email, $this->username, time(), $salt, $key, $expire, $this->username, $this->username, $this->username));
}
/**
* Encrypt the password with a specific algorithm
* @return String
*/
private function encryptPassword($salt)
{
return md5( md5($salt) . md5( $this->password ) );
}
private function generateAutoLoginKey( $len=60 )
{
$pass = $this->generatePasswordSalt( $len );
return md5($pass);
}
private function generatePasswordSalt($len=5)
{
$salt = '';
for ( $i = 0; $i < $len; $i++ )
{
$num = mt_rand(33, 126);
if ( $num == '92' )
{
$num = 93;
}
$salt .= chr( $num );
}
return $salt;
}
}
Dies ist der PHP Code für die IP Board Version 3 Forensoftware,
Ich brauche das ganze jedoch für XenForo, ich habe hier nun 2 Probleme, erstens wie erstelle ich den Hash?! Laut den Foren Developer nutzen die Sha256 und wie gebe ich den Code an den erstellten User weiter in eine andere Datenbank Tabelle?! Denn ich brauche dazu ja erst wieder die UserID und ohne die UserID kann ich den Hash nicht den User zuweisen, da diese beiden Dinge aus Sicherheitsgründen getrennt werden.
PHP Code:
<?php
class Ipb extends Plugin
{
/**
* Runtime values
*/
private $username;
private $password;
private $email;
private $db;
/**
* Receive the user information
* @param String $username
* @param String $password
* @param String email
*/
public function register($username, $password, $email)
{
$this->username = $username;
$this->password = $password;
$this->email = $email;
$this->db = $this->CI->load->database($this->CI->config->item('bridge'), TRUE);
$this->process();
$this->authenticate();
}
/**
* Add the account
*/
private function process()
{
$this->db->query("INSERT INTO ".$this->CI->config->item('forum_table_prefix')."xf_user(`username`, `email`, `visible`, `user_group_id`, `register_date`) VALUES(?, ?, '1', ?, ?)", array($this->username, $this->email, time()));
}
private function process()
{
$salt = str_replace( '\\', "\\\\", $salt );
$password = $this->encryptPassword($salt);
}
/**
* Encrypt the password with a specific algorithm
* @return String
*/
private function encryptPassword($salt)
{
return sha256(sha256($salt) . sha256($this->password));
}
}
Hier habe ich einen Post gefunden wie man es machen könnte :
Hier habe ich die Klasse wie das Passwort generiert wird:
PHP Code:
<?php
/**
* Core authentication method from 1.2 (PHPass).
*
* @package XenForo_Authentication
*/
class XenForo_Authentication_Core12 extends XenForo_Authentication_Abstract
{
/**
* Password info for this authentication object
*
* @var array
*/
protected $_data = array();
/**
* Initialize data for the authentication object.
*
* @param string Binary data from the database
*/
public function setData($data)
{
$this->_data = unserialize($data);
}
/**
* Generate new authentication data
* @see XenForo_Authentication_Abstract::generate()
*/
public function generate($password)
{
$passwordHash = new XenForo_PasswordHash(XenForo_Application::getConfig()->passwordIterations, false);
$output = array('hash' => $passwordHash->HashPassword($password));
return serialize($output);
}
/**
* Authenticate against the given password
* @see XenForo_Authentication_Abstract::authenticate()
*/
public function authenticate($userId, $password)
{
if (!is_string($password) || $password === '' || empty($this->_data))
{
return false;
}
$passwordHash = new XenForo_PasswordHash(XenForo_Application::getConfig()->passwordIterations, false);
return $passwordHash->CheckPassword($password, $this->_data['hash']);
}
public function isUpgradable()
{
if (!empty($this->_data['hash']))
{
$passwordHash = new XenForo_PasswordHash(XenForo_Application::getConfig()->passwordIterations, false);
$expectedIterations = min(intval(XenForo_Application::getConfig()->passwordIterations), 30);
$iterations = null;
if (preg_match('/^\$(P|H)\$(.)/i', $this->_data['hash'], $match))
{
$iterations = $passwordHash->reverseItoA64($match[2]) - 5; // 5 iterations removed in PHP 5
}
else if (preg_match('/^\$2a\$(\d+)\$.*$/i', $this->_data['hash'], $match))
{
$iterations = intval($match[1]);
}
return $expectedIterations !== $iterations;
}
return true;
}
}
Hier noch einen Hinweis dazu :
Bitte, wenn Jemand gerade Zeit hat, würde ich mich freuen wenn das einer mit mir mal durchgehen kann oder mir dabei helfen würde.
|
|
|
02/15/2017, 13:17
|
#2
|
elite*gold: 0
Join Date: Aug 2015
Posts: 194
Received Thanks: 31
|
75+ Views, keiner einen Rat?!
|
|
|
02/15/2017, 16:07
|
#3
|
elite*gold: 0
Join Date: Apr 2016
Posts: 18
Received Thanks: 13
|
Also zu deinem Hash-Problem, in Php hast du Funktionen wie md5() welche du brauchen kannst um Strings zu Hashen. Kannst es ja mal Googlen da siehst du sehr schnell wie man einen Hash generiert.
Kannst du dein User ID Problem genauer erleutern?
|
|
|
 |
Similar Threads
|
Hilfe benötigt :)
06/13/2014 - Metin2 Private Server - 2 Replies
Heyho,
bräuchte jemanden der sich meine Channel Configs anschaut +
meine intrologin.py <-
Diese 2 Sachen werde benötigt um auf die Sanii v1.2 Files mit seinem angepassten Clienten zu verbinden.
Error: Fehler beim verbinden...
|
Hilfe Benötigt
12/07/2013 - Technical Support - 1 Replies
Hallo Leute,
Ich habe Folgendes Problem.
Ich nehme mit der Software Open Broadcaster Videos auf die ich dann Schneide (WoW Raid´s) die ich dann mit Sony Vegas Pro 12 Bearbeite (Original Version Gekauft).
Nun habe ich das 1. Video aufgenommen doch dieses ist leider nichts geworden. (Ich Streame nicht Live sondern nehme nur auf)
|
Hilfe benötigt !!
09/24/2013 - Flyff Private Server - 1 Replies
Hey ich brauche Hilfe und zwar geht es darum das bei mir Errors angezeigt werden !! könnte mir vielleicht einer weiter helfen ? wäre sehr nett :)
2013/ 9/22 18:18:30 GetModelElem - out of range: type=5, size=5015, index=1654
2013/ 9/22 18:18:30 CModelMng::loadModel mdlObj/mdlDyna ¿¡ objtype=5 index=1654 bpart=0 ÀÇ Á¤º¸°¡ ¾ø±º¿©.
2013/ 9/22 18:18:30 GetModelElem - out of range: type=5, size=5015, index=1654
2013/ 9/22 18:18:30 MakeMotionName GetModelElem dwType:5...
|
Hilfe benötigt !
06/05/2013 - Minecraft - 2 Replies
Guten Abend EpvP ,
Ich bin derzeit für ein paar kumpels die am freitag eine lan machen wollen einen server für sie zu erstellen, doch ich habe ein riesen problem ich kenne mich nicht so gut mit dem einstellen der plugins aus daher wollte ich euch fragen ob mir einer helfen kann ^^ meldet euch bitte bei mir in skype :D
Danke schon mal für eure hilfe
Mfg Famous™
|
***Hilfe benötigt***
03/31/2013 - Metin2 Private Server - 1 Replies
Hi wir haben da nen problem beim server undzwar wenn wir bei jemanden rechtsklick machen und dann auf flüstern klicken schließt sich der client (bei dem der auf flüstern geklickt hat) würd mich freun wenn wer hilft :)
Mfg Baxter
|
All times are GMT +1. The time now is 15:50.
|
|