Duyuruyu Kapat
Facebook Gözat
Twitter Gözat

PHP üzerine bi kaç sık sorula soru ve bi kaç cevap - II

Konu, 'PHP' kısmında mkarabulut tarafından paylaşıldı.

  1. mkarabulut

    mkarabulut Misafir

    4-safe_mode ile boğuşmak...
    Safe_mode aynı hosting hizmetini paylaşan farklı müşterilerin dosya güvenlikleri için iyi bir çözüm gibi görünse de bazı zamanlar sizin de daha dikkatli script yazmanıza sebep olduğundan sizi biraz kızdırabilir :)

    GEnel olarak safe_mode:
    * Okuma-yazma izinleri ne olursa olsun,başka bir kullanıcıya ait dosyanın diğer kullanıcı tarafından erişimini engeller.
    * Hosting firmasının size sağlamış olduğu,kendi taban klasörünüzden (base_dir) aşağıdaki klasör ve dosyalara erişiminizi engeller.

    Ama ortada şöyle bir problem doğmaktadır.
    Dosya upload edilirken php dosyaları önce geçici bir klasöre atmaktadır. Bu klasör haliyle, kullanıcının taban klasöründen oldukça aşağıda bir klasördür. Programcı ise bir şekilde bu klasörden upload edilmiş dosyayı kendi belirleyeceği bir klasöre veya veritabanına atmak isteyecektir.

    Eğer kullanıcı copy() komutunu kullanarak bu işlemi yapmaya çalışırsa
    Kod:
    if (is_uploaded_file($file)){
        copy($file,'/uploaded_files/'.$file_name);
    }
    
    safe_mode hemen devreye girecek ve base_dir restriction hatası vererek taban klasör ihlalinde bulunduğunuzu söyleyecektir. Çözüm ise basittir: move_uploaded_file kullanmak:
    Kod:
    if (is_uploaded_file($file)){
       move_uploaded_file($file,'/uploaded_files/'.$file_name);
    }
    
    safe_mode,move_uploaded_file() fonksiyonu ile nereye eriştiğinize bakmaz,çünkü bu dosya her halikarda sizindir !


    İkincisi eğer server'da safe_mode açıksa,artık unlink(),chmod(),exec() gibi dosya ve sistem komutlarını kullanmanıza yarayan komutları kullanamayacaksınız demektir. Scriptlerinizde bu komutları kullanıyorsanız programlarınız istediğiniz gibi çalışmayacaktır.

    İşin ilginç yanı safe_mode unix sisteminin standart olan erişim yetkilendirmesini de tabir yerinde ise 'takmaz'. Yani herhangi bir dosyanın okuma-yazma izinleri 777 olsa bile safe_mode sadece kullanıcı id'lerine baktığı için eğer dosya uid'si sizin uid'nizden farklı ise dosyaya erişiminizi engelleyecektir.

    Sonuç olarak umask ile yapmaya çalışacağınız bir kandırmaca denemesi bile sonuçsuz kalacaktır :)
     
  2. LoS.ToF

    LoS.ToF Daimi Üye

    Kayıt:
    11 Ağustos 2002
    Mesajlar:
    1,088
    Beğenilen Mesajlar:
    0
    Meslek:
    PHP Developer
    Şehir:
    Antalya
    :) kafama taşlar düşüyoooo.


    neyse bende bir kaç nokta belirteyim.

    safe mode ta dosya işlemlerini yapamayacağınızdan php nin ftp fonksiyonlarını kullana bilirsiniz.
     
    Son düzenleme yönetici tarafından yapıldı: 12 Ekim 2002