Comment protéger ma Page de Remerciement, mon Produit ?

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 :        [html toolbar="true"]<META name="robots" content="noindex, nofollow"/>[/html]
  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.  Vous pouvez également envisager d'utiliser une tierce partie. Parmi les plus courantes se trouvent DLGuard et Wishlist.
  4. 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: [php toolbar="true"] 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:

[perl toolbar="true"] 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; }[/perl]


C# SOURCE:

[csharp toolbar="true"] 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); }[/csharp]


VB.NET SOURCE:

[vbnet toolbar="true"] 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[/vbnet]


Ruby SOURCE:

[ruby toolbar="true"] 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[/ruby]


Python SOURCE:

[python toolbar="true"] 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()[/python]


Java SOURCE:

[java toolbar="true"] 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);

}

}[/java]

Vous avez d’autres questions ? Envoyer une demande

0 Commentaires

Veuillez vous connecter pour laisser un commentaire.
Réalisé par Zendesk