Dadou
jeudi 6 novembre 2008 à 15:59
Faire communiquer deux serveurs distinct c'est tout de même le propre des webservices (SOAP, XML-RPC, REST), les protocoles de communications doivent avoir un niveau de sécurité correct, Google, Amazon et eBay utilisent les webservices pour leurs différentes API. J'ai déjà réalisé un webservice de réservation hôtelière.
Si tu veux être sûr de la sécurité, un système relativement simple :
- A chaque "client" tu associes une "clé d'identification" et une "clé de cryptage",
- Dans chacun des échanges le client devra envoyer la "clé d'identification" et les données cryptés par (un des algo de mcrypt par exemple),
- Le serveur principal reçoit la "clé d'identification" et la demande cryptée,
- Effectue le décryptage de la demande, si la demande décrypté est cohérente, retourner la réponse elle aussi cryptée, et ainsi de suite.
voila les fonction que j'utilise pour crypter et décrypter (la pour un mot de passe, mais c'est valable pour toute chaine de charactères) :
CODE-BOX
function crypt_password($password, $cle)
{
$td = mcrypt_module_open("blowfish", "", "ecb", "");
$key = substr($cle, 0, mcrypt_enc_get_key_size($td));
$iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
mcrypt_generic_init($td, $key, $iv);
$encrypted = mcrypt_generic($td, $password);
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
return $encrypted;
}
// Décrypter un mot de passe
function decrypt_password($password, $cle)
{
$td = mcrypt_module_open("blowfish", "", "ecb", "");
$key = substr($cle, 0, mcrypt_enc_get_key_size($td));
$iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
mcrypt_generic_init($td, $key, $iv);
$decrypted = mdecrypt_generic($td, $password);
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
return $decrypted;
}
l'algo utilisé est blowfish qui est assez performant :
http://fr.wikipedia.org/wiki/Blowfish