2010-12-14 2 views
4

Je distribue un plugin créé par PHP comme un plugin Wordpress mais je veux implémenter une clé API pour cela et les utilisateurs devraient entrer une clé API pour le débloquer afin qu'il fonctionne.Comment implémenter une clé API sur un logiciel PHP?

Comment cela peut-il être fait? Et oui je sais déjà qu'il pourrait être facilement contourné puisque PHP n'est pas compilé mais au moins il va décourager certaines personnes n'ayant aucune connaissance en PHP.

Merci ..

+0

Il ne les dissuadera pas vraiment; ceux-ci les connaissances vont supprimer le contrôle et rendre cette version disponible; Ceux qui n'ont pas les connaissances utiliseront à la place - voir tous ces films qui étaient une fois sur DVD avec un cryptage au-delà de la capacité de la plupart des utilisateurs à supprimer, mais facilement accessible maintenant sans aucun cryptage du tout. –

+0

Que voulez-vous dire par une clé API? L'utilisation traditionnelle est similaire à «un composant secret d'une URL que vous utilisez pour automatiser des actions», mais il semble que vous vouliez dire «clé de produit». Quant à la question elle-même, vous avez raison - ce serait vraiment une perte de temps, et vous n'avez pas besoin de savoir PHP pour google "[votre application] contourner la clé" – Robert

+0

@El Yobo..en fait, il va les dissuader ... J'ai vu de nombreux plugins avoir cette clé API ... Le point ici est que je ne me soucie pas vraiment si cela les dissuade ou pas, mais je veux juste cette fonctionnalité .. –

Répondre

1

Vous pouvez brouiller le code source avec la clé API. Cryptez une partie essentielle du code source (par exemple en utilisant libmcrypt) et demandez au script de charger et de déchiffrer la source. Bien sûr, quelqu'un qui trouve la routine appropriée pourrait alors facilement vider la source sur le disque et l'utiliser à la place, mais ce ne sera pas aussi trivial que de supprimer une vérification.

+0

Merci pour la suggestion mais c'est déjà plus d'avance que j'ai besoin ... Ce que je pense du point de vue logique est que je peux générer un ensemble de clés et après que le logiciel est installé, une base de données est créée ... lorsque l'utilisateur obtient la clé, ils entreront dans le logiciel et il a activé l'ensemble du programme qui à son tour met la clé dans la base de données. Pendant l'activation, la clé qu'ils ont entrée est vérifiée contre un serveur quelque part ... –

0

Si vous ne vous souciez pas de supprimer votre chèque, il vous suffit d'ajouter une instruction if qui valide si la clé de licence configurée est valide ou non. J'ai remarqué que vous avez mentionné que vos clés de licence étaient simplement des hachages SHA1. Vous pouvez facilement ajouter 4 caractères supplémentaires au hachage, que vous pouvez utiliser comme somme de contrôle.

Par exemple:

function generate_key() 
{ 
    $serial = sha1(uniqid(rand(), true)); 
    $checksum = substr(md5($serial), 0, 4); 
    return $serial . $checksum; 
} 

function verify_key($key) 
{ 
    $serial = substr($key, 0, 40); 
    $checksum = substr($key, -4); 
    return md5($serial, 0, 4) == $checksum; 
} 

Ceci est un exemple très simple, mais il est tout simplement pédagogique. Essentiellement, vous devez valider si la clé de licence est valide sur le serveur de l'hôte au lieu de faire un ping sur un script sur votre serveur. L'inconvénient de ceci est que n'importe qui serait capable de générer une clé valide en ouvrant le code source et en trouvant le validate_key.

Vous pourriez l'avoir appeler un script externe pour faire le verify_key, mais cela en vaut-il vraiment la peine? En outre, vous allez sacrifier le temps de chargement de la page pour vérifier la clé. Je me souviens de vBulletin ayant un système de licence très facile à cracker, mais ils avaient une image 1x1 cachée dans quelques sections qui ping un script sur leur domaine. En utilisant les journaux, ils ont pu déterminer quels domaines hébergeaient des copies illégales de leur logiciel et ils ont simplement envoyé une lettre d'avocat à l'administrateur.

Si vous vouliez une solution plus robuste, je suggérerais peut-être de regarder dans Zend Guard, mais vous semblez ne pas se soucier des gens qui craquent votre logiciel alors personnellement, je voudrais simplement aller aussi simple que possible.

+0

Ouais il n'y a vraiment pas beaucoup d'utilisation pour développer un système de chiffrement complexe quand le code est open source ... Si cela a été compilé, le langage est une histoire différente. J'ai juste besoin de quelque chose de simple pour que quiconque utilise ce logiciel ne dise pas simplement à son ami que vous y allez, utilisez-le ... Parce que mon plan est de faire correspondre leur email à la clé et de basculer sur le serveur même email/clé à leur ami, il va désactiver son plugin d'amis et il serait pisse et apprend à ne jamais laisser son ami l'utiliser comme ça ... –

6

Je ne pense pas que vous compreniez ce qu'est une clé API.

Une clé API est une clé qui vous permet, à vous ou à un script, d'accéder et d'interagir avec une API ou un service en ligne. Ce que vous semblez décrire est une sorte de clé de licence, qui empêcherait un utilisateur d'utiliser votre script sans peut-être payer ou s'inscrire.

Alors qu'une clé API souvent nécessite un paiement ou un enregistrement, les deux ne sont vraiment pas la même chose.

Les clés API sont généralement mises en place pour suivre l'utilisation et empêcher l'utilisation abusive de services et de données en ligne.

Il semble que dans votre cas, vous essayez simplement de restreindre l'accès à votre script.

À moins que votre script ne dépende fondamentalement d'une source de données distante, cette méthode ne fonctionnera pas car tout utilisateur ayant une connaissance lointaine de PHP supprimera simplement le code qui effectue la validation.

Avec PHP, il en va de même pour une clé de licence. L'utilisateur trouvera un moyen de le contourner, à moins qu'il n'en ait besoin pour le script.

La validation doit être effectuée à distance, et il doit y avoir une incitation à la laisser en contact (l'accès aux données à distance étant le plus évident).

+0

Oui, il parle d'une clé de licence. –

+0

désolé non je parle de tous les autres plugins sur wp qui utilise la clé api ... ils le font de la même manière .. vous achetez le plugin, une clé unqiue est envoyé à vous .. c'est tout ... et vous actif le plugin avec la clé .. Je ne sais pas pourquoi vous continuez à faire référence à ce serait facilement fissuré ... qui s'en soucie? la plupart des gens qui achèteront un simple plugin à utiliser ne sauront pas comment le casser ... ceux qui savent comment, n'achèteraient même pas cela comme ils peuvent le faire eux-mêmes ... –

+0

Ce que vous essayez d'accomplir est ** impossible à mettre en œuvre de manière légitime et sûre **. – jordanstephens

0

C'est absolument inutile. Comme son php vous devez envoyer le code source et tout utilisateur peut simplement supprimer le code de vérification de licence et l'exécuter. Les personnes qui n'aiment pas jouer avec les clés de licence, à moins que vous ne soyez vraiment, vraiment utile, désirable ou essentiel, trouveront une alternative sans clé de licence ou ne s'en soucieront pas.

+0

désolé vous avez tort ... j'ai utilisé des plugins qui ont api clé pour de nombreux clients et tous sont venus retour à moi pour acheter de nouvelles clés ... Si l'un d'entre eux (environ 35 personnes) sait comment contourner le chèque, vous pensez qu'ils ne le feront pas? parce qu'ils ne savent pas comment ... ceux qui savent comment, ne vont pas acheter ce plugin ... ce plugin est pour les utilisateurs finaux qui ne connaissent pas le php en C++ ... –

+2

@Rick, si vous avez l'a fait avant, fais juste ce que tu as fait la dernière fois. –

+0

Non je ne l'ai pas fait avant .. ce qui n'a pas été développé par moi ... Je suis juste une filiale de vente pour eux ... maintenant je veux créer mon propre plugin ... –

Questions connexes