Uygulama anahtarı nedir?
App Key (Uygulama anahtarı) Laravel'i yüklediğinizde veya yeni bir proje oluşturduğunuzda rastgele oluşturulan 32 karakterlik bir dizedir. .env dosyasında saklanır. Eğer geliştirme için projenizi yönetmek için git gibi bir sürüm kontrol sistemi kullanıyorsanız, git push çağrısı Laravel projenizin bir kopyasını gideceği yere gönderir, ancak .env dosyanızı içermez. Bu nedenle, eğer birisi git clone kullanarak projenizi klonlarsa, uygulamalarının doğru çalışması için php artisan key:generate komutunu manuel olarak girmeleri gerekecektir.
Laravel tarafından aşağıdaki amaçlarla kullanılır:
encrypt()
kullanarak şifreleye, decrypt()
kullanarak ise verini deşifreleyebilirsiniz.
Str::random()
kullanarak ise güvenli ve rastgele dizeler oluşturabilirsiniz.
hash_hmac()
işlevini kullanarak verileri imzalayın ve doğrulayın (sign and verify).
Hash::make()
işlevini kullanarak benzersiz kimlik doğrulama belirteçleri (generate unique authentication tokens) oluşturun.
Uygulama anahtarı neden önemlidir?
Uygulama anahtarı çeşitli nedenlerden dolayı önemlidir, ancak en önemlilerinden biri güvenliktir. Laravel, kullanıcı şifreleri veya API anahtarları gibi hassas verileri veritabanında saklamadan veya ağ üzerinden göndermeden önce şifrelemek için Uygulama anahtarını kullanır. Bu, birisi veritabanınıza erişim sağlasa veya ağ trafiğinizi ele geçirse bile, Uygulama anahtarı olmadan hassas verileri okuyamayacaklarını garanti eder.
Şifreleme güvenliğin kritik bir parçasıdır ve Uygulama anahtarı Laravel'de şifreleme için gereklidir. Uygulama anahtarı olmadan, Laravel verileri şifreleyemez veya şifrelerini çözemez ve uygulamanız güvenlik ihlallerine karşı savunmasız kalır.
Uygulama anahtarının önemli olmasının bir başka nedeni de benzersiz kimlik doğrulama belirteçleri (generate unique authentication tokens) oluşturmak için kullanılmasıdır. Laravel bu tokenları kullanıcıların kimliklerini doğrulamak ve korunan kaynaklara erişimlerini yetkilendirmek için kullanır. Tokenlar, Uygulama anahtarı, kullanıcı kimlik bilgileri ve diğer verilerin bir kombinasyonu kullanılarak oluşturulur ve kriptografik olarak güvenlidirler, yani taklit edilemez veya manipüle edilemezler.
Uygulama anahtarı nasıl kullanılır?
Uygulama anahtarı Laravel'in çeşitli yerlerinde kullanılır:
Anahtarın key
olarak ayarlandığı config/app.php
dosyası.
'key' => env('APP_KEY'),
Illuminate\Encryption\Encrypter
sınıfı, verileri şifrelemek ve şifresini çözmek için Uygulama anahtarını kullanır.
Rastgele dizeler oluşturmak için uygulama anahtarını kullanan Illuminate\Support\Str
sınıfı.
Illuminate\Hashing\HashServiceProvider
sınıfı, kimlik doğrulama belirteçleri (authentication tokens) oluşturmak için uygulama anahtarını kullanır.
Yeni bir Uygulama anahtarı nasıl oluşturulur
Uygulama anahtarınızı yeniden oluşturmanız gerekiyorsa, terminalde php artisan key:generate
komutunu kullanabilirsiniz. Bu komut 32 karakterlik yeni bir dize oluşturacak ve .env
dosyanızdaki APP_KEY
değerini güncelleyecektir. Uygulamanızı yeni bir sunucuya dağıttığınızda veya bir güvenlik ihlalinden şüphelendiğinizde olduğu gibi, uygulama anahtarınızı düzenli olarak yeniden oluşturmak iyi bir uygulamadır. İyi bir kimlik bilgisi yönetimi stratejisi rotasyonu içermelidir : anahtarların ve şifrelerin düzenli aralıklarla (örneğin her 6 ayda bir) veya belirli durumlarda (örneğin bir çalışanın şirketten ayrılması) değiştirilmesi.
Çoklu Sunucular
Aynı uygulamayı birden fazla sunucudan sunuyorsanız anahtarı her sunucuda güncellemeniz gerekir.
So the main idea is this: DO NOT RUN key:generate ON PRODUCTION SERVER.
Komut ayrıca isteğe bağlı bir --show bayrağını da destekler. Bu bayrağın belirtilmesi, herhangi bir yapılandırma veya ortam dosyasını güncellemek yerine oluşturulan anahtarı gösterecektir.
Uyarı
Bir uygulama kullanıldıktan sonra şifreleme anahtarının yeniden oluşturulması gerekiyorsa, daha önce eski anahtar kullanılarak şifrelenmiş verilerin yeni şifreleme anahtarı kullanılarak şifresinin çözülemeyeceğini unutmamak önemlidir. Şifreleme anahtarının yeniden oluşturulması önerilmemekle birlikte, bunu yapmanın kesinlikle kritik olmasa da faydalı olduğu bazı senaryolar vardır.
Bu senaryolar ortaya çıktığında, eski verilerin şifresi çözülerek ve yeni şifreleme anahtarı kullanılarak şifreleme yeniden uygulanarak sorunların üstesinden gelinebilir.
Aşağıdakı kod var olan uygulama anahtarını sadece gösterecek:
php artisan key:generate --show
Çıktı aşağıdakine benzer olacaktır, ancak anahtar büyük olasılıkla farklı olacaktır:
base64:lg1m/12MHBbBpiWTXjot98Q9MP/nSzPrvLEU2beD+2Y=
Sonuç
Sonuç olarak, uygulama anahtarı Laravel'in güvenlik ve şifreleme özelliklerinin önemli bir parçasıdır. Hassas verileri şifrelemek, güvenli kimlik doğrulama belirteçleri oluşturmak ve uygulamanızın verilerinin bütünlüğünü sağlamak için kullanılır. Uygulama anahtarının önemini ve Laravel'de nasıl kullanıldığını anlayarak, uygulamanızın güvenli olmasını ve kullanıcılarınızın verilerinin korunmasını sağlayabilirsiniz.
Kaynaklar:
Unlocking the Importance of Laravel’s App Key: Protecting Your Application’s Security and Encryption - https://medium.com/@kirinyetbrian/unlocking-the-importance-of-laravels-app-key-protecting-your-application-s-security-and-1302b98e4e72
Laravel Artisan Key Command: The key:generate Command - https://stillat.com/blog/2016/12/07/laravel-artisan-key-command-the-keygenerate-command
https://tighten.com/insights/app-key-and-you
https://laracasts.com/discuss/channels/laravel/purpose-of-key-generation
https://stackoverflow.com/questions/33370134/when-to-generate-a-new-application-key-in-laravel/33370272#33370272