PHP Açık-kaynak dosya paylaşım platformu

Katılım
8 Nisan 2020
Mesajlar
7.701
Makaleler
7
Çözümler
93
Merhaba sevgili Technopat üyeleri. Bir süre önce açık-kaynak geliştirme yapmak için proje aramaya başladım ve Türkiye'de Türkçe diliyle dosya paylaşım platformuyla ilgili hiçbir açık-kaynak projenin olmadığını gördüm. Bende bunu açık-kaynak olarak tamamiyle Türkçe bir şekilde geliştirip size sunmak istedim, en azından bunu yapmaya çalıştım. Karşınızda, open-file.

Proje açıklamasını yazarken yapay zekadan yardım aldım, oraya çok takılmayın :)

Projeyi normalde önümüzdeki 2-3 hafta sonra, daha fazla detayla beraber neredeyse kusursuz olarak sunacaktım fakat öğrenciyim ve maddi durumum artık projeyi geliştirmeye el vermiyor. Yani çalıştığım için projeye daha fazla vakit ayıramıyorum artık. Bu sebepten dolayı projeyi geliştirebildiğim kadar geliştirdim ve şu an olduğu gibi direkt yayınlıyorum. Tabii ufak tefek problemleri olabilir, illa çıkacaktır da zaten bir şeyler. Sıkıntıları belirtirseniz boş kaldıkça problemleri çözeceğim. Aynı zamanda özellik önerilerinizi bekliyorum, yeni özellik eklemeye çalışacağım.

Projenin GitHub linki:

Özellikler:
Gelişmiş dosya yükleme,
Üst düzey güvenlik,
Klasörleme sistemi,
Gelişmiş loglama sistemi vs.

Bu kadar detaylı yazdığım ilk script olabilir. Hatalarımı mazur görün :D SQL dosyası GitHub reposu içinde mevcut. Herkese iyi çalışmalar. Desteklerinizi bekliyorum.
 
Son düzenleyen: Moderatör:
Siteye .php reverse shell yüklememi engelleyecek "üst düzey güvenlik" tam olarak bu mudur? 🤯🧠

1752371999977.png


Kullananlara geçmiş olsun diyorum.
 
Siteye .php reverse shell yüklememi engelleyecek "üst düzey güvenlik" tam olarak bu mudur? 🤯🧠

Eki Görüntüle 2533616

Kullananlara geçmiş olsun diyorum.
Güzel yakalamışsınız, @Webcam kullanan insan hocam dikkat etmelisiniz bu noktaya.

Bu tür bir kontrol güvenlik için gerçekten yetersiz. Hash kontrolünüz doğru fakat dosya içinde 'eval(, system(, exec(' vs. aramak size büyük bir güvenlik önlemi sağlamaz. Zira günümüzde shell scriptlerin hepsi obfuscated oluyor. Yani kod yalın şekilde yazmıyor.

Örneğin sizin kodunuz;
PHP:
<?php
system/**/("...");
gibi kötü amaçlı kodları tanımayacaktır.

Mesela daha kapsamlı bir koruma için regex ile commentleri yok edin, boşlukları yok edin, encoding'i standardize edin. Ama tabii bunlar da yetmeyecektir.

Sizin açınızdan en güvenlisi ClamAV PHP gibi kütüphaneler üzerinden ClamAV kullanarak dosyayı taratmak olabilir. Bu şekilde sistem güvenliğini artırabilirsiniz.

Şöyle size incelemeniz için bir kaynak da bırakayım.
 
Siteye .php reverse shell yüklememi engelleyecek "üst düzey güvenlik" tam olarak bu mudur? 🤯🧠

Eki Görüntüle 2533616

Kullananlara geçmiş olsun diyorum.
Kullananlara geçmiş olsun deme sebebiniz ne? Konuyu okuduysanız eğer zaten tam anlamıyla bitiremediğimi söyledim. Açık kaynak yayınlamamın da sebebi zaten olur da ben görmem, görenler söyler şeklinde. Böyle aşağılayıcı bir ithamda bulunmak yerine buyrun düzeltin gerekli şekilde, yükleyeyim düzelttiğiniz doğru şekli :)

Güzel yakalamışsınız, @Webcam kullanan insan hocam dikkat etmelisiniz bu noktaya.

Bu tür bir kontrol güvenlik için gerçekten yetersiz. Hash kontrolünüz doğru fakat dosya içinde 'eval(, system(, exec(' vs. aramak size büyük bir güvenlik önlemi sağlamaz. Zira günümüzde shell scriptlerin hepsi obfuscated oluyor. Yani kod yalın şekilde yazmıyor.

Örneğin sizin kodunuz;
PHP:
<?php
system/**/("...");
gibi kötü amaçlı kodları tanımayacaktır.

Mesela daha kapsamlı bir koruma için regex ile commentleri yok edin, boşlukları yok edin, encoding'i standardize edin. Ama tabii bunlar da yetmeyecektir.

Sizin açınızdan en güvenlisi ClamAV PHP gibi kütüphaneler üzerinden ClamAV kullanarak dosyayı taratmak olabilir. Bu şekilde sistem güvenliğini artırabilirsiniz.

Şöyle size incelemeniz için bir kaynak da bırakayım.
Merhabalar hocam, iyi niyetli yaklaşımınız için teşekkürler. Zaten bir sonraki amacım direkt ClamAV kurarak dosya taratmaktı fakat vakit bulamadım gerçekten yapmaya. Müsait olduğum ilk zamanda yapıp güncelleyeceğim. Bilgilendirmeniz için teşekkürler.

14/07/2025 tarihli güncelleme notları:
Kayıt olurken gelen hata giderildi.
Güvenlik fonksiyonlarında değişiklikler ve gelişmeler yapıldı.
.htaccess dosyasına sisteme yüklenen PHP dosyalarının açılmaması komutu eklendi.
Bazı dosyalarda ufak tefek değişiklikler yapıldı.
 
Eline sağlık. Kodlarını incelemedim. Ama genel github kullanımıyla alakalı öneri vermek istedim;
  • PR kullan. Commit ve PR isimlerini daha efektif kullan. Conventional Commits
  • Yapacağın işleri Issue kısmına ekle. Kendini assign et. PR yaparken bu issue ref atarsın.
  • Release kısmını kullan. Son mesajında güncelleme notları atmışsın. Bunu github release kısmına da koysan iyi olur.
  • Versiyonlama yap.
  • Commitleri Türkçe yerine İngilizce kullanmaya çalış. Türkçeyi alışkanlık edinirsin.
  • Demo sayfası koy.
  • README dosyası oluştur. Türkçe olabilir sorun değil.
  • Readme de kurulum kısmını kesinlikle atlama, kodları dahi incelemeden kolayca yayınlanabilir olsun.
  • Docker desteği eklenebilir.
  • env dosyası oluşturulabilir. Database bilgileri, max dosya boyutu, expire süresi, pathler vs hepsi burada yer alabilir.
  • Database sql kısmını göremedim. PHP de oluyor mu bilmiyorum ama; migration ve seed oluşturabilirsin. Başka biri localde tek komutla db schemayı ayağa kaldırmış olur.
 
Bu çöpü kullananların hint ve Pakistan'lı Scanner'lar tarafından bile otomatik olarak hacklenmiş olabileceği ve şimdi sizin yüzünüzden Server'ı antivirüs ile taratmak ile uğraşacak olmaları.

Oldu paşam biz yazalım siz credit alın.
İlk olarak açık-kaynak kodlu bir proje. İlla ki sıkıntıları olacak, eksikleri olacak. Oraya da kocaman bunu belirttim, sıkıntıları problemleri olabilir diye. Açık-kaynak proje değil mi zaten bu? Siz de yardım edeceksiniz, öyle gelişecek bu proje. Ben bir gelir sağlamıyorum, sağlamak için de paylaşmadım bu projeyi. Çöp demek yerine buyrun daha iyi bir şey geliştirin, sizin projeniz kullanılsın. Elimden geldiği kadar boş kaldığım vakitte yapabildiğimi yaptım. Bu kadar üst düzey bilgi düzeyiniz varsa lafta kalmayın, icraat görelim. GitHub kullanmayı biliyor olmanız gerek. Siz yazıp bana atmak yerine, direkt projede benden yetki isteyin, ben size vereyim, kendiniz commit açın ordan yükleyelim. Sizde Contributors olarak gözükün. Gereksiz laga luga yapıp konunun gidişatını değiştirmeyin, ya mantıklı şeyler konuşun ve linçleyip b** atmak yerine gerçekten mantıksal eleştiriler yapın, yada bir daha yazmayın.

Eline sağlık. Kodlarını incelemedim. Ama genel github kullanımıyla alakalı öneri vermek istedim;
  • PR kullan. Commit ve PR isimlerini daha efektif kullan. Conventional Commits
  • Yapacağın işleri Issue kısmına ekle. Kendini assign et. PR yaparken bu issue ref atarsın.
  • Release kısmını kullan. Son mesajında güncelleme notları atmışsın. Bunu github release kısmına da koysan iyi olur.
  • Versiyonlama yap.
  • Commitleri Türkçe yerine İngilizce kullanmaya çalış. Türkçeyi alışkanlık edinirsin.
  • Demo sayfası koy.
  • README dosyası oluştur. Türkçe olabilir sorun değil.
  • Readme de kurulum kısmını kesinlikle atlama, kodları dahi incelemeden kolayca yayınlanabilir olsun.
  • Docker desteği eklenebilir.
  • env dosyası oluşturulabilir. Database bilgileri, max dosya boyutu, expire süresi, pathler vs hepsi burada yer alabilir.
  • Database sql kısmını göremedim. PHP de oluyor mu bilmiyorum ama; migration ve seed oluşturabilirsin. Başka biri localde tek komutla db schemayı ayağa kaldırmış olur.
Merhabalar. GitHub kullanma konusunda pek yetenekli değilim, yazdıklarınızı elimden geldiği kadar yapmaya çalışacağım. Çok teşekkürler :)

20.07.2025 tarihli güncelleme notları:

  • NotificationManager'da showSuccess popup kapanma süresi arttırıldı.
  • my-files dosyasındaki fonksiyonlar functions.php dosyasına taşındı.
  • my-files dosyasında "Ana klasör" butonuna tıklandığında hiçbir dosyanın gözükmemesi sorunu çözüldü.
  • my-files dosyasında "Ana klasör" butonuna tıklandığında klasör oluşturulmama hatası çözüldü.
  • my-files.js dosyasındaki her şeyin konsola loglanması kaldırıldı. (Geliştirme aşamasında, geliştirme için loglanıyordu. Güncel kullanımda gerek yok.)
  • Klasör oluşturduktan sonra popup gözükmeden sayfanın direkt yenilenmesi düzeltildi.
  • Kaldırılan SQL dosyası tekrar yüklendi.

Projeye şu URL'den erişebilirsiniz:

24/07/2025 tarihli güncelleme:

  • Yükleme sayfasında dosyalar artık ikonlarıyla gözüküyor, her dosya için aynı ikon değil.
  • PDF dosyaları için görüntüleme sistemi üzerinde değişiklikler yapıldı.
  • share.php dosyasında JS bölümündeki kodlar aynı bir dosyaya taşındı (share.js)
  • Bazı dosyalardaki fonksiyonlar functions.php dosyasına taşındı.
  • Favicon dosyaları yüklendi, css-files.php dosyasına kod olarak eklendi.
  • Dosyaları çoklu silme hatası düzeltildi.
  • Dosyalar önizleyememe sorunu çözüldü.
  • Kullanıcılara gösterilen hatalar sadeleştirildi, bazı hatalar artık kullanıcıya gösterilmeden daha detaylı olarak loga kayıt ediliyor.
  • Hata mesajları detaylandırıldı, yazılar detaylandırıldı.

Projeyi görüntülemek için demo adresine gidebilirsiniz:

Projeye ait GitHub linki:
 

Technopat Haberler

Yeni konular

Geri
Yukarı