Saya sedang mengerjakan situs web yang akan memungkinkan pengguna untuk masuk menggunakan kredensial OAuth dari orang-orang seperti Twitter, Google, dll. Untuk melakukan ini, saya harus mendaftar dengan berbagai penyedia ini dan mendapatkan kunci API super rahasia yang saya miliki untuk melindungi dengan janji terhadap berbagai bagian tubuh. Jika kunci saya mendapat gank, bagian akan dicabut.
Kunci API harus bepergian dengan sumber saya, karena digunakan saat runtime untuk melakukan permintaan otentikasi. Dalam kasus saya, kunci harus ada dalam aplikasi dalam file konfigurasi atau dalam kode itu sendiri. Itu tidak masalah ketika saya membangun dan menerbitkan dari satu mesin. Namun, ketika kita melempar kontrol sumber ke dalam campuran, semuanya menjadi lebih rumit.
Karena saya bajingan yang murah, saya lebih suka menggunakan layanan kontrol sumber gratis seperti TFS di cloud atau GitHub. Ini membuat saya sedikit bingung:
Bagaimana saya bisa menjaga tubuh saya tetap utuh ketika kunci API saya ada dalam kode saya, dan kode saya tersedia di repositori publik?
Saya dapat memikirkan sejumlah cara untuk menangani hal ini, tetapi tidak satupun yang memuaskan.
- Saya dapat menghapus semua informasi pribadi dari kode, dan mengeditnya kembali setelah penerapan. Ini akan menjadi sangat sulit untuk diterapkan (saya tidak akan menjelaskan banyak cara), dan bukan pilihan.
- Saya bisa mengenkripsi itu. Tetapi karena saya harus mendekripsi, siapa pun dengan sumbernya dapat mengetahui bagaimana melakukannya. Tak berarti.
- Saya bisa membayar untuk kontrol sumber pribadi. LOL j / k menghabiskan uang? Silahkan.
- Saya dapat menggunakan fitur bahasa untuk memisahkan informasi sensitif dari sumber saya yang lain dan karenanya menjaga dari kontrol sumber. Ini yang saya lakukan sekarang, tetapi bisa dengan mudah dikacaukan dengan memeriksa file rahasia secara keliru.
Saya benar-benar mencari cara yang dijamin untuk memastikan saya tidak membagikan privasi saya dengan dunia (kecuali pada snapchat) yang akan bekerja dengan lancar melalui pengembangan, debugging dan penyebaran dan juga sangat mudah. Ini sama sekali tidak realistis. Jadi apa yang bisa saya lakukan secara realistis?
Detail teknis: VS2012, C # 4.5, kontrol sumber akan menjadi layanan TF atau GitHub. Saat ini menggunakan kelas parsial untuk memisahkan kunci sensitif dalam file .cs terpisah yang tidak akan ditambahkan ke kontrol sumber. Saya pikir GitHub mungkin memiliki keuntungan sebagai .gitignore dapat digunakan untuk memastikan bahwa file kelas parsial tidak diperiksa, tapi saya sudah mengacaukannya sebelumnya. Saya berharap untuk "oh, masalah umum, ini adalah bagaimana Anda melakukannya" tetapi saya mungkin harus puas dengan "yang tidak menyedot sebanyak mungkin",: /