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

aghabalaguluzade Ç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 Siz bir şirkette yönetici ya da farklı bir pozisyondasınız ve teknik konularda bilginiz az ama erişim yetkiniz yüksek. Size bir mail geliyor ve maildeki linki tıklıyorsunuz, onaylamak için sisteme giriş yapın diyor ve sizin sistem çıkıyor. Oradan bilgileri dolduruyorsunuz ama karşınıza boş bir ekran geliyor. Ne olduğunu anlamıyorsunuz. Halbuki sizi oyuna getirenler o sırada sizin kullanıcı bilgilerinizi almış oluyor, adamların hazırladığı sahte giriş ekranını doldurdunuz çünkü. Dedim ya anlamıyorsunuz diye, aynı şifreyi şirkette diğer yerlerde de kullanıyorsunuz. Neden? Yazması kolay değil mi? İşte bu adamlar sisteminize bu şekilde sızıyor. Burada sürekli yazıyorum mesela root kullanıcısı ile işlem yapmayın, normal kullanıcı oluşturup onla işle yapın diye. Öyle şifre kırma, arka kapıdan sızdım vs... onlar film ve dizilerde kaldı. Sistemler genelde bu tür insan hataları yüzünden hacklenir, çok azı güvenlik açıkları yüzünden hacklenir.

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

      Bir uygulama kullanıldıktan sonra şifreleme anahtarının yeniden oluşturulması gerekiyorsa, daha önce eski anahtar kullanılarak şifrelenmiş verilerin yeni şifreleme anahtarı kullanılarak şifresinin çözülemeyeceğini unutmamak önemlidir. Şifreleme anahtarının yeniden oluşturulması önerilmemekle birlikte, bunu yapmanın kesinlikle kritik olmasa da faydalı olduğu bazı senaryolar vardır.

      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 yapılabilir bence.

      As the final length of the encrypted text is not predictable and is longer than its plain text counterpart, make sure the associated database column is of TEXT type or larger. In addition, since the values are encrypted in the database, you will not be able to query or search encrypted attribute values

      Şifrelenmiş metnin nihai uzunluğu tahmin edilemediğinden ve düz metin karşılığından daha uzun olduğundan, ilişkili veritabanı sütununun TEXT türünde veya daha büyük olduğundan emin olun. Ayrıca, değerler veritabanında şifrelendiğinden, şifrelenmiş öznitelik değerlerini sorgulayamaz veya arayamazsınız.

      bu yukardaki paragraf sadece Encrypted Casting içinmi geçerli ? yoksa aşagıdaki dökümantasyondaki kod içinde geçerlimi ?

      https://laravel.com/docs/10.x/encryption#using-the-encrypter

      <?php
       
      namespace App\Http\Controllers;
       
      use Illuminate\Http\RedirectResponse;
      use Illuminate\Http\Request;
      use Illuminate\Support\Facades\Crypt;
       
      class DigitalOceanTokenController extends Controller
      {
          /**
           * Store a DigitalOcean API token for the user.
           */
          public function store(Request $request): RedirectResponse
          {
              $request->user()->fill([
                  'token' => Crypt::encryptString($request->token),
              ])->save();
       
              return redirect('/secrets');
          }
      }

        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