Açık kaynak dosya tarama ve içe aktarma kiti — sürükle-bıraklı, animasyonlu, güvenli.
Frontend: Vanilla JS • Backend: PHP 8.2 • Lisans: MIT
Amaç: Her projede tekrar yazılan “dosya yükle → tara → temizle → içe al” akışını tek, bağımsız ve güvenli bir paketle çözmek.
- Name:
AutoDrop-Import-Kit - Description: Drag & drop dosya yükleme + MIME doğrulama + (opsiyonel) antivirüs tarama + sanitize + karantina + güvenli import akışı.
- Topics:
upload,drag-and-drop,sanitize,security,php,clamav,mime,import,opensource,autodocx,autoterms,micro-saas - License: MIT
- Primary Language: PHP / JavaScript / HTML / CSS
- Author: Ali Zafer — Varhan Development
- 🖱️ Sürükle-bırak + tıklayarak seçim (çoklu dosya, iptal, progress)
- 🌀 Mikro animasyonlar (drag state, yükleme ilerlemesi, durum rozetleri)
- 🔍 MIME doğrulama (
finfo) + uzantı beyaz listesi - 🧱 Karantina klasörü + güvenli isimlendirme (tarih damgası)
- 🦠 Antivirüs hook (ClamAV entegrasyonu için hazır stub)
- 🧼 Sanitize iskeleti: HTML (script/style/event temizliği), PDF/DOCX stub
- 🔐 Güvenlik başlıkları ve upload klasöründe PHP kapatma örnekleri
- 📦 Basit mini router (PHP yerleşik sunucu ile dakikada ayağa kalkar)
- PHP
finfo(yerleşik) — MIME doğrulama → Lisans: PHP lisansı (uyumlu) - ClamAV (opsiyonel) — antivirüs → Lisans: GPL (dış bağımlılık, çağrı seviyesinde; MIT ile uyumlu kullanım)
- HTML Purifier (opsiyonel, entegrasyon önerisi) — ileri HTML temizliği → Lisans: LGPL (uyumlu)
- Ghostscript / qpdf (opsiyonel) — PDF düzleştirme → ayrı lisanslar (çağrı seviyesinde; MIT ile uyumlu kullanım)
Depoda zorunlu bir üçüncü parti Composer paketi yok. Tüm kod MIT altında yayınlanır. Opsiyonel araçlar sistemde kuruluysa CLI ile entegre edilebilir.
frontend/
index.html
assets/app.css
assets/app.js
backend/
public/index.php # mini router
src/Security/UploadGuard.php
src/Scan/MimeSniffer.php
src/Scan/Antivirus.php # ClamAV opsiyonel stub
src/Sanitize/HtmlSanitizer.php
src/Sanitize/PdfSanitizer.php
src/Sanitize/DocxSanitizer.php
storage/{tmp,quarantine,imports}
ops/
nginx.conf.example
apache.conf.example
# PHP yerleşik sunucu ile çalıştır
php -S localhost:8080 -t backend/public
# Tarayıcı: http://localhost:8080frontend/index.htmlsürükle-bırak alanını ve kuyruğu içerir.assets/app.jsdosyaları AJAX ile/uploadendpoint’ine gönderir.- İlerleme çubuğu, iptal butonu ve durum rozetleri hazırdır.
/uploadPOST: Dosyayı alır → UploadGuard ile boyut/uzantı doğrular → MimeSniffer ile gerçek MIME tespiti → Antivirus stub → Sanitize (türe göre) →imports/klasörüne güvenli isimle taşır.- JSON yanıt örneği:
{ "ok": true, "id": "dosya_20251017_121314.pdf", "mime": "application/pdf" }- Nginx (
ops/nginx.conf.example):location ~* ^/storage/ { deny all; } add_header X-Content-Type-Options nosniff; add_header X-Frame-Options DENY; add_header Referrer-Policy no-referrer; add_header Content-Security-Policy "default-src 'self'; object-src 'none'; base-uri 'none'; frame-ancestors 'none';"; client_max_body_size 10M;
- Apache (
ops/apache.conf.example):<Directory "/path/to/backend/storage"> php_admin_flag engine off AllowOverride None Require all denied </Directory>
- UploadGuard: boyut limiti, beyaz liste, güvenli isim, karantina.
- MIME Sniffing:
finfoile gerçek içerik doğrulaması. - Antivirüs: ClamAV entegrasyon noktası (pozitif → karantina).
- Sanitize: HTML’de script/style/event temizliği; PDF/DOCX için hook.
- Chunked upload (büyük dosyalar için parça-parça yükleme)
- ZIP içi denetim (zip-slip koruması ile)
- EXIF strip (gizlilik için görsellerde)
- Rate limit ve CSRF token doğrulaması
- Loglama:
time, ip, ua, mime, size, scan_ok, pathJSON kayıtları
- Frontend formunu kendi sayfana ekle,
/uploadisteklerini bu kitin backend’ine yönlendir. - Başarılı yanıtın
idalanını kendi import akışına geçir (ör. “şablon oluştur” aşaması).
src/Security/UploadGuard.php içinde yapılandırılabilir:
$guard = new UploadGuard([
'max_bytes' => 10*1024*1024,
'allowed' => ['pdf','docx','xlsx','csv','png','jpg','jpeg','txt','html','htm'],
'storage_tmp' => __DIR__ . '/../../storage/tmp',
'storage_quarantine' => __DIR__ . '/../../storage/quarantine',
'storage_imports' => __DIR__ . '/../../storage/imports',
]);- Chunked upload
- PDF raster sanitize (ghostscript/qpdf)
- Gelişmiş HTML temizliği (HTML Purifier opsiyonel)
- Çoklu adlandırma presetleri (
{{company}}_{{date}}_{{type}}) - i18n (TR/EN)
- Basit rol/limit sistemi (admin/uploader)
- Fork → yeni bir dal açın (
feat/…), küçük ve odaklı PR gönderin. - Kod stilini sade tutun; bağımlılık eklerken lisans uyumuna dikkat edin.
- Güvenlik değişikliklerinde lütfen test senaryosu ekleyin.
- İssue’larda kayıt (log) örnekleri ve MIME çıktıları paylaşın.
Güvenlikle ilgili kritik açıklar için lütfen önce özel iletişim kurun.
MIT License © 2025 — Varhan Development
Opsiyonel bağımlılıkların lisansları kendilerine aittir (ClamAV, qpdf, Ghostscript vb.). Bu kit onların üstünde çağrı seviyesinde çalışır ve MIT lisansı ile uyumludur.