Laravel Türkiye Discord Kanalı Forumda kod paylaşılırken dikkat edilmesi gerekenler!Birlikte proje geliştirmek ister misiniz?

beyondelayer Çok şaşırdım hiç denk gelmemiştim çok güzel bir bilgi, tek kötü yanı sanırım key generate ettiğimizde tüm datayı kaybetmemiz olabilir. Teşekkürler

aghabalaguluzade 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.

git clone kullanma durumu yoksa çalışan bir uygulamada key generate tekrar çalıştırma ihtiyacı neden istiyeyimki yada yedek alma gibi bişiymi ki bu 5 ay sonra dur key generate çalıştırayım felan ?

    yalcin
    https://laravel.gen.tr/d/9255-laravel-app-key-nedir-laravel-application-key

    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.

    https://laracasts.com/discuss/channels/laravel/purpose-of-key-generation

    S: Do I have to generate a new key?
    C: Nope, but it is a good practice to change them on every few months.

    https://tighten.com/insights/app-key-and-you

    Çoklu Sunucular
    Aynı uygulamayı birden fazla sunucudan sunuyorsanız anahtarı her sunucuda güncellemeniz gerekir.

    Anahtarınızı döndürme
    İ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.

    Neyse ki APP_KEY sadece birkaç şeyi aklınızda tutmanız gerekiyor.

    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.

    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.

    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');
        }

      yanlız ben yanlış analamdıysam
      protected $castsile modelde pasaport_number alanını Encrypt ediyor/tanımlıyor
      çözmek için birşey yapmıyor sanıyorum protected $castssayesinde 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.

        yalcin çözmek için birşey yapmıyor sanıyorum protected $castssayesinde otomatik olarak çözebiliyor

        evet bunu söylemek istedim zaten otomatik yapıyo gidip controllerda bi yerde çözmek için bir fonksiyon felan yazmıyoruz demek istedim .

        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...

          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ı 😕