• 13-10-2024, 19:19:51
    #1
    Merhaba, uzak sunucu olarak kullandığım bir domainim var (örn: x1.com/eklenti/) buraya sadece benim kendime ait olan wordpress eklentilemin data.json ve .zip dosyalarını aldığı yer olarak görebilirsiniz. Bu uzak sunucuya ekletilerimin kullanılan domainlere izin veriyorum mesela data.json'da x2.com x3.com x4.com gibi domainler ekli ve onlar benim eklentim üzerinde tasarruf sahibi ve kullanım hakkına sahipler.

    Sorunum şu ki uzak suncuda ki /eklenti/ klasörüne erişimi tamamen kapatarak sadece wordpress eklentimin kurulu olduğu x2, x3, x4 .com domainlerine erişim izni vermek istiyorum ancak bunu IP olarak değil sadece domain ile yapmak istiyorum.

    Ne yaptıysam bir türlü çözüm bulamadım yapay zeka ile denedim bana index.php, access.php, .htaccess kodları verdi lakin sonuç sıfır 2 gündür bununla uğraşıyorum hosting firmasına da sordum onlarda bunu çözemediler.
  • 13-10-2024, 19:25:52
    #2
    htaccess de gelen requestleri index.php?file={X} karşılayacak şekilde planlarsınız. index.php'de de gelen referrer isteğinden domain kontrolü yapıp file ı açtırabilirsiniz.

    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?request=$1 [L,QSA]
    <?php
    // Referrer kontrolü
    $referrer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '';
    $allowed_referrer = 'deneme.com';
    
    // İsteği al
    $request = isset($_GET['request']) ? $_GET['request'] : '';
    
    if (strpos($referrer, $allowed_referrer) !== false) {
        // Eğer referrer deneme.com ise dosyayı aç
        $file_path = __DIR__ . '/' . $request;
    
        if (file_exists($file_path)) {
            // Dosyanın uzantısını al
            $file_extension = strtolower(pathinfo($file_path, PATHINFO_EXTENSION));
    
            // Content-Type başlıkları, dosya uzantısına göre ayarlanıyor
            switch ($file_extension) {
                case 'jpg':
                case 'jpeg':
                    header('Content-Type: image/jpeg');
                    break;
                case 'png':
                    header('Content-Type: image/png');
                    break;
                case 'gif':
                    header('Content-Type: image/gif');
                    break;
                case 'pdf':
                    header('Content-Type: application/pdf');
                    break;
                case 'txt':
                    header('Content-Type: text/plain');
                    break;
                case 'html':
                    header('Content-Type: text/html');
                    break;
                default:
                    header('Content-Type: application/octet-stream'); // Bilinmeyen dosyalar için varsayılan
                    header('Content-Disposition: attachment; filename="' . basename($file_path) . '"');
                    break;
            }
    
            // Dosyanın boyutunu ve indirme hızını ayarlamak için içerik boyutu
            header('Content-Length: ' . filesize($file_path));
    
            // Dosya içeriğini okutup tarayıcıya gönderiyoruz
            readfile($file_path);
            exit;
        } else {
            // Dosya yoksa hata mesajı göster
            echo "İstenen dosya bulunamadı.";
        }
    } else {
        // Referrer kontrolü başarısız
        echo "Yetkisiz istek. Sadece deneme.com üzerinden erişim izni var.";
    }
    ?>
  • 13-10-2024, 19:29:57
    #3
    Böyle yapmaktansa Options -indexes eklemen daha makul. böylelikle tüm erişimi kapatmış olursun. Mesela ftp de case/js/lisans.json ve diğer tüm js ler var hiç birine erişim sağlanmamış olur.
    Tabi yapmak istediğiniz erişimi kapatmaksa.