「タグの暗号化」機能については、機能のサポート終了を予定しています。
そのため、新規のご利用開始は非推奨です。

個人情報などのセキュアな情報については、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タグと同様です。