Créer et sécurisé une API en PHP

Eléphanteau du PHP | 26 Messages

22 déc. 2022, 18:32

Hello

J'ai essayé de créer une API en PHP, je ne sais pas si c'est bien, mais ça fonctionne. Je voudrais sécuriser l'API avec une clé.

( $lat et $long renvoient les valeurs des paramètres &lat et &long de l'URL)
include 'src/callapi.php';
include 'src/variable.php';

$sortie = array('lat' => $lat, 'long' => $long, 'goodtosee' => $goodtosee);

echo json_encode($sortie);

J'ai essayé ceci pour sécuriser l'accès :
$key = "blablabla";

if ($_GET["key"] == $key) {
    $sortie = array('lat' => $lat, 'long' => $long, 'goodtosee' => $goodtosee);
    echo json_encode($sortie);
} else {
    echo "key not valid";
}
Si le paramètre clé dans l'url est égal à "blablabla" alors il affiche les données sinon il affiche "key not valid".

Est-ce que cela sécurise vraiment mon API ? Comment puis-je limiter le nombre d'appels par mois ?

Merci d'avance !

Mammouth du PHP | 2703 Messages

22 déc. 2022, 19:58

une api est destinée au public. pour pouvoir l'utiliser, il faudra connaitre la valeur de $key, donc que vous la rendiez publique, donc cela ne sécurise rien.

avoir une clé par utilisateur, cela permet de compter le nombre d'appels par utilisateur, de bloquer un utilisateur.

Eléphanteau du PHP | 26 Messages

22 déc. 2022, 20:01

Oui j'ai mis cela dans une variable pour le test mais je compte la donner à un client

Donc je peux, avec la clef, compter le nombres d'appels effectuer ?

Eléphanteau du PHP | 26 Messages

22 déc. 2022, 20:03

une api est destinée au public. pour pouvoir l'utiliser, il faudra connaitre la valeur de $key, donc que vous la rendiez publique, donc cela ne sécurise rien.

avoir une clé par utilisateur, cela permet de compter le nombre d'appels par utilisateur, de bloquer un utilisateur.

Oui j'ai mis cela dans une variable pour le test mais je compte la donner à un client

Donc je peux, avec la clef, compter le nombres d'appels effectuer ?

Mammouth du PHP | 2703 Messages

22 déc. 2022, 20:19

une url compliquée, ça aboutit au même résultat d'une url simple avec un paramètre.

avec ou sans clé, s'il n'y a qu'un seul client qui a accès à cette url, il est possible d'enregistrer les accès à la page.