Makale

CPalius CMF 2.2.68: Daha Hızlı, daha güvenli

CPalius 2.2.68 yayında. Bu sürümde üç şeye odaklandık: ana sayfayı baştan yazdık, sayfa önbelleğindeki gizli bir hatayı bulup düzelttik ve hız ile güvenliği, sayılara bakarak ve rakip sistemlerin kaynak kodunu okuyarak ele aldık.

· ZemoCA · 3 dk okuma
CPalius CMF 2.2.68: Daha Hızlı, daha güvenli

CPalius 2.2.68 yayında. Bu sürümde üç şeye odaklandık: ana sayfayı baştan yazdık, sayfa önbelleğindeki gizli bir hatayı bulup düzelttik ve hız ile güvenliği, sayılara bakarak ve rakip sistemlerin kaynak kodunu okuyarak ele aldık.

Ana sayfa artık senin

Portal bloklarının her metni, bağlantısı ve öğesi düzenlenebilir. Eskiden kahraman bölümündeki bir bağlantı koda gömülüydü; artık yok. Editörde önizleme masaüstü ve mobil olarak ayrı gösteriliyor ve "ana sayfada ne gösterilsin?" bölümünde her seçeneğin ekran görüntüsü var, yani karar verirken tahmin etmiyorsun.

İstersen kendi tek sayfalık HTML/CSS/JS'ini yazabilirsin. Yazdığın betik siteden, çerezlerden ve ağdan yalıtılmış bir korumalı alanda çalışıyor. Yönetici bile olsan bu sınır aşılamıyor.

Yeni bir site erişim modu da var:

•Açık: her zamanki site.•Yalnız giriş: CPalius'u bir ERP/CRM gibi, giriş yapanlara açık kullanabilirsin.•Yalnız panel: genel web sitesi yok, sadece yönetim.

Site açık değilse robots.txt arama motorlarını da dışarıda bırakıyor. Görünüm menüsü de toparlandı: Ana sayfa, Temalar, Mağaza, Genel görünüm, Fontlar, Tema editörü ve Studio görünümü tek sıralı şeritte.

Önbellek çalışıyor göründü ama çalışmıyordu

Panelde "önbellek temizlendi (0 dosya)" yazıyordu ve kaynağı görüntüle dediğimizde HTML küçültülmemişti. Sebep tahminimizden basitti: forum, misafirlere bir "son ziyaret" çerezi gönderiyordu ve bir CSRF belirteci oturum başlatıyordu. Çerez gönderen sayfa önbelleğe alınmaz. Sonuç olarak neredeyse hiçbir forum sayfası önbelleğe girmiyordu.

Misafirlere artık çerez gitmiyor. Sayfalar saklanıyor, küçültülüyor, sıkıştırılıyor (40,7 KB'lık bir blog sayfası 8,5 KB gidiyor) ve doğrudan web sunucusundan veriliyor. Bir sayfa temizlendiğinde tek bir istek yeniden üretirken diğerleri eski kopyayı görüyor, yani temizleme anında trafik veritabanına yığılmıyor. Hangi sayfanın hangi içeriğe bağlı olduğunu tutan dizini de yeniden yazdık: sayfa başına 515 ms yerine yaklaşık 3 ms.

Ölçerek hızlandırdık

"20 bin eşzamanlı ziyaretçi ve 100 bin kullanıcıda ne olur?" sorusunu tahminle değil ölçümle yanıtlamak için 100 bin kullanıcı, 20 bin konu, 200 bin mesaj ve 100 bin rezervasyonlu bir test veritabanı kurduk (cp:perf:seed, adında "perf" geçmeyen veritabanını reddeder). Sonuçlar:

NeÖnceSonra
Forum ana sayfa209 ms60 ms
Konu listeleri37 ms0,13 ms
Bir bölümün konu listesi29 ms0,05 ms
Salon çakışma kontrolü44 ms0,03 ms

Çoğu kazanç doğru indeks ve gereksiz sorguyu kaldırmaktan geldi. Ölçümü sürdürülebilir kılmak için araçlar da ekledik: cp:perf:probe sayfa başına süre ve sorgu sayısını gösteriyor, panelde "Sayfa maliyetleri" ekranı canlı trafikten ölçüm topluyor, cp:doctor sunucu ayarlarını (OPcache, sıkıştırma, MySQL tamponu) denetliyor.

Rezervasyonlarda bir güvenlik düzeltmesi de var: kilit alınamazsa işlem artık kilitsiz çalışmıyor, reddediliyor. Eskiden bu durumda çift rezervasyon mümkündü.

Rakiplerin kaynak koduna baktık

Drupal, TYPO3, MODX, ProcessWire ve Sulu'nun güvenlik katmanlarını okuduk ve bizde olmayanları ekledik:

•Anahtar döndürme. Gizli veriler artık anahtar kimliğiyle saklanıyor. APP_SECRET'i değiştirmek gerekirse eski değeri APP_SECRET_PREVIOUS'a koyup cp:secrets:rotate çalıştırıyorsun; hiçbir an veri okunamaz hale gelmiyor.•Kimlik yeniden doğrulama. Güncelleme uygulama, yedek, modül/tema kurma, kullanıcı silme, API anahtarı ve webhook işlemleri, son doğrulamadan 10 dakika geçtiyse parolayı (ve varsa ikinci faktörü) yeniden istiyor. Çalınan bir oturum çerezi bu işlemlere yetmiyor.•Eklenti güvenlik duyuruları. İmzalı eklenti dizini artık bilinen açıkları taşıyabiliyor; etkilenen sürümler Mağaza'da ve cp:doctor'da uyarı gösteriyor.•Kısıtlı yetki işaretleri. Siteyi ele geçirebilecek yetkiler rol ekranlarında işaretli; yönetici olmayan bir rol bunlardan birini taşırsa cp:doctor söylüyor.•CSP önerileri. Tarayıcıların gönderdiği ihlal raporları cp:security:csp-suggest ile temkinli önerilere dönüşüyor; hiçbir şeyi kendiliğinden gevşetmiyor.

Güncellemeden önce

Sürüm iki küçük veritabanı göçü içeriyor (indeksler). Panelden güncellerken otomatik uygulanıyor. Güvenlik tarafında bir şeyi bilmen gerekiyor: yönetici oturumların ilk hassas işlemde parolayı yeniden isteyecek. Süreyi security.reauth_minutes ile ayarlayabilir ya da 0 yapıp kapatabilirsin.

Geri bildirimini bekliyoruz. Bir sonraki turda üye sayfalarının çizim süresine ve aramanın tam metin dizinine bakacağız.

Yorumlar (0)

Henüz yorum yok. İlk yorumu sen yaz.

Yorum yaz

Yorumunuz yayınlanmadan önce incelenecektir.

İlgili Yazılar