o zaman bu Encrypt şeysini çokda şeyetmemek lazım.
Laravel'de Casts Kullanarak Model Verilerini Şifreleme ve Deşifreleme
yalcin tercih etmemek mi
Bu senaryolar ortaya çıktığında, eski verilerin şifresi çözülerek ve yeni şifreleme anahtarı kullanılarak şifreleme yeniden uygulanarak sorunların üstesinden gelinebilir.
böyle bir şey diyorlar ama nasıl yapılır fikrim yok.
- Düzenlendi
yalcin Ben projeyi genelde localde yürütüyorum şuan hep yapım aşamasındayımda localden sunucuya aldığımda yeni key oluşturuyorum. Taşıdıktan sonra yapılabilir belkide.
- Düzenlendi
evet dökümantasyonda okudum bunu yada buna benzer birşeyi .
Şimdi 5 bin kullanıcınız var ve bu 5 bin kullanıcınında şirket bilgilerini unvan , adres , vergi numarası vs gibi bilgileri ayrı bir tabloda tuttuğumuzu farzedelim.
Kullanıcıya bilgileriniz bizimle güvende diyebilmek adına bu bilgileri şifreliycez tabi aynı zamanda bir fatura kesmemiz gerekiyosa veri tabanından çekip bu bilgileride kullanmamız gerekiyor.
Birinci handikap arama : tabloda arama yapamıyoruz , yani kullanıcının şirket bilgilerinden neyi
$encrypted = Crypt::encryptString('10hanelivergino');
şeklinde
şifreleyip veritabanına kaydediyorsak o kolonda arama yapamıyomuşuz
İkinci handikap: 5 bin kullanıcınında şirket bilgilerini şifreledik ve aylar sonra unutup php artisan key:generate oluşturduk ozaman yen ibir hata kodu sayfasu yapmak lazım abort:1404 cenaze dolayısıyla kapalıyız
ben şöyle düşünüyorum .bu encryption ile her aklına geleni şifreleyemezsin dökümantasyondaki örnek bile token den verilmiş sanırım bu tarz şeyleri şifrelemek için kullanmak lazım
public function store(Request $request): RedirectResponse
{
$request->user()->fill([
'token' => Crypt::encryptString($request->token),
])->save();
return redirect('/secrets');
}
- Düzenlendi
yalcin
https://laraveldaily.com/post/laravel-encrypt-models-data-with-casts
https://laravel-news.com/eloquent-encrypted-casting
https://www.honeybadger.io/blog/an-introduction-to-hashing-and-encryption-in-laravel
https://simonkollross.de/posts/encrypting-laravel-eloquent-attributes-using-a-custom-cast
https://stephenreescarter.net/custom-key-for-encrypted-cast-model-attributes-in-laravel
Video:
How to Encrypt Database Fields in Laravel? - https://www.youtube.com/watch?v=a6V5Cxk03rk
- Düzenlendi
fabyo0 Güncel Cevap: Hayır yapılmaz yapılsa login işlemi çalışmaz. (Eski cevabı değiştirdim karışıklık olmasın diye)
Kaynak - https://www.youtube.com/watch?v=a6V5Cxk03rk
03:43
How to Encrypt Database Fields in Laravel? - https://www.youtube.com/watch?v=a6V5Cxk03rk
Ben bu adama herzaman güvenmişimdir ve on numarada tespit yapmışım videonun 4:30 'uncu dakikasından sonra neyi şifreliyeceğiniz hakkında bilgiyi veriyor
yalcin evet bende kaynak olarak onun videosunu atmıştım
yanlız ben yanlış analamdıysam
protected $casts
ile modelde pasaport_number alanını Encrypt ediyor/tanımlıyor
çözmek için birşey yapmıyor sanıyorum protected $casts
sayesinde otomatik olarak çözebiliyor çünkü dökümantastonda
Encrypting a Value için
'token' => Crypt::encryptString($request->token),
Decrypting a Value içinse
$decrypted = Crypt::decryptString($encryptedValue);
şeklinde örnekkodverilmiş demekkicast bunu direk kendisi çözüyo yadavideoda adam göstermeye gerek görmemiş de olabilirneyse bence süper bir özellik
yalcin database yazıldığı yazan şifrelenmiş yazılıyor orada şifrelenmiş saklanıyor. Fakat siz
$employee = Employee::create([
'name' => 'Paul Atreides',
'email' => 'paul@arrakis.com', // Data is encrypted before storing
'phone' => '123-456-7890', // Encrypted before storing
'address' => 'The Keep 12', // Encrypted before storing
]);
echo $employee->email; // Automatically decrypted
echo $employee->phone; // Automatically decrypted
echo $employee->address; // Automatically decrypted
çağırdığınızda
> echo $employee->email;
paul@arrakis.com
> echo $employee->phone;
123-456-7890
> echo $employee->address;
The Keep 12
deşifrelenmiş geliyor.
Kaynak - https://laracoding.com/how-to-encrypt-and-decrypt-model-data-using-casts-in-laravel/
aslında videoda dikkatli bakarsanız 02:18 de gösteriliryor gösteriliyor adam 501 yazıyor pasporta. Sonra database de şifreleniyor. Fakat çağırdığında normal deşifrelenmiş hali geliyor.
- Düzenlendi
Arkadaşlar password gibi bir daha orijinaline ihtiyacınız olmayacak alanları tek taraflı şifreleyip veri tabanında saklayın. Ben bunu alıp ekranda göstereceğim, listeleyeceğim dediğiniz kayıtları şifrelemeyin Ben bunu veri tabanında şifreli saklarım ihtiyacım olduğunda decrypt yapar gösteririm gibi bir şey yapmayın. Biri sizin veri tabanınıza girdiğinde ilk yapacağı şey tüm veriyi bir anahtara göre şifrelemek olur ve anahtar için sizden fidye talep eder, siz istediğiniz kadar şifreleyin, veri gittikten sonra ne anlamı var
Şifrelenmiş alanlarda sorgu da yapamayacaksınız, bu da ayrı bir konu...
mgsmus hocam peki backup alma felan işe yaramaz mı.
aghabalaguluzade Backup işine ne kadar yatırım yaptığınıza bağlı. Ayrıca sürekli veri işlenen bir sistemde backup olsa da veri kaybı yaşanabilir, bu veri kaybının maliyeti istenen fidyenin 10 katı olabilir. Yedek var ama o yedeğe dönmemiz yarım saat sürer denirse, uygulamanız o yarım saatlik kesintiye uygun geliştirildi mi? Bu konular ayrı uzmanlık gerektiren şeyler. Siz işlerinizde fantezi yapmayın, genel kabul edileni yapın yeterli, uzaya roket göndermiyoruz sonuçta
mgsmus olur hocam
Ama araştırdıkca o kadar şeyler çıkıyor ki diyorum ki artık acaba bu aşırı mühendislik mi yoksa yapılmalı olan mı