Share this

Naik Level Keamanan Transaksi Data
Sudah saatnya kamu naik level dari seseorang yang hanya fokus ke dalam developer mobile entah itu memakai bahasa pemograman java, dart, kotlin. Keamanan data meungkin adalah sesuatu kewajibann bagi seorang senior development.
Kemanan ini sangat dibutuhkan bagi intitas penting seperti bank, pemerintahan bahkan terkait dengan transaksi keuangan. seberapa sebagian orang developer masih menyepelekan tentang sebuah lapis keamanan transaksi.
Transaksi data antara backend dan frontend ( Mobile ), Sebagian orang pasti juga sudah memakai yang namanya adalah token api / jwt dan lain sebagainya. Namun masih ada beberapa kelemahan dari token / jwt yang di pakai.
Kelemahan ini bisa jadi kebocoran token calling api bukan pada app tetapi pada aplikasi pihak ketiga seperti postman. Dimana hal ini merupakan sebuah kebocoran harusnya backend hanya menerima dan merespon data yang benar benar dikirim dari frontend legalnya
Oleh sebab itu, aku mencoba melakukan research untuk keamanan yang lebih tinggi, hal ini bisa dicapai dengan bantuan google play integrity.
Googlay Play Integrity
Kalo Kamu belum tahu google play integrity ini, aku jelaskan dikit saja. Fitur ini membantu kita untuk meningkatkan keamanan transaksi data. Banyak sekali manfaat yang dihasilkan ketika memakai ini. Mulai dari verfikasi aplikasi terpercaya hingga memeriksa license aplikasi google play.
Kalo kamu masih belum tahu, kamu bisa cek deh dichat gpt saja.
Nah berikut ini adalah cara kerja terkait dengan google play integrity yang bisa disambungkan ke aplikasi mobile kita ( bisa kotlin atau flutter ).

Berikut ini adalah beberapa kondisi yang cukup bagus dalam keamanan aplikasi. Untuk mengetahui status untuk diverifikasi oleh pengguna backend.
| Kondisi | Kemungkinan tindakan aplikasi |
|---|---|
| Aplikasi resmi dan perangkat memenuhi persyaratan | Mengizinkan akses normal |
| APK dimodifikasi | Menolak akses ke fitur sensitif |
| Aplikasi dipasang dari sumber tidak resmi | Memeriksa status lisensi atau keaslian aplikasi |
| Perangkat tidak memenuhi persyaratan integritas | Membatasi transaksi tertentu |
| Terindikasi aktivitas otomatis yang mencurigakan | Meminta verifikasi tambahan |
Berguna untuk aplikasi apa
Aplikasi aplikasi mobile dengan transaksi keuangan, data pembelian, atau laporan. Transaksi dikatagorikan sebagai transaksi penting dan tidak boleh ada kebocoran data.
Contoh
Aplikasi Keuangan ->biasanya terdapat transfer, peminjaman dan lain sebagainya
Aplikasi Data –> data KTP, data penting lainya.
Berikut ini adalah sedikit tutorialnya,
1. Daftar Untuk Service Terlebih Dahulu Di Google Cloud Console, Dan aktifkan.

Ini adalah code yang perlu dilakukan di bagian backend. Dimana backend perlu melakukan pengecekan ke ke google play setiap transaksi data dari mobile yang masuk. Apakah data yang dikirimkan ini benar benar dari aplikasi yang terlicense dan legal.
Bukan dikirim dari postman atau dari aplikasi lain
Code BackEnd
Contoh Code BackEnd untuk melakukan pengecekan ke play integrity. Ini adalah contoh untuk code diLaravel PHP.
Contoh Pemanggilan Require Google Api Client. Di Php Laravel.
composer require google/apiclient
Contoh Call Fungsi.
function verifyPlayIntegrity(string $integrityToken): bool
{
try {
$packageName = 'com.mifpro.depohunter';
$client = new \Google\Client();
$client->setAuthConfig(
storage_path('app/google/play-integrity.json')
);
$client->setScopes([
'https://www.googleapis.com/auth/playintegrity'
]);
$accessToken = $client->fetchAccessTokenWithAssertion();
if (empty($accessToken['access_token'])) {
return false;
}
$response = \Illuminate\Support\Facades\Http::withToken(
$accessToken['access_token']
)->timeout(15)->post(
"https://playintegrity.googleapis.com/v1/{$packageName}:decodeIntegrityToken",
['integrityToken' => $integrityToken]
);
if (!$response->successful()) {
return false;
}
$payload = $response->json('tokenPayloadExternal');
if (!is_array($payload)) {
return false;
}
$request = $payload['requestDetails'] ?? [];
$app = $payload['appIntegrity'] ?? [];
$device = $payload['deviceIntegrity'] ?? [];
$timestamp = $request['timestampMillis'] ?? null;
return
($request['requestPackageName'] ?? '') === $packageName
&& ($app['packageName'] ?? '') === $packageName
&& ($app['appRecognitionVerdict'] ?? '') === 'PLAY_RECOGNIZED'
&& in_array(
'MEETS_DEVICE_INTEGRITY',
$device['deviceRecognitionVerdict'] ?? [],
true
)
&& is_numeric($timestamp)
&& abs((int) floor(microtime(true) * 1000) - (int) $timestamp) <= 120000;
} catch (\Throwable $e) {
\Illuminate\Support\Facades\Log::error(
'Play Integrity verification failed: ' . $e->getMessage()
);
return false;
}
}
Di code backend ini ada transaksi data dari backend ke server google Play untuk melakukan pengecekan token yang dikirim melalui mobile. Sebelum diproses lebih lanjut verifikasi ini harus didapatkan terlebih dahulu atau melihat respon dulu verifikasi dari google play.
Code FrontEnd ( Flutter )
Tambahkan code import untuk flutter, Library ini digunakan untuk mendapatkan data device integritynya
flutter pub add device_integrity
Buat sebuah fungsi untuk mendapatkan sebuah data device integrity digunakan dikirim ke backend sebagai verifikasi dari backend ke google cloud.
import 'package:device_integrity/device_integrity.dart';
import 'package:dio/dio.dart';
class PlayIntegrityService {
final DeviceIntegrity _integrity = const DeviceIntegrity();
final Dio _dio;
PlayIntegrityService(this._dio);
Future<bool> verifyIntegrity() async {
try {
// Ambil token dari Google Play Integrity.
final result = await _integrity.playIntegrityToken(
cloudProjectNumber: '123456789012',
);
if (!result.success || result.token == null) {
print('Gagal mendapatkan token: ${result.error}');
return false;
}
// Kirim token ke backend Laravel.
final response = await _dio.post(
'/security/play-integrity',
data: {
'integrity_token': result.token,
},
);
return response.statusCode == 200 &&
response.data['success'] == true;
} on DioException catch (e) {
print('Gagal mengirim token: ${e.message}');
return false;
} catch (e) {
print('Play Integrity error: $e');
return false;
}
}
}
Cara pemanggilan fungsi dan pemanggilan API
final dio = Dio(
BaseOptions(
baseUrl: 'https://domain-backend-kamu.com/api',
connectTimeout: const Duration(seconds: 30),
receiveTimeout: const Duration(seconds: 30),
),
);
final integrityService = PlayIntegrityService(dio);
final isValid = await integrityService.verifyIntegrity();
if (isValid) {
print('Integritas aplikasi berhasil diverifikasi.');
} else {
print('Verifikasi integritas gagal.');
}
Sekarang secara code sudah dijelaskan. Sebagian besar pembuatan aplikasi mobile keamanan hanya mengandalkan token dari backend. apakah valid atau tidak, Secara perkembangan jaman, aplikasi ini terkadang dibongkar paksa, aplikasi palsu dan masih banyak lagi. sehingga perlu peningkatan keamanan.
Namun aplikasi yang tidak membutuhkan data transaksi / tidak begitu harus ditingkatkan keamanan, menggunakan JWT token atau api auth token dari backend sudah cukup.
Apabila reference ini masih kurang, boleh untuk mencari penjelasan di reference lainya. Aku hanya share tentang fitur ini terkait dengan kelebihan dan tujuan. tapi ingat fitur ini bukan solusi tunggal tetapi keamanan tambahan untuk meningkatkan keamanan dalam transaksi data.
Bagi kamu punya tips lainya untuk mengingkatkan keamanan sebuah aplikasi mobile android / apps store / Harmany Os siilahkan berkomentar mungkin kita bisa berdikusi dikolom komentar.
Semog bermanfaat
