Fraud Kill-Chain : Event Verification 설정
팔로우
개요
디파이너리의 Fraud Kill-Chain 기능 중 SDK Spoofing을 방어하는 이벤트 유효성 검증(Server to Server Event Verification) 설정 방법을 설명합니다.
SDK Spoofing 이란?
SDK Spoofing은 광고주 앱에 연동된 SDK가 서버와 주고받는 프로토콜 규약을 해킹한 후,
실제로는 발생하지 않은 가짜 이벤트(회원가입, 레벨 달성, 구매 등)를 만들어 광고 성과로 위장하는 광고 사기 입니다.
Fraud Kill-Chain : Server to Server Event Verification
_ 디파이너리의 Fraud Kill-Chain은 측정한 이벤트의 진위 여부를 고객사로부터 직접 검증받는 방법으로 가짜 이벤트를 탐지합니다.
_ 고객사는 자사 서버와 디파이너리 서버만 알 수 있는 비밀 키를 회원가입, 구매, 등과 같은 주요 이벤트에 설정합니다.
_ 만약 고객사 서버에서 특정 이벤트 발생 결과를 유효하지 않다고 판단하면 디파이너리는 이를 SDK Spoofing으로 간주하고 Fraud Kill-Chain 대시보드에 리포트합니다.
설정하기
Server to Server Event Verification 설정을 위해 다음의 메뉴로 이동합니다.
- Attribution - Fraud Kill-Chain Settings - Server to Server Verification
검증 방식 및 항목 설정
각 항목을 설정하여 설정을 완료합니다.
a. Name
검증 룰의 관리용 이름을 설정합니다.
b. Endpoint
디파이너리에서 검증을 요청할 검증 서버의 주소를 설정합니다. 일반적으로는 앱 개발사의 서버가 될 것입니다.
c. Target Events
검증을 진행할 대상 이벤트를 선택합니다. SDK를 통해서 연동이 확인된 이벤트들만 리스트에 노출이 되며, 여러 개를 선택할 수 있습니다.
[[보통:인용:안내]] 회원가입, 구매, 캐릭터 생성 등 주요 광고 전환용 이벤트를 검증 대상으로 선택합니다.
d. HMAC SHA-256 암호화 키
이 UUID 형태의 key는 디파이너리가 전송하는 Event Verification 데이터를 인증하기 위한 key 입니다. 해당 key 를 통해 디파이너리가 전송하는 Event Verification 데이터가 정상인지 여부를 인증합니다
[[보통:인용:경고]]검증 요청에 대한 유효성 검사 방법
- 검증 요청 시 데이터에 대한 유효성 검증을 위한 값은 http Header 설정 부분에 abx_hash 의 값으로 전송됩니다.
- abx_hash 값은 http request body (GET 방식일 경우 querystring) 를 발급된 암호화 키로 HMAC SHA256 암호화 한 결과 값입니다.
- 만약 디파이너리가 보낸 abx_hash 값과 검증 서버에서 만든 동일한 방법으로 만든 값이 다르다면 올바르지 않은 접근으로 판단하고 검증 실패로 처리하여야 합니다.
e. Http Method
디파이너리가 검증 서버로 요청을 보내는데 사용할 방식입니다. GET과 POST를 지원합니다.
f. Max Retry Count
검증 요청이 실패하였을 때에, 재요청을 보내는 최대 횟수입니다.
g. Success Code
디파이너리가 전송한 검증 요청이 정상일 때 검증 서버가 리턴할 http status code 입니다.
여기서 설정한 값 이외의 코드가 리턴이 되면 디파이너리가 Ad Fraud로 간주합니다.
h. Success Message
디파이너리가 전송한 검증 요청이 정상일 때 검증 서버가 리턴할 Htts response message 입니다.
검증 통과 여부에는 영향을 주지 않습니다.
i. Template
디파이너리가 검증 서버로 전달할 데이터를 구성합니다. key=value 형태로 구성을 합니다.
- key : 검증 서버에서 처리하기 위한 파라미터 키 네임을 입력합니다.
- value : 디파이너리에서 제공하는 값에 해당하는 매크로를 선택합니다.
Template Macro 리스트
Template 에 Value 값으로 사용될 매크로 리스트입니다.
Device
구분 | 매크로 | 설명 | 예시 |
디 바 이 스 |
{req.common.identity.adid} | 구글광고아이디 or 애플광고식별자 | 0fa27c1e-9378-4d1c-8f01-118e094240e5 |
{req.common.identity.gaid} | 구글광고아이디 | ||
{req.common.identity.idfa} | 애플광고식별자 | ||
{req.common.identity.idfv} | 애플벤더아이디 | ||
{req.common.identity.ad_id_opt_out} | 광고추적제한여부 | FALSE | |
{req.common.device_info.os} | 디바이스OS 버전 | 6 | |
{req.common.device_info.model} | 디바이스 모델네임 | modelmodel | |
{req.common.device_info.vendor} | 디바이스 제조사 | samsung | |
{req.common.device_info.resolution} | 디바이스 해상도(가로x세로) | 800x600 | |
{req.common.device_info.is_portrait} | 디바이스 오리엔테이션 | FALSE | |
{req.common.device_info.platform} | 디바이스 플래폼 / 안드로이드, 아이오에스 | 1 | |
{req.common.device_info.network} | 디바이스 네트워크 타입 | network | |
{req.common.device_info.is_wifi_only} | 디바이스 셀룰러 지원 여부 | FALSE | |
{req.common.device_info.carrier} | 디바이스 통신사 | skt | |
{req.common.device_info.language} | 디바이스 언어 | kr | |
{req.common.device_info.country} | 디바이스 국가 | ko | |
{req.common.build_id} | 디바이스 빌드아이디 | 1 |
Server
구분 | 매크로 | 설명 | 샘플 |
클릭 | {req.common.a_ip} | 디파이너리가 제공하는 클릭 아이피 데이터 | 14.33.77.170 |
{req.common.a_fp} | 디파이너리가 제공하는 클릭 핑거프린트 데이터 | Android 7.0:LG-F800L:14.33.77.170 | |
{req.common.a_country} | 디파이너리가 제공하는 클릭의 국가 데이터 | kr | |
{req.common.a_city} | 디파이너리가 제공하는 클릭의 도시 데이터 | suwon-si | |
{req.common.a_region} | 디파이너리가 제공하는 클릭의 지역 데이터 | gyeonggi-do |
App
구분 | 매크로 | 설명 | 샘플 |
앱 | {req.common.package_name} | 안드로이드 패키지 네임, 애플 번들 아이디 | com.dfinery.v2 |
{req.common.appkey} | 디파이너리 앱키 | 6aE6E7OO5EOsw35P8vCHtQ | |
{req.common.sdk_version} | 디파이너리 SDK 버전 | 1.1.1 | |
{req.common.installer} | 인스톨러 정보 | ||
{req.common.app_version} | 앱 버전 | 1.0.0 |
Event
구분 | 매크로 | 설명 | 샘플 |
이벤트 | {req.evt.event_name} | 이벤트 명 | abx:sign_up |
{req.evt.group} | 이벤트 그룹 | abx | |
{req.evt.event_datetime} | 이벤트 발생 시각 (UTC) | 2019-06-25 02:31:43.603 | |
{req.evt.event_timestamp} | 이벤트 발생 시각 | 1561429903 | |
{req.evt.event_timestamp_d} | 이벤트 발생 시각 | 1561429903.60351 | |
{req.evt.param_json} | 이벤트 파라미터(json type) |
모든 상품 데이터 JSON 이벤트 property JSON(HTTP POST 방식 적용을 권장합니다.) |
|
{req.evt.user_properties_json} | 유저 프로퍼티 파라미터 (json type) | SetUserProperties API 로 설정한 사용자 프로퍼티 JSON 데이터입니다. |