「タグの暗号化」機能については、機能のサポート終了を予定しています。
そのため、新規のご利用開始は非推奨です。
個人情報などのセキュアな情報については、httpsで保護されたページからの送信を前提としていますが、どうしてもデータ送信元のページをhttpsにすることができない場合、下記の方法で、タグの内容を暗号化したものを送信することができます。
注意点
- 「タグの暗号化」機能については、機能のサポート終了を予定しています
- そのため、新規のご利用開始は非推奨です
- 詳しくは、「「タグの暗号化」機能の廃止について」をご覧ください。
送信仕様
送信タグ
<script type="text/javascript">
tracker.track('enced', { data: "暗号化されたタグ情報", iv: "16文字の半角英数字" });
</script>
- 「暗号化されたタグ情報」は、下記の「暗号化が必要なタグ内容」をJSONシリアライズした文字列に対して、256bitのAES(CTR方式・PKCS#5)で暗号化した上でbase64エンコードしたものを挿入してください。
その他の暗号化方式はご利用いただけません。ご了承ください。
- 暗号化に必要なキーは管理画面からご確認ください。
- ivは任意の16文字の値を設定してください。できれば送信毎に再生成されることが望ましいです。
- 文字コードはUTF-8です。
暗号化が必要なタグ内容
JSON形式でお送りください
{
"events":[{
"event_name": "タグ種別識別子",
"values": {
タグ内容
}
}]
}
タグ種別識別子
タグ名称 | オブジェクト | タグ種別識別子 |
---|---|---|
userタグ | tracker.user | identify |
コンバージョンタグ | tracker.buy | buy |
日付型データを送信する場合の注意事項
- 日付型データを暗号化して送信する場合は、JSON内のkey名末尾を_dateとして、valueには時刻を10桁のUNIX時間に変換した値を数値型で指定する必要があります。
変換例
時刻 | JavaScriptでの記法 | 暗号化時に指定する値 |
---|---|---|
1970/01/01 9:00 (日本標準時) | new Date("1970/01/01") | 0 |
2018/04/01 9:00 (日本標準時) | new Date("2018/04/01") | 1522508400 |
2020/01/01 9:00 (日本標準時) | new Date("2020/01/01") | 1577804400 |
userタグを暗号化する場合
以下に、具体的な例を挙げて説明します。
<script type="text/javascript">
tracker.user({
user_id : "10",
last_name : "軽手",
first_name : "太郎",
email : "test@example.com",
subscription: true,
birth_date: new Date("1998/04/01") // 日付型データの例として記載しますが、birth_dateは userタグではなく attributeイベントで送信することが推奨されています。
});
</script>
上記のタグを暗号化して送信する場合、userタグなので、タグ種別識別子は identify
、タグ内容については下記の部分となります。
{
user_id : "10",
last_name : "軽手",
first_name : "太郎",
email : "test@example.com",
subscription: true,
birth_date: new Date("1998/04/01") // 日付型データの例として記載しますが、birth_dateは userタグではなく attributeイベントで送信することが推奨されています。
}
この場合、暗号化前の「暗号化されたタグ情報」は下記の通りです。
{
events:[{
event_name: 'identify',
values: {
user_id : "10",
last_name : "軽手",
first_name : "太郎",
email : "test@example.com",
subscription: true,
birth_date: 8913564000 // 日付型データの例として記載しますが、birth_dateは userタグではなく attributeイベントで送信することが推奨されています。
}
}]
}
上記のObjectをJSONシリアライズした文字列に対して、256bitのAES(CTR方式・PKCS#5)で暗号化した上でbase64エンコード処理を行います。
shell scriptのサンプルコード
opensslを利用した場合のサンプルコードは以下のようになります。
- 暗号化キーは各プロジェクトで異なります。管理画面でご確認ください。
- openSSLのバージョンは1.0.1以降です。
- 暗号化キー(-K)、IV(-iv)は、HEX形式に変換する必要があります。
echo '{"events":[{"event_name":"identify","values":{"user_id":10,"last_name":"軽手","first_name":"太郎","email":"example@karte.io"}}]}' | openssl enc -aes-256-ctr -base64 -p -e -nosalt -K 6162636465666768696a6b6c6d6e6f707172737475767778797a313233343536 -iv 31323334353637383930313233343536
PHPのサンプルコード
- キーは各プロジェクトで異なります。管理画面でご確認ください。
- openSSLのバージョンは1.0.1以降です。
- 暗号化キー(-K)、IV(-iv)は、HEX形式に変換する必要があります。
<?php
$algo = 'AES-256-CTR';
$key = 'your key';
$data = 'json event data';
$iv = 'XXXXXXXXXXXXXXXX';
$encrypted = openssl_encrypt($data, $algo, $key, OPENSSL_RAW_DATA, $iv);
$enced_data = base64_encode($encrypted);
echo $enced_data . "\n";
変換を行うと、下記のようなデータが生成されます。(opensslコマンド以外を利用した場合、生成されるデータが異なる場合があります。)
INp67f3s8lGcSDYoGBtNBi7E/R8qr1GNcGoUJLLKTECm+4aI5hqCfTyLqfq2BBFo44fC9cWj1de16MVnFnh0CRk5GYg5PNdTMysvSQNaqG1OAph6jjzixDXH0U1x6WhCabeo/bcn/ezezcBCDzs6jRYYvDtJJrt0JWgzf+Ymt32ZAdbDN9lf
上記がタグに挿入するデータとなります。
実際に挿入したデータは下記のようになります。
<script type="text/javascript">
tracker.track('enced', { data: "INp67f3s8lGcSDYoGBtNBi7E/R8qr1GNcGoUJLLKTECm+4aI5hqCfTyLqfq2BBFo44fC9cWj1de16MVnFnh0CRk5GYg5PNdTMysvSQNaqG1OAph6jjzixDXH0U1x6WhCabeo/bcn/ezezcBCDzs6jRYYvDtJJrt0JWgzf+Ymt32ZAdbDN9k=", iv: "1234567890123456"});
</script>
これをuserタグの代わりに、サイト上に表示させることで、ユーザー情報を暗号化した状態で送信することができます。
コンバージョンタグを暗号化する場合
コンバージョンタグの場合、タグ種別識別子はbuy
を利用してください。
暗号化の手順についてはuserタグと同様です。