2010-12-14 8 views
4

Ich verteile ein PHP-erzeugtes Plugin wie ein Wordpress-Plugin, aber ich möchte einen API-Schlüssel dafür implementieren und Benutzer müssten einen API-Schlüssel eingeben, um es zu entsperren, damit es funktioniert.Wie implementiert man einen API-Schlüssel auf PHP-Software?

Wie kann das gemacht werden? Und ja, ich weiß bereits, dass es leicht umgangen werden kann, da PHP nicht kompiliert wird, aber zumindest einige Leute ohne PHP-Kenntnisse abschrecken wird.

Dank ..

+0

Es wird sie nicht wirklich sogar davon abhalten; diese werden das Wissen entfernen den Scheck und machen diese Version verfügbar; diejenigen, die nicht wissen, werden das stattdessen verwenden - sehen Sie all jene Filme, die einmal auf DVD waren, mit einer Verschlüsselung, die die meisten Benutzer nicht mehr entfernen können, die aber jetzt ohne jegliche Verschlüsselung leicht zu erreichen ist. –

+0

Was genau meinen Sie mit einem API-Schlüssel? Die herkömmliche Verwendung entspricht der "geheimen Komponente einer URL, die Sie zum Automatisieren von Aktionen verwenden", aber es klingt wie "Produktschlüssel". Wie für die Frage selbst, Sie haben Recht - es wäre wirklich eine Verschwendung von Zeit, und Sie müssen nicht wissen, PHP zu googeln "[Ihre App] Schlüssel umgehen" – Robert

+0

@El Yobo .. tatsächlich wird es sie abschrecken ... Ich habe viele Plugins gesehen haben diesen API-Schlüssel ... Der Punkt hier ist, ist mir nicht wirklich egal, ob es tut oder nicht abschreckt, aber ich will nur diese Funktion .. –

Antwort

1

Sie können die eigentliche Quellcode mit dem API-Schlüssel verschlüsseln. Verschlüsseln Sie einen wesentlichen Teil des Quellcodes (z. B. mithilfe von libmcrypt), und lassen Sie das Skript die Quelle laden und entschlüsseln. Natürlich könnte jemand, der die relevante Routine findet, die Quelle einfach auf die Festplatte ausgeben und stattdessen verwenden, aber das ist nicht so trivial wie das Entfernen eines Schecks.

+0

Danke für den Vorschlag, aber das ist schon mehr Fortschritt, als ich brauche ... Was ich aus logischer Sicht denke, ist, dass ich eine Reihe von Schlüsseln erzeugen kann und nachdem die Software installiert ist, wird eine Datenbank erstellt ... wenn der Benutzer den Schlüssel bekommt, werden sie eintreten es in die Software und es aktiviert das ganze Programm, das wiederum den Schlüssel in die Datenbank setzt. Bei der Aktivierung wird der eingegebene Schlüssel irgendwo gegen einen Server gecheckt ... –

0

Wenn Sie sich nicht darum kümmern, dass Personen Ihre Prüfung entfernen, müssen Sie nur eine if-Anweisung hinzufügen, die überprüft, ob der konfigurierte Lizenzschlüssel gültig ist oder nicht.

Ich bemerkte, dass Sie erwähnt haben, dass Ihre Lizenzschlüssel einfach SHA1-Hashes waren. Sie könnten einfach zusätzliche 4 Zeichen an den Hash anhängen, die Sie als Prüfsumme verwenden könnten.

Zum Beispiel:

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; 
} 

Dies ist ein sehr einfaches Beispiel, aber es ist einfach Lehr.

Im Wesentlichen würden Sie überprüfen, ob der Lizenzschlüssel auf dem Server des Hosts gültig ist, anstatt ein Skript auf Ihrem Server zu pingen.

Der Nachteil davon ist, dass jeder in der Lage wäre, einen gültigen Schlüssel zu erzeugen, indem er den Quellcode öffnet und validate_key findet.

Sie könnten es ein externes Skript aufrufen, um die verify_key zu tun, aber ist es wirklich die Mühe wert? Außerdem müssen Sie die Ladezeit der Seite opfern, um den Schlüssel zu überprüfen.

Ich erinnere mich, dass vBulletin ein sehr einfach zu knackendes Lizenzierungssystem hatte, aber sie hatten ein verborgenes 1x1 Bild in ein paar Sektionen, die ein Skript auf ihre Domäne pingen. Anhand der Logs konnten sie feststellen, welche Domains illegale Kopien ihrer Software hosten, und sie schickten einfach einen Anwaltsbrief an den Administrator.

Wenn Sie eine robustere Lösung wollten, würde ich vorschlagen, vielleicht in Zend Guard suchen, aber Sie scheinen nicht zu kümmern Menschen, die Ihre Software so persönlich knacken würde ich würde so einfach wie möglich gehen.

+0

Ja, es gibt wirklich nicht viel Gebrauch von der Entwicklung eines komplexen Verschlüsselungssystems, wenn der Code Open Source ist ... Wenn das kompiliert wurde, ist die Sprache eine andere Geschichte. Ich brauche einfach etwas Einfaches, also wer auch immer diese Software benutzt, sagt seinem Freund nicht einfach, dass du gehst, benutze es ... Weil mein Plan ist, ihre E-Mail dem Schlüssel zuzuordnen und einen Schalter auf der Serverseite zu haben, selbst wenn sie den gleiche E-Mail/Schlüssel zu ihrem Freund, wird es von seinem Freunde-Plugin abschalten und er würde pissen und lernen, seinen Freund es so benutzen zu lassen ... –

6

Ich glaube nicht, dass Sie verstehen, was ein API-Schlüssel ist.

Ein API-Schlüssel ist ein Schlüssel, mit dem Sie oder ein Skript auf eine API oder einen Onlinedienst zugreifen und mit dieser interagieren können.

Was Sie zu beschreiben scheinen, ist eine Art Lizenzschlüssel, der verhindern würde, dass ein Benutzer Ihr Skript ohne Zahlung oder Registrierung ausführen kann.

Während ein API-Schlüssel oft tut Zahlung oder Registrierung erfordern, sind die beiden wirklich nicht die gleiche Sache.

API-Schlüssel werden normalerweise installiert, um die Verwendung zu verfolgen und den Missbrauch von Online-Diensten und -Daten zu verhindern.

Es scheint, dass Sie in Ihrem Fall versuchen, den Zugriff auf Ihr Skript zu beschränken.

Wenn Ihr Skript nicht grundlegend von einer fernen Datenquelle abhängig ist, funktioniert diese Methode nicht, da jeder Benutzer mit PHP-Kenntnissen nur den Code entfernt, der die Überprüfung durchführt.

Bei PHP gilt das Gleiche für einen Lizenzschlüssel. Benutzer werden einen Weg finden, um es zu umgehen, es sei denn, sie benötigen es für die Ausführung des Skripts.

Die Validierung muss aus der Ferne durchgeführt werden, und es muss ein Anreiz bestehen, sie zu belassen (der Zugriff auf entfernte Daten ist offensichtlich).

+0

Ja, er spricht über einen Lizenzschlüssel. –

+0

Entschuldigung Nein ich spreche über all die anderen Plugins auf WP, die Api-Taste verwendet ... sie tun es auf die gleiche Weise .. Sie kaufen das Plugin, ein eindeutiger Schlüssel wird an Sie gesendet .. es ist ... und Sie aktiv das Plugin mit dem Schlüssel .. Ich weiß nicht, wieso ihr euch darauf bezieht, es würde leicht geknackt werden ... wen interessiert das? die meisten Leute, die ein einfaches Plugin kaufen werden, wissen NICHT, wie man es knackt. Diejenigen, die wissen, wie, würden nicht einmal dieses kaufen, wie sie es selbst machen können ... –

+0

Was du versuchst zu erreichen, ist ** unmöglich, legitim und sicher ** zu implementieren. – jordanstephens

0

Es ist absolut sinnlos. Als seine PHP müssen Sie den Quellcode senden und jeder Benutzer kann nur den Lizenzprüfcode entfernen und ausführen.

Außerdem mögen Leute nicht, mit Lizenzschlüsseln zu verwirren, wenn Sie Software wirklich, wirklich nützlich, wünschenswert oder wesentlich sind, werden sie entweder eine Lizenzschlüsselfreie Alternative finden oder einfach nicht damit belästigen.

+0

Entschuldigung, du liegst falsch ... Ich habe Plugins verwendet, die API-Schlüssel für viele Kunden haben und alle von ihnen gekommen ist zurück zu mir, um neue Schlüssel zu kaufen ... Wenn einer von ihnen (etwa 35 Leute) weiß, wie man den Scheck einfach umgeht, denken Sie, dass sie das nicht tun werden? weil sie nicht wissen, wie ... diejenigen, die wissen, wie, wird dieses Plugin nicht kaufen ... dieses Plugin ist für Endbenutzer, die nicht PHP aus C++ kennen ... –

+2

@Rick, wenn Sie haben mach es vorher, mach einfach das, was du letztes Mal getan hast. –

+0

Nein, ich habe es nicht vorher gemacht..das wurde nicht von mir entwickelt ... Ich bin nur ein Affiliate, der für sie verkauft ... jetzt möchte ich mein eigenes Plugin erstellen ... –

Verwandte Themen