Yapılandırma
Laravel'in şifreleyicisini kullanmadan önce, config/app.php yapılandırma dosyanızdaki anahtar yapılandırma seçeneğini ayarlamanız gerekir. Bu yapılandırma değeri APP_KEY ortam değişkeni tarafından yönlendirilir. Bu değişkenin değerini oluşturmak için php artisan key:generate komutunu kullanmalısınız çünkü key:generate komutu, uygulamanız için kriptografik olarak güvenli bir anahtar oluşturmak için PHP'nin güvenli rastgele bayt üretecini kullanacaktır. Genellikle, APP_KEY ortam değişkeninin değeri Laravel'in kurulumu sırasında sizin için oluşturulacaktır.
Şifreleme Anahtarlarını Zarifçe Döndürme
Uygulamanızın şifreleme anahtarını değiştirirseniz, tüm kimliği doğrulanmış kullanıcı oturumları uygulamanızdan çıkış yapar. Bunun nedeni, oturum çerezleri de dahil olmak üzere her çerezin Laravel tarafından şifrelenmesidir. Ayrıca, önceki şifreleme anahtarınızla şifrelenmiş hiçbir verinin şifresini çözmek artık mümkün olmayacaktır. Bu sorunu hafifletmek için Laravel, önceki şifreleme anahtarlarınızı uygulamanızın APP_PREVIOUS_KEYS ortam değişkeninde listelemenize olanak tanır. Bu değişken, önceki tüm şifreleme anahtarlarınızın virgülle ayrılmış bir listesini içerebilir:
APP_KEY="base64:J63qRTDLub5NuZvP+kb8YIorGS6qFYHKVo6u7179stY=" APP_PREVIOUS_KEYS="base64:2nLsGFGzyoae2ax3EF2Lyq/hH6QghBGLIq5uL+Gp8/w="Bu ortam değişkenini ayarladığınızda, Laravel değerleri şifrelerken her zaman "geçerli" şifreleme anahtarını kullanacaktır. Ancak, değerleri şifresini çözerken, Laravel önce geçerli anahtarı deneyecek ve geçerli anahtar kullanılarak şifre çözme başarısız olursa, Laravel anahtarlardan biri değeri şifresini çözebilene kadar önceki tüm anahtarları deneyecektir. Bu zarif şifre çözme yaklaşımı, şifreleme anahtarınız döndürülse bile kullanıcıların uygulamanızı kesintisiz kullanmaya devam etmesini sağlar.
Şifreleyiciyi Kullanma : Bir Değeri Şifrelemek
Crypt cephesi tarafından sağlanan encryptString yöntemini kullanarak bir değeri şifreleyebilirsiniz. Tüm şifrelenmiş değerler OpenSSL ve AES-256-CBC şifresi kullanılarak şifrelenir. Ayrıca, tüm şifrelenmiş değerler bir mesaj doğrulama kodu (MAC) ile imzalanır. Entegre mesaj doğrulama kodu, kötü niyetli kullanıcılar tarafından kurcalanmış herhangi bir değerin şifresinin çözülmesini önleyecektir:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Crypt;
class RokitoTokenController extends Controller
{
/**
* Store a Rokito API token for the user.
*/
public function store(Request $request): RedirectResponse
{
$request->user()->fill([
'token' => Crypt::encryptString($request->token),
])->save();
return redirect('/secrets');
}
}Şifreleyiciyi Kullanma : Bir Değerin Şifresini ÇözmekCrypt cephesi tarafından sağlanan decryptString yöntemini kullanarak değerleri şifresini çözebilirsiniz. Değer düzgün bir şekilde şifresi çözülemiyorsa, örneğin ileti kimlik doğrulama kodu geçersiz olduğunda, bir IlluminateContractsEncryptionDecryptException atılır:
use Illuminate\Contracts\Encryption\DecryptException;
use Illuminate\Support\Facades\Crypt;
try {
$decrypted = Crypt::decryptString($encryptedValue);
} catch (DecryptException $e) {
// ...
}