php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 01.02.2008, 12:26  
Neuer Benutzer
 
Registriert seit: 08.01.2007
Beiträge: 20
solariz
Standard XML-RPC2 Hash & Salt Authentifizierung

Hi,
habe derzeit ein kleines Problem, ggf. sehe ich auch nur den Wald vor lauter Bäumen nicht.

Ich möchte einen einfachen XMLRPC Server nutzen zusätzlich aber noch eine Auth. mit verbauen. Das Problem ist da die Seite nicht via SSL Verschlüsselt ist möchte ich dort keine Cleartext auth senden sondern per Salt & hash übertragen.

Gedankenschritte:

C -> S: hello
C <- S: Server returns Salt (z.b. ein SHA String)
C -> S: auth(SHA1(password+salt))
C <- S: welcome



Soweit die Theorie. Da ich vorher noch nicht mir XML-RPC2 gearbeitet habe ist die Lösung ggf simpel. Das Problem jedenfalls ist nun das scheinbar bei jedem übermittelten Call die klasse neu instanziert wird, sprich sich jedesmal die salt ändert wodurch eine Authentifizierung niicht möglich wird.


SERVER.PHP
PHP-Code:
<?
## Settings
   
error_reporting(E_ERROR E_WARNING E_PARSE );

class 
Tests {
    var 
$isAuthed false;
    var 
$PWD  'ExampleSecretKey';
   
  
    
/**
     * TEST RPC
     */
    
function hello $string ) {
        return 
$this->salt;        
    }
#end func 

    /**
     * TEST RPC
     */
    
function auth$string ) {
        if(
$string == sha1($this->PWD."-".$this->salt)) {
          return 
"welcome";
        } else {
          return 
"denied";
        }
#end else
    
}#end func 
}

require_once 
'XML/RPC2/Server.php';
$TEST = new Tests();
$TEST->salt sha1(rand(100000,time()));
$server XML_RPC2_Server::create$TEST );
$server->handleCall(); 
?>

CLIENT.PHP
PHP-Code:
<?
require_once 'XML/RPC2/Client.php';
require_once 
'XML/RPC2/Value.php'



$options = array(
    
#'prefix' => 'ExampleServer'
    
'debug' => true 
);

$URI "http://localhost/xmlrpc/server.php";
$PWD "ExampleSecretKey";

try {
    
$client XML_RPC2_Client::create($URI$options);
    
$salt   $client->hello("test");
    
$PWD    $PWD."-".$salt;
    
# echo "<font color=red>".$salt."
".sha1($PWD."-".$salt)."</font>
";
    $result = $client->auth(sha1($PWD));
    print_r($result);
} catch (XML_RPC2_FaultException $e) {
    // The XMLRPC server returns a XMLRPC error
    die('[b]XML-RPC Exception[[/b][i]' . $e->getFaultString().'[/i][b]][/b]');
} catch (Exception $e) {
    // Other errors (HTTP or networking problems...)
    die('Exception : ' . $e->getMessage());
}


?>


Dadurch das bei jedem Funktionscall die Salt eine andere ist hat das ganze vorgehen so natürlich keinen Sinn. Gibt es eine möglichkeit dem XML Server zu sagen das er für den Zeitraum einer verbindung ein "Gedächtniss" hat ? Oder wird wirklich jeder einzelne RPC als neue XML TCP Verbindung hergestellt ? Wenn ja gibt es hier ggf. fertige konzepte zur sicheren authentifizierung ?


danke
solariz ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 01.02.2008, 14:35  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Natürlich wird die neu instanziert und das Passwort im Klartext brauchst du auf dem Server ja auch, nicht grade ein vorbildliches System.

Dein Salt muss dann eben fix sein, zeitabhängig sein (Viertelstundentakt + fixer Salt) oder über die Session laufen.
Zergling-new ist offline   Mit Zitat antworten
Alt 01.02.2008, 14:47  
Neuer Benutzer
 
Registriert seit: 08.01.2007
Beiträge: 20
solariz
Standard

Zitat:
Zitat von Zergling
Natürlich wird die neu instanziert
Was heisst da natürlich ? Bei einer XML-RPC Call engine über JAVA wird z.b. einmal eine verbindung per handshake eingeleitet und dann befehle ausgetauscht.


Zitat:
Zitat von Zergling
und das Passwort im Klartext brauchst du auf dem Server ja auch, nicht grade ein vorbildliches System.
Auch den "einwand" kann ich nicht nachvollziehen. Das ganze ist ein Beispiel gewesen. Natürlich wird später das PAssword nicht so wie im beispiel CLEARTEXT im script gespeichert, hier gibt es ja zahlreiche möglichkeiten... Aber darum ging es mir nicht. Auch ist es kein fertiges system sondern nur code snipet....


Zitat:
Zitat von Zergling
Dein Salt muss dann eben fix sein, zeitabhängig sein (Viertelstundentakt + fixer Salt) oder über die Session laufen.
a) finde ich eher ungeeignet denn was machst du wenn du clients connectest bei denen die Uhrzeit nicht stimmt ?

b) Wäre tatsächlich ne möglichkeit muss ich mal ausprobieren
solariz ist offline   Mit Zitat antworten
Alt 01.02.2008, 14:58  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Zitat:
Zitat von solariz
Zitat:
Zitat von Zergling
Natürlich wird die neu instanziert
Was heisst da natürlich ? Bei einer XML-RPC Call engine über JAVA wird z.b. einmal eine verbindung per handshake eingeleitet und dann befehle ausgetauscht.
Wir sind hier aber im PHP Fortgeschrittenen Forum Ohne Session hast du überhaupt keine Weiche für irgendwelche vorherigen Handlungen, wenn du das nicht nochmal extra implementierst.

Zitat:
Zitat von solariz
Zitat:
Zitat von Zergling
Dein Salt muss dann eben fix sein, zeitabhängig sein (Viertelstundentakt + fixer Salt) oder über die Session laufen.
a) finde ich eher ungeeignet denn was machst du wenn du clients connectest bei denen die Uhrzeit nicht stimmt ?
Darum gehts doch garnicht, der Server berechnet doch nur anhand der Uhrzeit einen Salt, der eben für eine Viertelstunde gültig ist. Der Client weiß ja nicht, wie der Salt erzeugt wurde, es ermöglicht ihm eben nur, dass sein Passwort nicht jedes mal gleich übertragen wird, sondern die "Kodierung" sich eben im Viertelstundentakt ändert. Das Problem ist vielmehr die Zeitgrenze, wenn jemand um 14:59 den Salt bekommt und um 15:01 zurückschickt ist er wieder ungültig.


Zitat:
b) Wäre tatsächlich ne möglichkeit
Aber letztlich würde ichs wirklich mit Sessions machen. Reicht dir das als Info? Wenn ja lass trotzdem mal hören wie du es umgesetzt hast, wär bestimmt für den ein oder anderen interessant.
Zergling-new ist offline   Mit Zitat antworten
Alt 01.02.2008, 21:48  
Erfahrener Benutzer
 
Registriert seit: 16.07.2005
Beiträge: 1.007
PHP-Kenntnisse:
Fortgeschritten
brian johnson befindet sich auf einem aufstrebenden Ast
Standard

mach dich mit dem Diffie-Hellman-Schlüsselaustausch
vertraut.
__________________
PHP4?!?>>>Aktuelle PHP Version: 5.2.11 || 5.3.0
Suse 11.2 *vorfreude*
brian johnson ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
aus SELECT Abfragen Hash bauen Reen_Sc Datenbanken 9 27.06.2008 18:48
Sicherer Passwort Hash tomtaz PHP-Fortgeschrittene 14 17.03.2008 18:13
Name von Hash Feld auslesen Igäl PHP Tipps 2007 9 15.08.2007 15:06
[Geklärt] MD5 Hash nochmals MD5 hash´n? PHP Tipps 2005-2 44 29.10.2005 14:46
GET Übergabe durch vorherigen md5 hash checken PHP Tipps 2005-2 4 27.10.2005 15:55
perl hash aus mysql blob mit php lesen PHP-Fortgeschrittene 6 07.07.2005 17:36
2 Werte mit gleichem MD5 Hash webbi PHP Tipps 2005 4 09.03.2005 12:46
[Erledigt] PHP Authentifizierung PHP-Fortgeschrittene 11 20.01.2005 00:17
Doppelte Werte im Array löschen mittels hash PHP Tipps 2004-2 1 09.12.2004 11:43

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php hash salt, hash authentifizierung, xml-rpc authentifizierung, php authentifizierung salt, authentifizierung salt, xmlrpc2, server salt password javascript, hash und salt, authentifizierung vbulletin xml, ungültiger hash, rpc2 fehler, php authentifizierung klasse, xml/rpc2/client.php, php hash mit salt, php befehle $salt = sha1( $config[\salt\], xml_rpc2 php, xml authentifizierung php, xml_rpc2_server debug, hash salt test, passwort hash salt übertragen

Alle Zeitangaben in WEZ +1. Es ist jetzt 20:35 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.