2009-03-10 10 views
0

Ich habe eine ASP.Net-Anwendung, die auf meinen Firmen-Webservern in ihren internen Netzwerken gehostet wird.Erzwingen von Lizenzbedingungen in meiner ASP.NET-Anwendung

Ich möchte verschiedene bekannte Lizenzbedingungen (Ablaufdatum/Anzahl der Benutzer, etc etc)

erzwingen ich ein verschlüsseltes XML-Dokument enthält die Begriffe als Schlüssel/Wert-Paare verwenden ist die Planung und speichern Sie es auf dem Web-Server als eine verschlüsselte flache Textdatei.

Ich plane dann, eine benutzerdefinierte Sicherheit Httpmodul zu verwenden, um die verschlüsselte Datei zu entschlüsseln und die Begriffe im Speicher (Anwendung?) Zu extrahieren und zu speichern und dann die Bedingungen bei jeder Seitenanforderung für den relevanten Bereich der Anwendung zu erzwingen.

Gibt es einen besseren Ansatz für die Durchsetzung von Lizenzbedingungen für eine Webanwendung?

+0

Die verschlüsselte XML-Datei wird also auf dem Webserver des Kunden gespeichert und Ihre Lizenzprüfung wird jedes Mal ausgeführt, wenn ein interner Unternehmensbenutzer die Website aufruft? –

+0

Das ist richtig. Oder alle n Anfragen? Sagen Sie also alle 1000 Anfragen/Treffer. Es könnte Overkill sein, wie Mark Brittingham kommentierte. Ich würde lieber eine Flatfile als die Datenbank treffen, wenn ich wirklich aus irgendeinem Grund jede Anfrage überprüfen müsste? – Konrad

+0

Andere Begriffe wären zum Beispiel (Eine Anzahl von 'Objekten' begrenzen ... Benutzer können Objekte dynamisch erstellen/entfernen). Ein anderes Beispiel ist das monatliche Limit für Sitzungen und/oder das Limit für maximale monatliche Anfragen. Also ein Pay-per-Use-Modell. – Konrad

Antwort

3

Ich habe eine andere Route gewählt: Ich habe die Lizenzinformationen einfach in ein verschlüsseltes Feld in der Datenbank gelegt, so dass ich mich nicht um ein Httpmodul kümmern musste. SQL Server verfügt über EncryptByKey- und DecryptByKey-Funktionen, mit denen sich verschlüsselte Daten ganz einfach abrufen lassen. Ich benutzte auch einen einfachen Passwortschlüssel, um den gesamten Prozess sehr einfach zu verwalten. Ich schätze deine Herangehensweise - es ist wirklich ziemlich clever - aber ich denke du hast das Leben für dich selbst etwas zu schwierig gemacht!

Soweit es die Sicherheit betrifft, ist dies relativ sicher, solange Sie nicht den Quellcode zur Verfügung stellen. Der einzige Nachteil ist die Möglichkeit, dass sie Ihren Code zerlegen, um die Passphrase oder andere Verschlüsselungstechnologie zu extrahieren (dies könnte auch für Ihren Ansatz von Httpmodule gelten). Dies ist nicht etwas, worüber ich mir Sorgen mache, da ich hauptsächlich mit Fortune 500-Unternehmen arbeite und ich habe eine rechtliche Vereinbarung mit ihnen, die eine "no disassembly" -Klausel enthält. Die große Mehrheit der Unternehmen wird einfach kein Risiko eingehen, wenn sie dies tun, nur um zusätzliche Funktionen zu erhalten oder ihre Datenbank zu erweitern. Wenn Sie an Tausende von ansonsten anonymen Benutzern verteilen, kann es andererseits eine andere Geschichte sein.

Update: Wenn Sie nicht SQL Server verwenden, können Sie auch eine Form der code-basierten Verschlüsselung verwenden, um Ihre Lizenzierungsinformationen zu speichern/abrufen. Wenn Sie eine Verschlüsselungsklasse benötigen, habe ich eine einfache aber extrem starke AES-Klasse für eine previous answer hochgeladen.

+0

Danke Mark. Ich benutzte Rijndael symmetrischen Schlüsselalgorithmus. Ich mag die URL-Freundlichkeit der AES-Klasse. – Konrad

+1

Ja - Meine Entwurfsziele waren: A) einfache String-zu-String-Konvertierung und B) URL-Friendly, da ich verschlüsselte Informationen über URLs senden und akzeptieren musste. In meiner URL-Behandlung verschlüssle ich immer auch Datum und Uhrzeit, so dass das Kopieren von URLs nicht funktioniert. Wenn Sie meine Antworten mögen, hilft eine Upvote! –

Verwandte Themen