![]() |
|
|||||||
| vBulletin Destek IRCdForum.Net üzerinde de profesyonel geliştirmelerle kullanılan yazılım olan vBulletin ile ilgili kaliteli paylaşımlara ulaşabilirsiniz. |
|
|
Konu Araçları |
|
|
||
Tarih: 3 Ağustos 2026 PazartesiDün @Dea Dia'nın forumunun mail sunucusuyla ilgili ayarları düzenler ve bir yandan da bunun üzerine @Dea Dia ile sohbet ederken aklına bir fikir geldi. Dedi ki; forumda admin yetkisi verip vBulletin seçenekler kısmına erişim açtığımız yöneticiler olabiliyor. Bunların e-posta ayarlarına erişmelerine gerek var mı? Hesap çalınabilir, bir şey olabilir vs. bunları kısıtlayabilir misin? Aynı zamanda siber güvenlik uzmanı olduğumdan bu fikri direkt ilgimi çekti ve anında kulak kesildim; böyle bir şeyi erteleyemezdim. Ben de bugün ilk boşluğumda kodları yazdım ve @Dea Dia'nın forumunda hayata geçirdim. Ancak baktım ki ne zamandır vBulletin 3.8 için diğer webmasterları da düşünen bir paylaşım forumlar üzerinden yapmamışım, yazdığım kodları açıklamalarıyla birlikte paylaşayım dedim. Fikir babası (anası mı demek lazım ki sjsjsjs) @Dea Dia'dan da izin alıp açıyorum bu konuyu. ^^ --- Ön Not: Kodlar vBulletin 3.8.11 için yazılmıştır. Kodları 3.8.4, 3.8.6, 3.8.7 gibi ortamlarda denemedim ancak muhtemelen çalışır. Daha yüksek vBulletin sürümleri için uygun değildir. vBulletin 3.8'de bir üyeye admin erişimi verdikten sonra adminpermissions kısmından vBulletin Ayarlarını Yönetebilir yetkisi verilen bütün yöneticiler, varsayılan olarak E-posta Ayarları grubunu da görüntüleyebiliyordu. Bugün geliştirdiğim ve aşağıda nasıl uygulanacağını anlattığım düzenleme sayesinde e-posta ayarları kullanıcı ID bazında sınırlandırılacak ve yalnızca userID bazlı muaf kullanıcılar, ayrıca bunlar adminseler ve vBulletin ayarlarına da erişmelerine izin verilmiş iseler, e-posta ayarları kısmını görüntüleyebilecek ve orada işlem yapabilecekler. Burada kısıtlamadan muaf tutulmamış diğer adminler ise;
Düzenlenecek dosya: Kod:
/admincp/options.php 1- Sunucu Taraflı Erişim Kontrolü (Back-End Development); Bul: PHP Code:
PHP Code:
Eğer söz konusu yöneticinin kullanıcı ID'si array(1, 3) içerisinde tanımlanmamış ise e-posta ayarlarıyla ilişkili kritik işlemler kontrol edilecek ve print_cp_no_permission() üzerinden dışarı atılacak. Buradaki kontrol, yalnızca; options.php?do=options&dogroup=email biçimindeki normal erişimle sınırlı değil. Aşağıdaki işlem türleri de kapsandı;
dooptions işleminde POST ile gönderilen ayar adlarını doğrudan güvenilir kabul etmedim. Gönderilen ayar anahtarları; veritabanındaki setting tablosuyla karşılaştırılarak doğrulanıyor. Gönderilen değerlerden herhangi biri, email grubuna aitse kayıt işlemi başlamadan önce kesilecek ve böylece form arayüzü kullanılmadan hazırlanmış özel bir POST isteğiyle SMTP ayarlarının değiştirilmesi engellenecek. Ayrıca ayar yedekleme ve geri yükleme ekranlarını da kısıtlamaya dahil ettim. Bunun nedeni; SMTP kullanıcı adı ve parolası gibi değerlerin vBulletin ayar yedeği içerisinde yer alabiliyor oluşudur. !is_array() kontrolleri ise normalde metin olması gereken parametrelerin dizi biçiminde gönderilmesiyle kontrol akışının manipüle edilmesini önlüyor. Kendi forumunuz için uygulayacak olduğunuzda erişime yetkili kullanıcıları nasıl değiştirirsiniz? PHP Code:
PHP Code:
2- E-posta Ayarlarının Seçenekler Listesinden Kaldırılması (Front-End Development); Dosyanın aşağıdaki başlıkla başlayan bölümüne gelin: PHP Code:
Bul: PHP Code:
PHP Code:
Yetkisiz bir admin için $setting['grouptitle'] == 'email' koşulu sağlandığında continue çalışır, böylece döngü doğrudan bir sonraki ayar kaydına geçer ve e-posta ayarları;
Filtreyi ayar verileri önbelleğe alınmadan önce uyguladığım için burada yalnızca bir HTML öğesini gizlemek söz konusu değildir. Zaten öyle bir yaklaşım tembelliğe kaçmak olurdu; ben işimi sağlama aldım. --- Çalışma Mantığı; Düzenleme iki ayrı güvenlik katmanından oluşuyor. Birinci katman sunucu taraflı yetki kontrolü, yani yukarıda da belirttiğim gibi işin Back-End kısmı. Yetkisiz admin, URL'i biliyor olsa ya da manuel bir HTTP isteği göndermeye çalışsa dahi; işlem gerçekleştiremez. İkinci katman ise arayüz filtresi, yani işin Front-End kısmı. Bunda ise yetkisiz adminlere e-posta ayarları AdminCP'de hiç gösterilmez. --- Kritik Güvenlik Notu: Bu düzenleme, e-posta ayarlarını options.php seviyesinde korumaya almak için kodlanmıştır. Burada userID bazlı kısıtlanan yöneticiler için aşağıdaki yetkiler bulunuyorsa veritabanındaki SMTP değerlerine farklı yollarla erişmeleri mümkün olabilir;
Bu nedenle yalnızca AdminCP'nin gerekli bölümlerini kullanacak yöneticilere eklenti çalıştırma, PHP kodu ekleme veya doğrudan SQL sorgusu yürütme yetkisi verilmemelidir. Çünkü normal bir forum admininin; developer ya da teknik admin değilse buralarla bir işi yoktur. Olmamalıdır. O nedenle yeniden önemle vurgulamak isterim ki; admin eklediğiniz üyelerin bodozlama paneldeki bütün yetki alanlarını açmayın, gerek yok. --- Umarım işinize yarar; uzun süredir -buna ben de dahil- vBulletin 3 için yeni bir şeyler kodlansa dahi halka açık şekilde paylaşıma sunulmuyordu. Bu yönde istekler gelirse, vaktim elverdikçe yazdığım kodlardan paylaşabilecek olduklarımı paylaşmaya devam edebilirim. @rgxadmn ~ Vibe coding değil, harbi coding! Rekabet tarzım değil, çok gerekirse fark atarım.. Benzer Konular:
__________________
![]() |
||
|
|
||
İçeriği görmek için buraya tıklayarak kaydolunuz.
Emeğine sağlık böyle daha güzel ve güvenlikli oldu.
__________________
![]() |
||
|
|
||
İçeriği görmek için buraya tıklayarak kaydolunuz.
@Regex böyle uzun yaz yaz da üstte ya da altta kısa özet diye bir iki cümlelik bir şey yaz ki herkes öğrensin sonuçta herkes ben ve @Dea Dia değil
__________________
NO RESPECT F**K PEACE. |
||
|
|
|||
İçeriği görmek için buraya tıklayarak kaydolunuz. Alıntı:
Buna üşenen de öğrenmesin, uygulamasın, ne yaptığını anlamadan yapacak adam yüzünden SQL'ler patlıyor zaten. Anlamadan uygulamak isteyenler direkt bul/değiştir/altına ekle/üstüne ekle adımlarını uygulayabilir bu arada.
__________________
![]() |
|||
|
|
|||
İçeriği görmek için buraya tıklayarak kaydolunuz. Alıntı:
Sen yaptığın için, şimdi başını ve sonunu tek okudum.
__________________
![]() |
|||
|
|
||
İçeriği görmek için buraya tıklayarak kaydolunuz. |
||
|
|
|||
İçeriği görmek için buraya tıklayarak kaydolunuz. Alıntı:
__________________
![]() |
|||
|
|
||
İçeriği görmek için buraya tıklayarak kaydolunuz.
Bunu deneme fikrim var da forumu patlatmak istemiyorum.
__________________
|
||
|
|
||
İçeriği görmek için buraya tıklayarak kaydolunuz.
options.php dosyasının yedeğini alıp deneyebilirsin bence. En olmadı orijinal dosyayı geri yüklersin. Zaten bu kodlarda SQL işlemi olmadığı için forum patlamaz. Ama kendine haksızlık etme, sen zaten HTML'le ve WordPress ile falan da uğraşmışlığı olan adamsın. Konuda da bul, altına/üstüne ekle formatında gayet açıklayıcı verdim kodları. Halledersin.
__________________
![]() |
||
|
|
|||
İçeriği görmek için buraya tıklayarak kaydolunuz. Alıntı:
__________________
|
|||
| Yer İmleri |
| Şu anda bu konuyu görüntüleyen etkin kullanıcılar: 1 (0 üye ve 1 konuk) | |
|
|