Laravel - Şifreleme
Şifreleme, herhangi bir üçüncü kullanıcının bilgiyi okuyamayacağı şekilde bazı algoritmalar kullanarak düz bir metni bir mesaja dönüştürme işlemidir. Bu, hassas bilgilerin iletilmesi için faydalıdır, çünkü bir saldırganın aktarılan bilgileri hedeflemesi için daha az şans vardır.
Şifreleme adı verilen bir işlem kullanılarak gerçekleştirilir. Cryptography. Şifrelenecek metin şu şekilde adlandırılır:Plain Text ve şifrelemeden sonra elde edilen metin veya mesaj çağrılır Cipher Text. Şifreli metni düz metne dönüştürme işlemineDecryption.
Laravel kullanır AES-256 ve AES-128şifreleme için Açık SSL kullanan şifreleyici. Laravel'de bulunan tüm değerler protokol kullanılarak imzalanırMessage Authentication Code böylece temel değer şifrelendikten sonra değiştirilemez.
Yapılandırma
Oluşturmak için kullanılan komut key Laravel'de aşağıda gösterilmiştir -
php artisan key:generate
Lütfen bu komutun PHP güvenli rasgele bayt üretecini kullandığını ve çıktıyı aşağıda verilen ekran görüntüsünde gösterildiği gibi görebileceğinizi unutmayın -
Yukarıda verilen komut, web uygulamasında kullanılabilecek anahtarın oluşturulmasına yardımcı olur. Aşağıda gösterilen ekran görüntüsüne bakın -
Not
Şifreleme değerleri, config/app.php dosya, yani şifreleme için iki parametre içeren key ve cipher. Bu anahtarı kullanan değer uygun şekilde hizalanmazsa, Laravel'de şifrelenen tüm değerler güvensiz olacaktır.
Şifreleme Süreci
Bir değerin şifrelenmesi, encrypt helperLaravel sınıfının denetleyicilerinde. Bu değerler OpenSSL ve AES-256 şifresi kullanılarak şifrelenir. Tüm şifrelenmiş değerler, şifrelenmiş dizede herhangi bir değişiklik olup olmadığını kontrol etmek için Mesaj Kimlik Doğrulama kodu (MAC) ile imzalanır.
Aşağıda gösterilen kod bir denetleyicide belirtilmiştir ve bir gizli veya hassas bir mesajı saklamak için kullanılır.
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
class DemoController extends Controller{
**
* Store a secret message for the user.
*
* @param Request $request
* @param int $id
* @return Response
*/
public function storeSecret(Request $request, $id) {
$user = User::findOrFail($id);
$user->fill([
'secret' => encrypt($request->secret)
])->save();
}
}
Şifre Çözme İşlemi
Değerlerin şifresinin çözülmesi, decrypt helper. Aşağıdaki kod satırlarını inceleyin -
use Illuminate\Contracts\Encryption\DecryptException;
// Exception for decryption thrown in facade
try {
$decrypted = decrypt($encryptedValue);
} catch (DecryptException $e) {
//
}
Kullanılmakta olan geçersiz MAC nedeniyle şifre çözme işlemi başarılı olmazsa, uygun bir istisna atılır.