2018年1月16日(火)よりサポートサイトはhttps://support2.karte.ioへ移行しました。

タグの内容を暗号化する

 

個人情報などのセキュアな情報については、httpsで保護されたページからの送信を前提としていますが、どうしてもデータ送信元のページをhttpsにすることができない場合、下記の方法で、タグの内容を暗号化したものを送信することができます。

 
1.送信仕様
2.userタグを暗号化する場合
3.コンバージョンタグを暗号化する場合

 

1. 送信仕様


送信タグ

<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

 

2. userタグを暗号化する場合


以下に、具体的な例を挙げて説明します。

通常のuserタグ

<script type="text/javascript">
tracker.user({
user_id : 10,
family_name : "軽手",
first_name : "太郎",
email : "example@karte.io"
});
</script>

 

上記のタグを暗号化して送信する場合、userタグなので、タグ種別識別子はidentify、タグ内容については下記の部分となります。

user_id : 10,
family_name : "軽手",
first_name : "太郎",
email : "example@karte.io"

 

この場合、暗号化前の「暗号化されたタグ情報」は下記の通り。

{
events:[{
event_name: 'identify',
values: {
user_id : 10,
family_name : "軽手",
first_name : "太郎",
email : "example@karte.io"
}
}]
}

 

上記のObjectをJSONシリアライズした文字列を256bitのキーを用いてAESで暗号化処理を行い、base64でエンコード処理を行います。

今回、暗号化キーを仮に abcdefghijklmnopqrstuvwxyz123456 とします。
※キーは各プロジェクトで異なります。管理画面でご確認ください。

opensslコマンドを利用した場合のサンプルコードは以下のようになります。
※openSSLのバージョンは1.0.1以降です。
※暗号化キー(-K)、IV(-iv)は、HEX形式に変換する必要があります。

echo '{"events":[{"event_name":"identify","values":{"user_id":10,"family_name":"軽手","first_name":"太郎","email":"example@karte.io"}}]}' | openssl enc -aes-256-ctr -base64 -p -e -nosalt -K 6162636465666768696a6b6c6d6e6f707172737475767778797a313233343536 -iv 31323334353637383930313233343536

 

変換を行うと、下記のようなデータが生成されます。(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タグの代わりに、サイト上に表示させることで、ユーザー情報を暗号化した状態で送信することができます。

 

3. コンバージョンタグを暗号化する場合


コンバージョンタグの場合、タグ種別識別子は buy を利用してください。
暗号化の手順についてはuserタグと同様です。