Pour devenir un excellent vendeur de produits numériques, vous devez prendre des précautions afin de protéger votre produit contre les téléchargements abusifs. Ce guide comprend plusieurs étapes destinées à vous aider dans la sécurisation de votre produit.

Protection de la page de remerciement

Voici quelques suggestions qui peuvent vous aider à protéger votre page de remerciement :

  1. Vous pouvez insérer le code HTML suivant dans l’élément <HEAD> de votre page de remerciement pour éviter l’indexation de la page ou des liens suivants, qui y sont contenus, par un robot de moteur de recherche :
    META name=”robots” content=”noindex, nofollow”
  2. Attribuez un nom de fichier complexe à l’URL de votre page de remerciement (évitez d’attribuer un nom trop facile à deviner, tel que merci.htm).
  3. Si vous vous inquiétez au sujet de la sécurité et que vous avez des connaissances en programmation CGI, vous pouvez également créer un script. Celui-ci va vous permettre de vérifier que l’achat effectué par le client est bien terminé avant de l’autoriser à accéder à la page de remerciement. Suivez les instructions décrites ci-après pour implémenter le script de sécurité d’un lien ClickBank.

Script de sécurité d’un lien ClickBank

Lorsque le client termine un achat, plusieurs valeurs sont transférées vers votre page de remerciement dans la chaîne de requête, si vous avez indiqué une clé secrète (lien d’accès à une entrée du glossaire) dans les paramètres de votre compte. Il s’agit du numéro de reçu ClickBank (cbreceipt), de la période à laquelle la commande a été effectuée (heure), du numéro d’article ClickBank (article) et de la valeur de la preuve d’achat ClickBank (cbpop).

Lors de l’achat, le reçu, l’heure et l’article sont chiffrés à l’aide de la clé secrète indiquée sur votre compte. Nous vous renvoyons ensuite le résultat en tant que paramètre de chaîne de requête appelé cbpop. Confirmez l’exactitude de la valeur cbpop à l’aide du script de validation.

Contrairement aux versions précédentes du script, une valeur de départ « seed » n’est pas requise.

Les exemples C#, VB.NET et Ruby ci-dessous sont uniquement des méthodes permettant de vérifier la validité d’une valeur cbpop. Par ailleurs, la capture des paramètres de demande est effectuée au cours de chaque implémentation. Ces exemples de code ne s’appliquent pas au Service de notification instantanée.


 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