Ein wichtiger Aspekt des Erfolgs als Anbieter digitaler Produkte besteht darin, Vorsichtsmaßnahmen zum Schutz Ihres Produkts vor unrechtmäßigem Herunterladen zu ergreifen. In dieser Anleitung finden Sie verschiedene Möglichkeiten, wie Sie Ihr Produkt schützen können.

Schutz der Danke-Seite

Hier sehen Sie einige Vorschläge zum Schutz Ihrer Danke-Seite:

  1. Fügen Sie den folgenden HTML-Code in das <HEAD>-Element Ihrer Danke-Seite ein, um Suchmaschinenroboter daran zu hindern, die Seite zu indizieren oder Links darauf zu verfolgen:
<META name="robots" content="noindex, nofollow"/>
  1. Geben Sie der Danke-Seite-URL einen Dateinamen, der nicht sofort auf ihre Funktion hindeutet (danke.htm wäre beispielsweise zu leicht zu erraten).
  2. Wenn Sie sich Sorgen um die Sicherheit machen und sich mit CGI-Programmierung auskennen, können Sie ein Skript erzeugen, das den erfolgreichen Abschluss des Kaufvorgangs durch den Kunden prüft, bevor diesem Zugang zur Danke-Seite gewährt wird. Befolgen Sie die Anweisungen im nächsten Abschnitt, um das ClickBank-Skript für die Linksicherheit zu implementieren.

ClickBank-Skript für die Linksicherheit

Sobald ein Kunde einen Kauf abschließt, werden in der Abfragezeichenfolge mehrere Werte an Ihre Danke-Seite übermittelt, wenn Sie in den Kontoeinstellungen einen Geheimcode (Verknüpfung mit Glossareintrag) festgelegt haben. Dabei handelt es sich um die ClickBank-Belegnummer (cbreceipt), den Zeitpunkt der Bestellung (time), die ClickBank-Artikelnummer (item) sowie den ClickBank-Kaufnachweis (cbpop).

Während des Kaufvorgangs verschlüsseln wir Beleg, Uhrzeit und Artikel mit dem in Ihrem Konto angegebenen Geheimcode. Das Ergebnis wird als Abfragezeichenfolgen-Parameter cbpop an Sie weitergeleitet. Prüfen Sie mit dem Validierungsskript, ob der Wert cbpop korrekt ist.

Im Gegensatz zu den Vorgängerversionen ist kein “seed”-Wert mehr nötig.

Die folgenden C#-, VB.NET- und Ruby-Beispiele bieten nur eine Methode zur Prüfung auf einen korrekten cbpop-Wert. Die Erfassung der Anforderungsparameter wird Ihrer individuellen Implementierung überlassen. Die Codebeispiele gelten nicht für den Instant Notification Service.


PHP SOURCE: 

 function cbValid()
 { $key='YOUR SECRET KEY';
 $rcpt=$_REQUEST['cbreceipt'];
 $time=$_REQUEST['time'];
 $item=$_REQUEST['item'];
 $cbpop=$_REQUEST['cbpop'];

 $xxpop=sha1("$key|$rcpt|$time|$item");
 $xxpop=strtoupper(substr($xxpop,0,8));

 if ($cbpop==$xxpop) return 1;
 else return 0;
 }

PERL SOURCE: 

 sub cbValid
 { my($q,$key,$rcpt,$time,$item,$cbpop,$xxpop);
 $key='YOUR SECRET KEY';

 $q='&'.$ENV{'QUERY_STRING'};
 $q=~/Wcbreceipt=(w+)/; $rcpt=$1;
 $q=~/Wtime=(w+)/;      $time=$1;
 $q=~/Witem=(w+)/;      $item=$1;
 $q=~/Wcbpop=(w+)/;     $cbpop=$1;

 use Digest::SHA1 qw(sha1_hex);
 $xxpop=uc(substr(sha1_hex("$key|$rcpt|$time|$item"),0,8));
 return 1 if $cbpop eq $xxpop;
 return 0;
 }

C# SOURCE: 

 public bool cbValid(string cbreceipt, string time, string item, string cbpop)
 {
 string secret_key = "YOUR   SECRET KEY";

 byte[] data =   Encoding.Default.GetBytes(secret_key + "|" + cbreceipt +   "|" + time + "|" + item);
 byte[] hashedData = new   SHA1Managed().ComputeHash(data);

 string xxpop =   BitConverter.ToString(hashedData).Replace("-","").ToUpper().Substring(0,   8);

 return cbpop.Equals(xxpop);
 }

VB.NET SOURCE: 

 Public Function cbValid(ByVal receipt As String, ByVal time As String, ByVal   item As String, ByVal cbpop As String) As Boolean
 Dim key As String = "YOUR   SECRET KEY"
 Dim sha As New   SHA1CryptoServiceProvider()
 Dim mash As String = key &   "|" & receipt & "|" & time &   "|" & item

 Dim result() As Byte =   sha.ComputeHash(New System.Text.ASCIIEncoding().GetBytes(mash))

 Dim xxpop As String =   BitConverter.ToString(result).Replace("-",   "").ToUpper().Substring(0, 8)

 Return cbpop.Equals(xxpop)
 End Function

Ruby SOURCE: 

 require 'digest/sha1'

 def cbValid(receipt, time, item, cbpop)
 key = "YOUR SECRET KEY"

 popCheck = "#{key}|#{receipt}|#{time}|#{item}"
 xxpop =   Digest::SHA1.hexdigest(popCheck).upcase[0,8]

 cbpop == xxpop
 end

Python SOURCE: 

 import hashlib

 def valid_cb_pop(receipt, time, item, cbpop):
 secret_key = 'YOUR SECRET KEY'
 data = "%s|%s|%s|%s" %   (secret_key, receipt, time, item)
 return cbpop ==   hashlib.sha1(data).hexdigest()[:8].upper()

Java SOURCE: 

 import org.apache.commons.codec.digest.DigestUtils;

 /**
 * Note:  To make this method simple it   uses the Apache Commons Codec library for computing the SHA value.
 *        This library is available at:   http://commons.apache.org/codec/
 **/

 public class CBPopValidator {

 /**
 * Code to validate cbpop parameter   passed from ClickBank orderform to thank-you page.
 *
 * @param receipt The receipt   number that ClickBank generated and passed to thank-you page.
 * @param time The time (unix   timestamp) of the purchase, also passed to thank-you page
 * @param item The item purchased,   also passed to thank-you page
 * @param cbpop The passed   validation parameter
 * @return True of passed cbpop   matches the calculated cbpop using the passed parameters and secret key
 **/
 public static boolean   validCbPop(final String receipt, final String time, final String item, final   String cbpop) {
 // secret key on the site of   your ClickBank account
 final String secretKey =   "YOUR SECRET KEY";

 // create sha1 of passed data with   secret key
 String hashedData =   DigestUtils.shaHex(String.format("%s|%s|%s|%s", secretKey, receipt,   time, item));

 // compare hashed result to   passed value
 return hashedData != null   && hashedData.substring(0, 8).equalsIgnoreCase(cbpop);
 }
 }

No related posts.