Comment peut-on limiter à recevoir des données par mon webservice ?
En fait, j'ai un webservice et je veux que seulement les utilisateurs qui ont une clé puissent envoyer les données ?
Par exemple, je donne à un utilisateur une clé (SHA-256 hash) :
1c3b1d8197bc20ccc11e391cabd2c7576fe1b4aeb6e0d3607ddf22725164faa9
qui correspond :
"ma cle tres secrète pour je porte mes converses tu l as cru patate crue"
ensuite, il me l'envoie par le web service :
par exemple :
$url = 'http://127.0.0.42/api/lookup/1c3b1d8197bc20ccc11e391cabd2c7576fe1b4aeb6e0d3607ddf22725164faa9/donnesdata/
Comment puis-je vérifier si je peux traiter les données de cette utilisatrice qui a la bonne clé (ou non) ?
Voici j'ai fait 2 solutions :
Est-ce que vous en avez une autre plus performante?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52 $cleVenu = '1c3b1d8197bc20ccc11e391cabd2c7576fe1b4aeb6e0d3607ddf22725164faa9'; $parole = 'ma cle tres secrete pour je porte mes converses tu l as cru patate crue'; //SHA-256 hash -- > sha256 $cleHash = hash_hmac('sha256', $parole, 'secret'); echo '<h1>1ere solution</h1>'; if ($cleHash === $cleVenu) { echo '<p>bonne clé</p>'; // donc: on traite les informations reçues } else { echo '<p>mauvaise clé</p>'; //On ne traite pas cette demande } echo '<h1>2e solution</h1>'; function comparer_2cle_hache($cle1er, $cleOrigine) { $longeur = strlen($cle1er); if ($longeur !== strlen($cleOrigine)) { return false; } //comparer le code ASCII $status = 0; for ($i = 0; $i < $longeur; $i++) { $status |= ord($cle1er[$i]) ^ ord($cleOrigine[$i]); } return $status === 0; if (!is_string($cle1er) || !is_string($cleOrigine)) { return false; } } if (comparer_2cle_hache($cleVenu,hash_hmac('sha256', $parole, 'secret'))) { echo '<p>bonne clé par 2e</p>'; // alors: on traite les informations reçues } else { echo '<p>mauvaise clé</p>'; //(die('désolé) }
Sinon, Quelle solution est meilleure parmi les miennes ?
Merci
Partager