Bu hafta, kendi projelerim dışında iki repo ile destek sağladım: dograh-hq/dograh ve laramint/laravel-brain.
Bu durum gerçekten beni mutlu etti.
Patch’lerin büyük olmasından değil, aniden açık kaynak uzmanı olmaktan değil. Uzun yıllar dışarıdan izlediğim bir sınırı aştığım için iyi hissettirdi: Başka birinin projesini inceledim, gerçek bir problemi anladım, PR açtım, geri bildirim aldım, çalışmayı düzenledim ve bir katkının bir sürüme dahil olduğunu gördüm.
Açık kaynak ölçeğinde bu küçük bir adım. Ama benim için büyük bir kişisel adım oldu.
Şaşırtıcı olan: En faydalı işler, çoğunlukla gürültüyü azaltmakla ilgiliydi.
Dograh: açık sesli AI projesinin kurulumu güçlendiriliyor
Dograh: açık sesli AI projesinin kurulumu güçlendiriliyor
Dograh, açık kaynak kodlu, kendi kendine barındırılabilen bir sesli AI platformudur. Bu durum katkıda bulunmamı heyecan verici kıldı: benim ilgilendiğim AI araçlarına yakın ama benim projem değil ve konfor alanımın dışındaydı.
Birleştirilen değişiklik PR #458: kurulum sırasında bir Redis şifresi oluşturulması ve bu şifrenin Docker Compose’a entegre edilmesi.
Proje, OSS_JWT_SECRET ve POSTGRES_PASSWORD gibi gizli anahtarlar üreten kurulum script’lerine sahipti. Ancak Redis hala compose dosyalarında sabit bir geri dönüş değeri içeriyordu. Doğru değişiklik, ayrı bir dağıtım yolu eklemek ya da Docker’ı yeniden tasarlamak değildi. Bakıcı geri bildirimi daha basit bir yönde işaret etti: mevcut kurulum akışını genişletmek.
PR bu şekilde düzenlendi:
REDIS_PASSWORD‘ı uzak kurulum script’inde oluşturmak- Eğer eksikse, ilk yerel Docker başlangıcında oluşturmak
- Redis
--requirepass, sağlık kontrolleri veREDIS_URLiçine iletmek - Eski kurulumları
${REDIS_PASSWORD:-redissecret}ile korumak
Bu son kısım önemliydi. Yeni kurulumlar rastgele bir şifre alırken, mevcut kurulumlar bozulmadı. Değişiklik Dograh’ın 1.38.0 sürümüne dahil edildi ve bana ait ilk katkı olarak sürüm PR’ında listelendi.
O sürüm notunda kullanıcı adımı görmek harikaydı. Küçük bir güvenlik güçlendirme, gerçek bir proje, gerçek bir birleştirme.
Laravel Brain: bir PHP aracını daha güvenilir hale getirmek
Laravel Brain: bir PHP aracını daha güvenilir hale getirmek
Diğer repo Laravel Brain’di, bir PHP/Laravel aracı, bir Laravel uygulamasını tarar ve istek yaşam döngüsünü bir grafik olarak sunar.
Gerçek bir Laravel uygulamasında test ettim ve farklı bir problemle karşılaştım: güvenlik paneli çok fazla yanlış pozitif rapor ediyordu. Uygulamanın gerçek güvenlik sınırları vardı ama analiz aracı her zaman bunları göremiyordu.
PR #50 üç tür gürültüyü azalttı:
-
->all()çağrıları koleksiyonlar üzerinde doğrulanmamış HTTP istek girdisi gibi ele alınıyordu - imzalı yollar, özel HMAC middleware ve güvenilir webhook yolları, genel yazılar olarak ele alınıyordu
- Breeze/Fortify giriş sınırlaması, kontrolörler veya form istekleri içerisinde atlanmıştı çünkü her zaman
throttle:middleware olarak ifade edilmemişti
Önemli sınır “uyarıları gizle” değil, “analiz aracının iddiasını haklı çıkarabileceği yerlerde yalnızca uyar”dı.
PR, uygulamaya özel kimlik doğrulama middleware’i ve güvenilir yol kalıpları için yapılandırma kancaları ekledi, imzalı URL’leri kimlik doğrulama olarak tanıdı ve hem uyarılardan kaçınması gereken hem de hâlâ uyarı vermesi gereken durumlar için testler ekledi.
O PR birleşti.
Ardından PR #51 daha derinlemesine gitti. Özel Laravel kimlik doğrulama middleware takma adlarını daha doğru bir şekilde işliyor:
$middleware->alias([...])okuması, yalnızca$middleware->alias('key', Class::class)değil- Laravel’in
Authenticatesınıfını genişleten middleware sınıflarını tanıyor - Bilinmeyen middleware’leri kamuya açık bir mutasyona delil olarak ele almayı durduruyor
O PR hâlâ açık, ancak dersler zaten faydalı: statik analiz için, bilinmeyen kamuya açık anlamına gelmez. Bilinmeyen, aracın yaptığı iddialar konusunda dikkatli olması gerektiği anlamına gelir.
Öğrendiklerim
Öğrendiklerim
İlk faydalı açık kaynak katkım büyük bir özellik değildi. Daha küçük ve daha somut şeylerdi:
- ilk fikrimi savunmak yerine bakıcı geri bildirimini takip et
- özel bağlamı açığa çıkarmadan gerçek bir uygulamadan bir hatayı kanıtla
- gözden geçirilmesi için yamayı yeterince dar tut
- hem yanlış pozitifler hem gerçek pozitifler için regresyon testleri ekle
- yeni kurulumları geliştirirken eski kurulumları koru
- PR açıklamasını çalışmanın bir parçası olarak yaz, süs olarak değil
PR açıklaması neredeyse kod kadar önemli hale geldi. Tanımadıklarım için bakımcıların problemi, kök nedenleri, uyumluluğu ve yamayı nasıl test ettikleri hakkında kesin bilgiye ihtiyaç duyması gerekiyor. Bu açıklama zayıfsa, iyi kod bile gözden geçirilmesi maliyetli olur.
Diğer bir ders: Güvenlik analiz araçları alçakgönüllülük gerektirir. Gürültülü bir uyarı tarafsız değildir. Eğer bir kontrol paneli her şeyin yüksek risk taşıdığını söylüyorsa, insanlar o kontrol paneline güvenmeyi bırakır. Yanlış pozitifleri azaltmak, kozmetik bir çalışma değil; gerçek bulgular için dikkat korumayı sağlar.
Başka projelere katkıda bulunma konusunda daha çok şey öğrenmem gerekiyor. Ancak bu ilk tur beni mutlu etti ve bana yararlı bir kural verdi:
Projenin gitmek istediği yeri takip et. Tek bir gerçek yolu daha iyi hale getir. Arkanda testler bırak. Bakımcıların neden değişikliğin var olduğunu tahmin etmesine izin verme.
Kaynak: Orijinal Makale


