Laravel
Hash cephesi, kullanıcı şifrelerini depolamak için güvenli
Bcrypt ve
Argon2 karma sağlar. Laravel uygulama başlangıç kitlerinden birini kullanıyorsanız, varsayılan olarak kayıt ve kimlik doğrulama için
Bcrypt kullanılacaktır.
Bcrypt, parolaları karıştırmak için harika bir seçimdir çünkü
"çalışma faktörü" ayarlanabilirdir, yani donanım gücü arttıkça bir karma oluşturma süresi artırılabilir. Parolaları karıştırırken yavaşlık iyidir. Bir algoritmanın bir parolayı karıştırması ne kadar uzun sürerse, kötü niyetli kullanıcıların uygulamalara karşı kaba kuvvet saldırılarında kullanılabilecek tüm olası dize karma değerlerinin "gökkuşağı tablolarını" oluşturması da o kadar uzun sürer.
Yapılandırma
Varsayılan olarak,
Laravel verileri karıştırırken
bcrypt karma sürücüsünü kullanır. Ancak
argon ve
argon2id dahil olmak üzere birkaç başka karma sürücüsü desteklenir. Uygulamanızın karma sürücüsünü
HASH_DRIVER ortam değişkenini kullanarak belirtebilirsiniz. Ancak, Laravel'in karma sürücü seçeneklerinin tamamını özelleştirmek istiyorsanız,
config
ublish Artisan komutunu kullanarak tam karma yapılandırma dosyasını yayımlamalısınız:
php artisan config:publish hashing
Şifreleri Karıştırmak
Parolayı
Hash cephesinde
make metodunu çağırarak karmaşıklaştırabilirsiniz :
<?php
namespace App\Http\Controllers;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
class RokitoController extends Controller
{
/**
* Update the password for the user.
*/
public function update(Request $request): RedirectResponse
{
// Validate the new password length...
$request->user()->fill([
'password' => Hash::make($request->newPassword)
])->save();
return redirect('/profile');
}
}Bcrypt İş Faktörünün Ayarlanması Bcrypt algoritmasını kullanıyorsanız,
make metodu algoritmanın iş faktörünü
rounds seçeneği kullanılarak yönetmenize olanak tanır; ancak Laravel tarafından yönetilen varsayılan iş faktörü çoğu uygulama için kabul edilebilirdir:
$hashed = Hash::make('rokito-password', [
'rounds' => 12,
]);Argon2 İş Faktörünün Ayarlanması Argon2 algoritmasını kullanıyorsanız, make yöntemi algoritmanın iş faktörünü bellek, zaman ve iş parçacığı seçeneklerini kullanarak yönetmenize olanak tanır; ancak
Laravel tarafından yönetilen varsayılan değerler çoğu uygulama için kabul edilebilirdir:
$hashed = Hash::make('rokito-password', [
'memory' => 1024,
'time' => 2,
'threads' => 2,
]);Bir Parolanın Bir Karma Değerle Eşleştiğini Doğrulama Hash cephesi tarafından sağlanan
check yöntemi, verilen düz metin dizesinin verilen bir karmaya karşılık geldiğini doğrulamanıza olanak tanır:
if (Hash::check('rokito-text', $hashedPassword)) {
// The passwords match...
}Bir Parolanın Tekrar Yazılması Gerekip Gerekmediğini Belirleme Hash cephesi tarafından sağlanan
needsRehash yöntemi, parola karıştırıldıktan sonra karma tarafından kullanılan iş faktörünün değişip değişmediğini belirlemenize olanak tanır. Bazı uygulamalar, uygulamanın kimlik doğrulama süreci sırasında bu kontrolü gerçekleştirmeyi seçer:
if (Hash::needsRehash($hashed)) {
$hashed = Hash::make('rokito-text');
}Karma Algoritma Doğrulaması
Karma algoritma manipülasyonunu önlemek için, Laravel'in
Hash::check yöntemi önce verilen karmanın uygulamanın seçili karma algoritması kullanılarak oluşturulduğunu doğrulayacaktır. Algoritmalar farklıysa, bir
RuntimeException istisnası atılacaktır. Bu, karma algoritmasının değişmesinin beklenmediği ve farklı algoritmaların kötü amaçlı bir saldırının göstergesi olabileceği çoğu uygulama için beklenen davranıştır. Ancak, uygulamanızda birden fazla karma algoritmasını desteklemeniz gerekiyorsa, örneğin bir algoritmadan diğerine geçiş yaparken,
HASH_VERIFY ortam değişkenini false olarak ayarlayarak karma algoritması doğrulamasını devre dışı bırakabilirsiniz:
HASH_VERIFY=false