Kullanıcıların Twitter, Google, vb. OAuth kimlik bilgilerini kullanarak giriş yapmalarına izin verecek bir web sitesinde çalışıyorum. çeşitli vücut parçalarına karşı rehinlerle korumak için. Anahtarım susturulursa, parça yanmış.
API anahtarının, çalışma zamanında kimlik doğrulama isteklerini gerçekleştirmek için kullanıldığı için kaynağımla seyahat etmesi gerekiyor. Benim durumumda, anahtar uygulama içinde bir yapılandırma dosyasında veya kodun içinde bulunmalıdır. Tek bir makineden oluşturup yayınladığımda sorun değil. Bununla birlikte, karışıma kaynak kontrolü attığımızda işler daha da karmaşıklaşıyor.
Ucuz bir piç olduğum için bulutta veya GitHub gibi TFS gibi ücretsiz kaynak kontrol hizmetlerini kullanmayı tercih ederim. Bu bana hafif bir bilmece bırakır:
API anahtarlarım kodumdayken ve kodum halka açık bir depoda olduğunda vücudumu nasıl koruyabilirim?
Bununla başa çıkmanın birkaç yolunu düşünebilirim, ancak hiçbiri tatmin edici değil.
- Tüm özel bilgileri koddan kaldırabilir ve dağıtımdan sonra yeniden düzenleyebilirim. Bu, uygulanacak ciddi bir acı olacaktır (birçok yolu ayrıntılandırmam) ve bir seçenek değildir.
- Şifreleyebilirim. Ancak şifresini çözmem gerektiğinden, kaynağı olan herkes bunun nasıl yapıldığını çözebilir. Anlamsız.
- Özel kaynak kontrolü için ödeme yapabilirim. Lol j / k para harcamak? Lütfen.
- Hassas özellikleri kaynağımın geri kalanından ayırmak için dil özelliklerini kullanabilir ve bu nedenle kaynak denetiminde tutabilirim. Şimdi ne yapıyorum, ama yanlışlıkla gizli dosyayı kontrol ederek kolayca berbat olabilir.
Gelişme, hata ayıklama ve konuşlandırma yoluyla sorunsuzca çalışacak ve aynı zamanda kusursuz davranacak özel ürünlerimi dünya ile paylaşmamamı (anlık görüntü dışında) da garanti etmenin gerçekten garantili bir yolunu arıyorum. Bu tamamen gerçekçi değil. Peki gerçekçi olarak ne yapabilirim?
Teknik detaylar: VS2012, C # 4.5, kaynak kontrolü ya TF servisi veya GitHub olacak. Şu anda, hassas tuşları kaynak kontrolüne eklenmeyecek ayrı bir .cs dosyasında bölmek için kısmi bir sınıf kullanıyor. GitHub, .gitignore'un kısmi sınıf dosyasının teslim edilmediğinden emin olmak için kullanılabileceği gibi bir avantaja sahip olabileceğini düşünüyorum, ancak bunu daha önce berbat ettim. "Ah, ortak bir sorun, bunu nasıl yaptığınız" umuduyla, ancak "sahip olabileceği kadar emmez" için yetinmek zorunda kalabilirim: /