Baru-baru ini, cukup sering mereka mulai bertanya kepada saya pertanyaan tentang seberapa aman menggunakan berbagai ekstensi yang sudah jadi, mis. paket ditulis untuk bahasa R, apakah ada kemungkinan akun periklanan akan jatuh ke tangan yang salah
Pada artikel ini, saya akan berbicara secara rinci tentang bagaimana mekanisme otorisasi bekerja di sebagian besar paket dan API layanan iklan, dan bagaimana menggunakan paket yang dijelaskan dalam artikel ini seaman mungkin.
Informasi dalam artikel ini secara teknis bukan yang termudah, oleh karena itu, agar teksnya tidak kering dan teknis seperti bantuan biasa, saya berani mencoba peran sebagai panduan dan akan memandu Anda menelusuri bahan-bahan artikel ini karena persepsi yang paling sederhana.
Bus tamasya kami telah tiba, duduklah dan periksa rencana perjalanan kami saat ini.
Isi
- Bagaimana proses otorisasi bekerja di sebagian besar layanan periklanan modern
- Dari mana datangnya pertanyaan keamanan
- Apa yang mengancam Anda dengan intersepsi token
- Apa yang harus dilakukan jika seseorang telah memiliki token Anda
Cara paling aman menggunakan paket R untuk bekerja dengan sistem periklanan API
5.1. ryandexdirect dan rym - Paket untuk bekerja dengan API Yandex.Direct dan Yandex.Metrica
5.2. rfacebookstat- Paket untuk bekerja dengan akun iklan Facebook
5.3. rvkstat - Paket untuk bekerja dengan akun VK
5.4. rmytarget - Paket Dasbor MyTarget
- Kesimpulan
Bagaimana proses otorisasi bekerja di sebagian besar layanan periklanan modern
Tempat pertemuan grup tamasya kami adalah protokol OAuth.

Hampir semua layanan dimana API saya harus bekerja melakukan otorisasi menggunakan protokol OAuth 2.0, mereka telah menulis secara lebih rinci tentang hal itu di hub, yang tertarik untuk berjalan-jalan di belantara, tolong, Anda memiliki kesempatan seperti itu, Anda dapat melakukannya di sini dan di sini .
Jika Anda menjelaskan maknanya secara singkat, maka OAuth mengizinkan aplikasi (dalam kasus kami, paket R akan menjadi aplikasi semacam itu), yang telah Anda berikan izin, untuk melakukan beberapa tindakan atas nama Anda, tanpa perlu mentransfer nama pengguna dan kata sandi Anda dari akun iklan ke aplikasi ini, lagi untuk alasan keamanan.
Alih-alih login dan kata sandi, protokol OAuth menggunakan token, ini adalah string yang dihasilkan yang terdiri dari serangkaian huruf dan angka, yang menyimpan informasi dalam bentuk terenkripsi:

- Atas nama pengguna mana aplikasi mengeksekusi permintaan
- Apakah pengguna benar-benar mengizinkan aplikasi ini mengakses data mereka
- Apakah pengguna sendiri memiliki izin yang diperlukan untuk bekerja dengan materi iklan yang ia maksud
Untuk proses otorisasi dan bekerja dengan API, Anda biasanya perlu mendaftarkan aplikasi di API. Selanjutnya, aplikasi ini harus menerima konfirmasi dari tim dukungan API dari sistem periklanan tertentu, mis. penulis awalnya menjelaskan secara rinci bagaimana dan mengapa dia akan menggunakan API, semua ini diperiksa, dimoderasi, dan hanya jika dukungan di sisi platform periklanan tidak memiliki pertanyaan keamanan yang akan membuat paket penulis mendapatkan akses ke API, dan dengan bantuan aplikasi terdaftarnya Anda paket, Anda dapat mengotentikasi menggunakan ID dan rahasia yang dikeluarkan untuk aplikasi ini.
Dari mana datangnya pertanyaan keamanan
Kami pindah, mari kita coba mencari tahu di mana pertanyaan keamanan muncul ketika menggunakan paket?

Secara umum, masalah keamanan akses ke panel iklan lebih dari dibenarkan, karena kantor iklan punya uang, dan seringkali tidak cukup kecil, sehingga keamanan akun iklan adalah masalah yang jauh lebih serius daripada keamanan akses, misalnya, untuk profil pengguna reguler di jejaring sosial.
Faktanya adalah bahwa dalam kebanyakan kasus, ketika otorisasi, R mengalihkan pengguna paket ke browser, awalnya untuk mengkonfirmasi akses ke akun, pada tahap ini Anda berada di halaman layanan dengan API yang akan Anda kerjakan. Setelah konfirmasi, pengguna diarahkan ke halaman tempat token akan dibuat, atau kode konfirmasi otorisasi, yang selanjutnya harus dimasukkan ke konsol R.
Jadi, sebagian besar pengguna khawatir karena situs tempat token itu sendiri atau kode konfirmasi otorisasi dihasilkan adalah pihak ketiga dan tidak ada hubungannya dengan layanan iklan itu sendiri, tentu saja mereka juga memiliki penghitung Google Analytics atau penghitung Yandex.Metrica, dan pemilik situs, yang dalam banyak kasus juga merupakan pembuat paket, menurut banyak orang, melalui situs ini dapat mengambil token mereka dan mendapatkan akses untuk mengelola materi iklan mereka melalui mereka.
Apa yang mengancam Anda dengan intersepsi token
Mari kita bicara tentang apa yang secara umum memungkinkan Anda untuk membuat token jika jatuh ke tangan penyerang.
Token harus disimpan dengan cara yang sama seperti semua data lain yang diperlukan untuk mengakses akun, mis. jika token jatuh ke kedua tangan, maka orang yang telah mengambilnya akan dapat mengelola materi iklan Anda: menghapusnya, mengubah, misalnya, akan mungkin untuk mengubah teks iklan dan tautan yang dipimpinnya.
Berita baiknya adalah, seperti yang saya tulis di atas, protokol OAuth memungkinkan Anda memberi kesempatan untuk mengelola materi iklan Anda tanpa memberikan nama pengguna dan kata sandi dari akun Anda, mis. bahkan jika seseorang telah mengambil token Anda, ia tidak akan dapat mencuri akun Anda dengan bantuannya. Tidak ada satu API pun yang memungkinkan Anda untuk meminta, dan terlebih lagi, mengubah kata sandi Anda, sehingga Anda tidak akan diambil akun Anda, tetapi mengiklankan situs Anda melalui akun Anda mudah.
Apa yang harus dilakukan jika seseorang telah memiliki token Anda
Jika kebetulan Anda memindahkan token Anda secara tidak sengaja, jangan panik. Sebenarnya, ini bukan akhir dari dunia, dalam banyak kasus ada sejumlah tindakan yang mengatur ulang token yang dikeluarkan sebelumnya, misalnya, di bagian referensi Yandex.Direct API ini, proses penarikan token yang dikeluarkan sebelumnya dijelaskan secara rinci.
Dalam kebanyakan kasus, terlepas dari API sistem periklanan mana Anda bekerja, itu akan cukup hanya dengan mengubah kata sandi untuk akun Anda.
Cara paling aman menggunakan paket R untuk bekerja dengan sistem periklanan API
Dan sekarang kita telah sampai pada bagian yang paling menarik dari tur kami, maka saya akan berbicara tentang bagaimana cara paling aman untuk menggunakan paket yang saya kembangkan, karena saya sangat mengenal API sistem tempat mereka bekerja.
Saya ingin mencatat bahwa semua token yang diterbitkan disimpan di sisi platform iklan, bukan aplikasi yang digunakan untuk paket R, sehingga bahkan pengguna aplikasi terdaftar untuk bekerja dengan platform iklan API tidak memiliki akses ke token itu sendiri.
ryandexdirect dan rym - Paket untuk bekerja dengan API Yandex.Direct dan Yandex.Metrica
Kedua paket menggunakan layanan Yandex OAuth; untuk detail lebih lanjut, lihat tautan ini.
Ada 2 fungsi dalam paket ryandexdirect untuk otorisasi:
yadirAuth
- otorisasi dua langkahyadirGetToken
- permintaan untuk token otorisasi
Saat menggunakan fungsi yadirAuth, yaitu, saya sarankan menggunakannya ketika bekerja dengan ryandexdirect, proses otorisasi berlangsung sesuai dengan skema yang dijelaskan di sini , satu-satunya kerentanan dalam kasus ini adalah periode sejak kode konfirmasi dihasilkan hingga dimasukkan ke konsol R.
Saya akan menjelaskan alasannya, inilah cara Google Analytics menampilkan data tentang kunjungan ke halaman pembuatan kode verifikasi .

Yaitu kode muncul setelah tanda '?', dan dianggap sebagai parameter GET yang menangkap penghitung Google Analytics, tetapi masa berlaku kode konfirmasi tersebut berakhir segera setelah menggunakannya, yaitu tepat setelah Anda memasukkannya di konsol R. Umur maksimum kode tersebut adalah 10 menit.
Fungsi kedua, yadirGetToken
, melakukan otorisasi sesuai dengan skema lain yang dijelaskan di sini . Dan saat menggunakannya, tidak ada kode konfirmasi yang dihasilkan, mis. setelah Anda memberikan paket izin untuk mengakses data, Anda sampai ke halaman pembuatan token. Token di URL itu sendiri dikembalikan setelah tanda '#', ini bukan parameter get, tetapi jangkar, atau karena bagian URL ini juga disebut hash. Peramban tidak mengirimkan data ini, karenanya, tidak ditransfer lebih lanjut ke laporan Google Analytics, mis. kunjungan ke halaman ini dalam laporan ditampilkan seperti ini:

Dalam kasus kedua ini, tidak ada risiko, tetapi minus dari menggunakan fungsi yadirGetToken adalah bahwa ia tidak menyimpan kredensial ke file di PC Anda, dan karenanya tidak dapat menggunakan data ini di antara sesi R yang berbeda, yang sangat tidak nyaman. Anda akan menyimpan token yang diterima dengan bantuannya, dan digunakan dalam skrip sebagai string teks, masa pakai token tersebut adalah 1 tahun, setelah itu paket tidak akan dapat secara otomatis menggantinya, seperti yang terjadi ketika menggunakan fungsi yadirGetAuth.
Paket rym untuk otorisasi memiliki fungsi rym_auth, yang merupakan analog lengkap dari fungsi yadirAuth, skema operasi yang telah saya jelaskan secara rinci.
rfacebookstat - Paket untuk bekerja dengan akun iklan Facebook
Proses otentikasi dalam API Pemasaran Facebook dijelaskan secara rinci di sini .
Untuk melewati otorisasi, paket rfacebookstat memiliki fungsi fbGetToken
, berfungsi sama dengan fungsi yadirGetToken
dijelaskan sebelumnya dari paket ryandexdirect, mis. semuanya diimplementasikan melalui otentikasi satu langkah. Tidak ada bahaya bahwa token Anda akan dicegat melalui laporan Google Analytics, ada layar bagaimana kunjungan ke halaman pembuatan token terlihat di Google Analytics.

rvkstat - Paket untuk bekerja dengan akun VK
Proses otentikasi Vkontakte dijelaskan dalam Bantuan API .
Di rvkstat, Anda dapat menggunakan salah satu dari dua fungsi untuk otorisasi:
vkAuth
menyediakan otentikasi dua langkah, intinya merupakan analog dari fungsi yadirAuth
dijelaskan di awal blok ini, tetapi hanya untuk otorisasi di API Vkontakte, dan bukan Yandex.
Kekhasan bekerja dengan Vkontakte API dalam hal ini adalah bahwa mendaftarkan aplikasi Anda dan mengakses API cukup sederhana di sana, Anda tidak perlu mengisi formulir di mana Anda harus menjelaskan secara terperinci bagaimana dan mengapa Anda akan menggunakan API. Jadi, karena Anda menggunakan aplikasi Anda ketika bekerja dengan rvkstat, bahkan mencegat kode konfirmasi tidak berfungsi, karena itu terikat ke aplikasi Anda, dan untuk mencegat token dengan itu, Anda perlu mengetahui id dan rahasia aplikasi Anda, kode itu sendiri tidak akan memungkinkan Anda untuk mendapatkan token untuk Anda.
Fungsi vkGetToken
memungkinkan Anda untuk mendapatkan token dengan cara tercepat, di samping itu, token yang diterima terikat ke perangkat yang diminta, yaitu. bahkan jika seseorang mendapatkannya, ia hanya dapat menggunakannya dari PC yang sama dengan yang diminta. Pada saat yang sama, token di URL saat menghasilkan adalah setelah tanda '#', dan seperti yang saya katakan sebelumnya, token itu tidak masuk ke dalam laporan Google Analytics.

Saat ini, ada 3 skema otorisasi di API MyTarget, untuk perincian masing-masing, lihat dokumentasi .
Fungsi myTarAuth dimaksudkan untuk otorisasi di API MyTarget di rmytarget, secara default ia menggunakan skema otorisasi Pemberian Kode Otorisasi , yang memungkinkan Anda untuk bekerja dengan API MyTarget tanpa harus secara pribadi mengaksesnya. Yaitu Saya sudah mendaftarkan aplikasi, itu disetujui oleh dukungan API MyTarget, dan Anda memberinya akses untuk bekerja dengan akun atas nama Anda.
Hibah Kode Otorisasi adalah skema otorisasi dua tahap, artinya mirip dengan yang diterapkan oleh fungsi yadirAuth
dalam paket ryandexdirect.
Ia bekerja sebagai berikut:
- Anda memulai fungsinya, setelah itu browser terbuka.
- Pada halaman layanan MyTarget, Anda memberikan izin untuk mengakses akun Anda.
- Anda akan diarahkan ke halaman paket tempat kode konfirmasi dibuat. Masa hidup maksimum kode ini adalah 1 jam, tetapi berakhir segera setelah Anda menerima token.
- Anda memasukkan kode konfirmasi yang disalin ke konsol R dan mendapatkan tanda untuk bekerja dengan API.
Dalam hal ini, kode konfirmasi adalah parameter get dan dicatat dalam laporan Google Analytics.

Tetapi, jika Anda perhatikan dengan teliti, selain kode (dapatkan kode parameter) , URL berisi satu lagi parameter - status . Ini adalah string, juga token yang dihasilkan oleh paket rmytarget itu sendiri dan dikirim ke browser segera setelah fungsi dimulai, parameter ini unik, dan kode konfirmasi otorisasi terlampir padanya. Meskipun Anda mencegat kode konfirmasi dan token negara, Anda tetap tidak dapat menggunakan kombinasi ini karena Pertama, tidak ada tempat untuk memasukkan token negara, dan seperti yang sudah saya tulis itu unik, dan bahkan jika ada tempat untuk memasukkannya, itu tidak dapat dikirim lagi. Karenanya, skema otorisasi ini sepenuhnya aman.
Tetapi jika semuanya sama, opsi ini masih tampak mencurigakan bagi Anda, maka rmytarget dan fungsi myTarAuth
memungkinkan Anda untuk menggunakan dua skema otorisasi yang tersisa:
- Hibah Kredensial Klien , digunakan untuk bekerja dengan data akun pribadi melalui API
- Hibah Kredensial Agensi Klien , digunakan untuk bekerja dengan data klien agensi / manajer mereka sendiri.
Dalam hal ini, Anda harus secara mandiri mengakses API MyTarget, saat ini hanya badan hukum yang bisa mendapatkannya, dan dikeluarkan secara manual, untuk meminta akses Anda perlu menggunakan formulir umpan balik, Anda dapat mengetahui semua detail di sini .
Jadi, jika semua sama Anda berhasil mendaftarkan aplikasi Anda untuk bekerja dengan API MyTarget, Anda dapat menggunakan fungsi myTarAuth
untuk mengotentikasi menggunakan salah satu dari dua skema yang tercantum di atas, untuk ini, kirimkan nilai FALSE ke argumen code_grant , dan gunakan argumen berikut:
- grant_type - Jenis akun Anda, dalam hal ini akun klien reguler, mengambil nilai "client_credentials" atau "agency_client_credentials".
- agency_client_name - Login klien dari akun agen, hanya digunakan jika grant_type = "agency_client_credentials".
- client_id - ID diberikan kepada Anda saat mengonfirmasi akses ke API MyTarget.
- client_secret - Dikeluarkan kepada Anda ketika Anda mengonfirmasi akses ke API MyTarget bersama dengan ID Klien.
Kredensial Klien Memberikan Kode Sampel Otorisasi myTargetAuth <- myTarAuth(code_grant = FALSE, grant_type = "client_credentials", client_id = "XXXXXXXXXX", client_secret = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx")
Kode contoh untuk skema otorisasi Hibah Kredensial Klien Agensi myTargetAuth <- myTarAuth(code_grant = FALSE, grant_type = "agency_client_credentials", client_id = "XXXXXXXXXX", client_secret = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", agency_client_name = "xxxxxxxxx@agency_client")
Dalam hal menggunakan pendekatan ini, otentikasi akan berlalu tanpa interaksi dengan situs paket rmytarget.
Kesimpulan
Di sinilah tur kami berakhir, karena hari ini lebih dari 10.000 paket diterbitkan di repositori utama - CRAN, dan lebih dari 80.000 di GitHub, sebagai kesimpulan saya ingin mengatakan beberapa kata lagi tentang keamanan penggunaannya.
Pertama-tama, perhatikan apakah ada paket yang Anda butuhkan pada CRAN, karena ini adalah repositori resmi untuk bahasa R, paket-paket tersebut akan dimoderasi oleh tim spesialis dari repositori ini sebelum dipublikasikan di sana. Dan paket tidak akan dipublikasikan di sana sampai sepenuhnya sesuai dengan kebijakan CRAN . Karena itu, jika paket tersebut ada pada CRAN maka Anda dapat yakin bahwa penggunaannya aman untuk Anda.
Selain itu, saya ingin mencatat bahwa kode semua paket untuk bahasa R terbuka, Anda selalu dapat melihat kode dari salah satu fungsinya sebelum meluncurkannya.
Coba juga cari artikel tentang aplikasi paket ini, pengguna R cukup bersedia berbagi informasi, dan Anda mungkin akan menemukan kasus penggunaan paket yang kurang lebih populer. Jika mereka menulis tentang suatu paket, itu berarti mereka menggunakannya, dan tampaknya tidak ada yang bermasalah dengannya.
Lihat juga siapa pembuat paket, ada dua cara untuk melakukan ini:
- Setelah menginstal paket, jalankan
utils::packageDescription("_")$Author
command - Lihat file DESCRIPTION di sumber paket.
Cobalah untuk menemukan beberapa informasi tentang penulis di World Wide Web, jika seseorang bahkan publik setidaknya, dia tidak mungkin mengambil risiko reputasinya untuk mendapatkan tanda akses ke akun iklan Anda dan materi iklan Anda. Seringkali reputasi lebih mahal daripada uang yang diterima dengan cara yang meragukan.
Jika Anda menginstal paket dari GitHub, maka instal dari repositori penulis, dan bukan dari cabang mana pun, sebagai aturan, ada banyak cabang seperti itu di repositori populer:

Faktanya adalah bahwa cabang tidak diperbarui oleh pembuat paket, yang berarti Anda tidak akan menerima versi terbarunya. Dan selain itu, pengguna GitHub yang membuat cabang dapat membuat perubahan pada kodenya sendiri, apakah Anda memutuskan untuk mempercayai perubahan tersebut.
Anda dapat melihat dari repositori mana cabangnya dibuat pada halamannya di GitHub.

Jangan mentransfer token Anda kepada siapa pun dalam keadaan apa pun, menyimpannya dengan cara yang sama seperti Anda menyimpan kata sandi dari akun, bahkan jika Anda perlu menunjukkan contoh kode, lakukan ini tanpa menentukan token.
Ingat, dalam sebagian besar kasus, menggunakan paket R benar-benar aman untuk Anda, saya harap artikel ini membantu saya meyakinkan Anda tentang hal ini, dan berbicara tentang bagaimana proses otorisasi dalam API dari platform periklanan paling populer bekerja.
Semoga beruntung, hati-hati tapi jangan menyerah pada paranoia.