Zum Hauptinhalt springen

Einführung

Mit der Automation API können Sie die Integrität der auf Ihrer Website geladenen Kameleoon-Anwendungsdatei überprüfen. Durch diese Prüfung können Sie sicherstellen, dass die Anwendungsdatei nicht geändert wurde und sicher auf Ihrer Website verwendet werden kann. Der Integritätsprüfungsprozess umfasst die Generierung eines Hash-Codes basierend auf dem Inhalt der Anwendungsdatei und den anschließenden Vergleich mit dem Hash-Code der in Ihre Website integrierten Datei. In jedem Fall sollten beide Hash-Codes übereinstimmen. Dieses Dokument führt Sie durch die Implementierung dieser Integritätsprüfung und stellt sicher, dass die Anwendungsdatei vor Manipulationen sicher bleibt.
Bitte beachten Sie, dass unsere API nur einen hashCode generiert. Es liegt an Ihnen zu entscheiden, wie Sie den generierten Hash zur Sicherung der Kameleoon-Anwendungsdatei verwenden.

Beispielimplementierung der Integritätsprüfung

Um den Hash-Code der ursprünglichen Kameleoon-Anwendungsdatei zu erhalten, müssen Sie unsere Automation API aufrufen. Zunächst müssen Sie über OAuth 2.0 Zugriff auf die Automation API erhalten und auf die entsprechende Dokumentation verweisen. Wie im folgenden Beispiel gezeigt, können Sie nach einer Anfrage an den API-Endpoint zum Abrufen des Hash-Codes diesen mit dem Hash-Code vergleichen, den Sie auf Ihrer Seite berechnen, um sicherzustellen, dass die Datei in keiner Weise manipuliert wurde.
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` ist veraltet und wurde in allen Kameleoon-Implementierungs-Snippets durch `engine.js` ersetzt. `kameleoon.js` wird nach dem **1. Juni 2026** nicht mehr unterstützt. Nach diesem Datum funktionieren alle Kampagnen auf Websites, die noch auf `kameleoon.js` verweisen, nicht mehr. Wir empfehlen dringend, Ihr Implementierungs-Snippet entsprechend zu aktualisieren.
</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);
Wir überprüfen die auf unserem CDN gehosteten Kameleoon-Anwendungsdateien nicht kontinuierlich für jeden Kunden. Stattdessen überlassen wir es unseren Kunden zu entscheiden, wie die Überprüfung der Anwendungsdateien durchgeführt werden soll und welche Maßnahmen im Falle nicht übereinstimmender Hash-Codes zu ergreifen sind, basierend auf ihren spezifischen Anforderungen. Im Allgemeinen wäre eine sichere Praxis, den Anwendungsdatei-Link umgehend von Ihrer Website zu entfernen, wenn eine Diskrepanz festgestellt wird.
Die Domain für Ihre Kameleoon-Skripte kann zwischen Projekten variieren. Je nachdem, wann Ihre Projekte erstellt wurden, können sie entweder auf kameleoon.eu oder kameleoon.io gehostet werden. Stellen Sie sicher, dass Sie die Domain verwenden, die in Ihrem Projekt in der Kameleoon App angezeigt wird.