Passer au contenu principal

Introduction

L’Automation API vous permet de vérifier l’intégrité du fichier d’application Kameleoon chargé sur votre site Web. En effectuant cette vérification, vous pouvez vous assurer que le fichier d’application n’a pas été modifié et peut être utilisé en toute sécurité sur votre site. Le processus de vérification d’intégrité consiste à générer un code de hachage basé sur le contenu du fichier d’application, puis à le comparer au code de hachage du fichier intégré à votre site Web. Dans chaque cas, les deux codes de hachage doivent correspondre. Ce document vous guidera dans la mise en œuvre de ce contrôle d’intégrité, garantissant que le fichier d’application reste à l’abri de toute altération.
Veuillez noter que notre API ne génère qu’un hashCode. Il vous appartient de décider comment utiliser le hachage généré pour sécuriser le fichier d’application Kameleoon.

Exemple d’implémentation du contrôle d’intégrité

Pour obtenir le code de hachage du fichier d’application Kameleoon original, vous devez appeler notre Automation API. Tout d’abord, vous devrez obtenir l’accès à l’Automation API en utilisant OAuth 2.0 et vous référer à la documentation pertinente. Comme indiqué dans l’exemple ci-dessous, après avoir effectué une requête vers l’endpoint API pour récupérer le code de hachage, vous pouvez le comparer avec le code de hachage que vous calculez de votre côté pour vous assurer que le fichier n’a pas été altéré.
const axios = require("axios");
const crypto = require("crypto");

const API_SSX_URL = "https://api.kameleoon.com";
const SITE_CODE = "SITE_CODE";
const HASH_TYPE = "SHA256";
const CLIENT_ID = "CLIENT_ID";
const CLIENT_SECRET = "CLIENT_SECRET";

async function obtainAuthToken() {
	const response = await axios({
		url: `${API_SSX_URL}/oauth/token`,
		method: "POST",
		headers: {
			"Content-type": "application/x-www-form-urlencoded"
		},
		data: `grant_type=client_credentials&client_id=${CLIENT_ID}&client_secret=${CLIENT_SECRET}`
	});
	return response.data.access_token;
}

async function obtainHash() {
	const token = await obtainAuthToken();
	const hashCodeResponse = await axios({
		url: `${API_SSX_URL}/sites/${SITE_CODE}/hash`,
		method: "PATCH",
		headers: {
			Authorization: "Bearer " + token,
			"Content-type": "application/json"
		},
		data: `{"hashType": "${HASH_TYPE}"}`
	});

	return hashCodeResponse.data.hashCode; //  { hashCode: 'hashCode', hashType: "SHA256" }
}

<Important>
`kameleoon.js` est obsolète et a été remplacé par `engine.js` dans tous les snippets d'implémentation Kameleoon. `kameleoon.js` ne sera plus pris en charge après le **1er juin 2026**. Après cette date, toutes les campagnes sur les sites Web référençant encore `kameleoon.js` cesseront de fonctionner. Nous vous recommandons fortement de mettre à jour votre snippet d'implémentation en conséquence.
</Important>


// function to compare the hash code




	async function checkHash() {
	const scriptResponse = await axios({
		url: `https://${SITE_CODE}.kameleoon.io/engine.js?t=${new Date().getTime()}`,
		method: "GET"
	});
	const hashCodeFromAPI = await obtainHash();
	const hashCode = crypto.createHash(HASH_TYPE).update(scriptResponse.data).digest("hex");
	return hashCodeFromAPI === hashCode;
}

checkHash();
<?php

$API_SSX_URL = 'https://api.kameleoon.com';
$SITE_CODE = 'SITE_CODE';
$HASH_TYPE = 'SHA256';
$CLIENT_ID = 'CLIENT_ID';
$CLIENT_SECRET = 'CLIENT_SECRET';

$tokenRequest = curl_init($API_SSX_URL . "/oauth/token");
curl_setopt($tokenRequest, CURLOPT_POST, 1);
curl_setopt($tokenRequest, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($tokenRequest, CURLOPT_POSTFIELDS, "grant_type=client_credentials&client_id=" . $CLIENT_ID . "&client_secret=" . $CLIENT_SECRET);
$tokenOutput = curl_exec($tokenRequest);
curl_close($tokenRequest);
$token = json_decode($tokenOutput)->access_token;

$hashRequest = curl_init($API_SSX_URL . "/sites/" . $SITE_CODE . "/hash");
curl_setopt($hashRequest, CURLOPT_CUSTOMREQUEST, 'PATCH');
curl_setopt($hashRequest, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($hashRequest, CURLOPT_POSTFIELDS, json_encode(array(
  'hashType' => $HASH_TYPE
)));
curl_setopt($hashRequest, CURLOPT_HTTPHEADER, array(
  'Content-Type: application/json',
  'Authorization: Bearer ' . $token
));
$hashOutput = curl_exec($hashRequest);
curl_close($hashRequest);
$hash = json_decode($hashRequest)->hashCode;

// Some method to compare the hash code
checkHash($hash);
Nous ne vérifions pas en continu les fichiers d’application Kameleoon hébergés sur notre CDN pour chaque client. Nous laissons plutôt nos clients déterminer comment la vérification des fichiers d’application doit être effectuée, ainsi que les actions à entreprendre en cas de codes de hachage non concordants, en fonction de leurs besoins spécifiques. En général, une pratique sûre consisterait à supprimer rapidement le lien du fichier d’application de votre site Web si une non-concordance est détectée.
Le domaine de vos scripts Kameleoon peut différer entre les projets. Selon la date de création de vos projets, ils peuvent être hébergés soit sur kameleoon.eu, soit sur kameleoon.io. Assurez-vous d’utiliser le domaine affiché dans votre projet dans l’application Kameleoon.