Duyuruyu Kapat
Facebook Gözat
Twitter Gözat

upload edilen resmin ismini değiştirme

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

  1. ysf45

    ysf45 Üye

    Kayıt:
    11 Kasım 2007
    Mesajlar:
    28
    Beğenilen Mesajlar:
    0
    merhaba arkadaslar,upload edilen resimlerin isimlerini benzersiz bir bicimde nasıl degistirebilirim.hic bir ismin aynı olmasını istemiyorum.formdan yukledigimiz bir resmi klasore tasırken yuklendigi anda ismini otomatik olarak nasıl degistirilir.tabi bir de veritabanına kaydederken de isim degisecek haliyle.nasıl yaparım bunu.
     
  2. researcher9

    researcher9 Üye

    Kayıt:
    25 Ağustos 2007
    Mesajlar:
    132
    Beğenilen Mesajlar:
    0
  3. deathisonitsway

    deathisonitsway x-coder

    Kayıt:
    7 Kasım 2007
    Mesajlar:
    6,145
    Beğenilen Mesajlar:
    6
    Meslek:
    php-coder
    Şehir:
    abroad
    bu sekilde kullanıyorum ben;

    PHP:

    if(preg_match('/(.*)\.(.*)/',$_FILES['resim']['name'],$dizi) ) {

    $format=$dizi[2];

    }

    $ids=mysql_query("select id from table order by id desc limit 1");

    $ids_get=mysql_fetch_assoc($ids);

    $id_f=$ids_get['id']+1;

    $new_name="".$id_f."_resim.".$format."";

    $_FILES['resim']['name']=$new_name;

     
  4. Setting_By

    Setting_By Üye

    Kayıt:
    16 Mart 2008
    Mesajlar:
    89
    Beğenilen Mesajlar:
    0
    merhaba , upload esnasında ismin degişmesi durumunda degişen ismi senmi belirleyeceksin ?

    fark etmez diyosan md5 şeklini öneririm hem daha güvenli .

     
  5. deathisonitsway

    deathisonitsway x-coder

    Kayıt:
    7 Kasım 2007
    Mesajlar:
    6,145
    Beğenilen Mesajlar:
    6
    Meslek:
    php-coder
    Şehir:
    abroad
    guvenli olmasa ne olacak ki.script mi calıstıracak resim uzerinden :) type kontrolu yapmak yeterli resim konularında ama senin verdigin gibi md5 li yapmakta hoş aslında,ama 32 haneli resim ismi biraz enteresan olmaz mı :)
     
  6. Setting_By

    Setting_By Üye

    Kayıt:
    16 Mart 2008
    Mesajlar:
    89
    Beğenilen Mesajlar:
    0
    güvenli olmasa ne olacak ?

    şöyle açıklayayım bir çok sistemde avatar açıgı olarak adlandırılan açık güvenli olmadıgından kaynaklanıyor.server bilgi ve yonetim uygulaması olan shell (basta r57 ve c99) kodlamaları normalde php yazılım olmalarına ragmen "GIF89a;" komutu ile serverimiz bu shell sayfasını .gif uzantılı bir resim olarak tanıyor ve sisteme kabul ediyor .

    tamam burda ne warki ?

    1-burda şu var egerki dosya ismi md5 hash olarak şifrelenirse sistem bu shell sayfasını kabul etse bile kötü amaçlı kullanıcı servere upload etmiş oldugu sayfa linkini bulamaz . ( en basiti )

    2 - bu shell uygulamaları bazı serverlerde afallıo (başka windows hostlarda ) nasıl oluo ? shell sayfasının ismini gif89a; komutu ile kabulleniyor mesela c99.php olarak . bunu sayfaya kayıt yaparken 32 haneli bir kod parçasıyla kayıt yapıyor bu kod parçasını kötü amaçlı kullanıcı bulsa ve giriş için uygulamaya koysa bile "system security = on (guvenlik açık) - rtxxxw" gibi bir işlemle karşılaşıyor ve servere hiç bir zararda bulunamıyor .

    umarım açıklayıcı olmuştur.özrümüz olduysa affola . iyi çalışmalar .
     
  7. deathisonitsway

    deathisonitsway x-coder

    Kayıt:
    7 Kasım 2007
    Mesajlar:
    6,145
    Beğenilen Mesajlar:
    6
    Meslek:
    php-coder
    Şehir:
    abroad

    guzel bilgiydi tesekkurler...yalnız buradaki gif89a ozel mi yoksa rastgele ornek mi verdin
     
  8. Raiden

    Raiden self.life.start()

    Kayıt:
    11 Ekim 2004
    Mesajlar:
    4,392
    Beğenilen Mesajlar:
    0
    Şehir:
    /home/Raiden
    setting_by
    demişsiniz lakin bunun server ile alakası yok bu tamamen size kalmış birşey resmin doğruluğunu tam yapmadan yükleme yaparsanız bu dediğiniz ortaya çıkar ve buna artı olarak bunuda yine kod olarak çalıştıran sadece IE dir firefox da bu yemez dolayısıyla IE nin sizin dediğiniz GIF89a kısmını gördüğü anda bunu yorumlamasından kaynaklanmaktadır. IE nin salaklığı tamamen.

    ayrıca tipik bir
    <img src="javascript:alert(document.cookie)">
    gibi bir html etiketi firefox göstermezken ie 6 ve düşüğü alert kısmını döndürmektedir. bilginize.
     
  9. Setting_By

    Setting_By Üye

    Kayıt:
    16 Mart 2008
    Mesajlar:
    89
    Beğenilen Mesajlar:
    0
    deathisonitsway evet hocam o komut standart bir komut png ve jpeg uzantıları için ayrı komutlar var .

    raiden resmin doğruluguda kod oranları ile yapılıyor ben sadece bilgi amaçlı bildiklerimi söyledim . yani egerki sizinde dediginiz gibi kesin bir önlem olmadan upload işlemi yapılırsa server tehlikede olabilir. ie nin hatası buna katılmıyorum çünkü komutları algılayan betik ama bir yöndende yukarda söylediginiz gibi kod cambazlıgı olmak durumu degiştirir . zamanında bir çok sistemde inceleme şansı buldum bu shell bypass gibi yazılımları ama göze çarpan ve büyük fark yaratan tek durum windows - lunix hosting ayrımıydı.

    kolay gelsin iyi çalışmalar .
     
  10. Raiden

    Raiden self.life.start()

    Kayıt:
    11 Ekim 2004
    Mesajlar:
    4,392
    Beğenilen Mesajlar:
    0
    Şehir:
    /home/Raiden
    setting yine betik le kısmen alakalı değil sen betik de direk dosya türü şuysa kopyala derseniz bu olur bunu önlemek için en azından resmin üzerine bir yazı yazmak gerekir ki yeniden bir resim inşa edilsin. ayrı yeten diyelim zararlı kod içeren resim yüklendi. bunun o şekilde çalışmasını sağlayan yine ie dir. firefox da çalışmaz.
     
  11. Setting_By

    Setting_By Üye

    Kayıt:
    16 Mart 2008
    Mesajlar:
    89
    Beğenilen Mesajlar:
    0
    Hocam tamam ilk söyledigini bende bir önceki iletimde belirtmeye çalıştım fakat net olmamış sanırım tamam aynı kanaatta oldugumuza göre sorun yok . ama ie ve ff arasındaki ayrım nerden geliyor . yaa söyle diyebilirim mesela c99 vardır anlık işlem yapar peki bu ie'nin hatası dieyelim . fakat r57 bypass zehir4(asp) vardır sürekli işlemdedir . link ortamında işlemi sürdürür . bir önceki ve bir sonraki sıralama olayları sürekli göz önünde bulundurmaktır çalışma mantıgı bunun için hem ie hem ff link işlemi üzerine dayalı çalışma yapıyorsa bir birinden farklı sonuç doğurmayacaktır.

    kolay gelsin .
     
  12. Raiden

    Raiden self.life.start()

    Kayıt:
    11 Ekim 2004
    Mesajlar:
    4,392
    Beğenilen Mesajlar:
    0
    Şehir:
    /home/Raiden
    bence ayrım şurdan geliyor GIF89a söz dizimini görünce ie hemen resim diye algılıyor firefox ise sonuna kadar bakıyor olabilir tabi bu benim görüşüm.
     
  13. Setting_By

    Setting_By Üye

    Kayıt:
    16 Mart 2008
    Mesajlar:
    89
    Beğenilen Mesajlar:
    0
    Görüşlere saygımız sonsuz tabiki olabilir . Geçen yıl bir security web sayfasındada gündeme geldi c99 yazılımı anlık işlemde bulundugu için ve tabiri çayizse servere yedirme sorunu sadece bu yazılımda bulundugu için tartışıldı ve bu gif89a komutu kesin ve net çözüm olarak diger yazılımlarda en başa sabit tutuldugu ve sorun yaşanmadıgı halde c99 yazılımında php sınırları içerisinde kullanıldı "<?php GIF89a; ...." gibi bu tartışmada hedef browserler degildi , yada hiç gözönüne alınmadı ama amaç serveri önce php gibi gösterip ardından işleme sokmaktı . amaçada ulaşıldı önce php gibi göründü reddeti ardından yanıldı , afalladı kabulletti tek sorun bazı kesin php kodu olarak browserin kabul ettigi kod parçaları normal düz yazı olarka ekrana bastı . ama dosya upload kısmı çalıştıgı için tek onun çalışması bile yettiği için çalışıyor kabul edildi .
     
  14. deathisonitsway

    deathisonitsway x-coder

    Kayıt:
    7 Kasım 2007
    Mesajlar:
    6,145
    Beğenilen Mesajlar:
    6
    Meslek:
    php-coder
    Şehir:
    abroad
    gif89a ise eger setting ben bunu acık diye nitelendirmem.bu da benim gorusum.milyarda 1 olasılıkla shell atcakta lamer gorecez.:) en guzeli degistirmek resmin adini.

    PHP:

    if(preg_match('/(.*)\.(.*)/',$_FILES['resim']['name'],$dizi) ) {

    $format=$dizi[2];

    }

    $ids=mysql_query("select id from table order by id desc limit 1");

    $ids_get=mysql_fetch_assoc($ids);

    $id_f=$ids_get['id']+1;

    $new_name="".$id_f."_resim.".$format."";

    $_FILES['resim']['name']=$new_name;  


    simdi ben bu kodla resmin adini 1_resim.jpg gibi format neyse ona uygun degistiriyorum.var mı lamerin bu resim name a karsı atabilecegi bir shell...hayır varsa onlemini alalım.dimi :)
     
  15. Setting_By

    Setting_By Üye

    Kayıt:
    16 Mart 2008
    Mesajlar:
    89
    Beğenilen Mesajlar:
    0
    dedigim gibi herşey sistemin köfteyi yememesine bağlı . benim herhangi bur durumda shell yazılımlarını savunma amacım yok yanlış anlaşılmasın anası degilim yazarı degilim :D. sistem köfteyi yedigi durumda resmin link adresini görüntülenememesi olayı bitirir diye düşünüyorum.

    birde resim uzantısı degişme her yonden deva gibi ( kendi düşüncem )

    Kod:
    <? $resimadres = "../resimdosyasi/";
    
    $en = 0;
    
    if (is_dir($resimadres) && $nasil = @opendir($resimadres)) {
    	while ($yukle = readdir($nasil)) {
    		$setting = strtolower(substr(strrchr($yukle, "."), 1));
    		if ($setting == "gif") {
    			$en++;
    		}
    	}
    } else {
    	$en = -1;
    }
    
    ?>
     
  16. kuaza

    kuaza Daimi Üye

    Kayıt:
    12 Şubat 2007
    Mesajlar:
    727
    Beğenilen Mesajlar:
    0
    Meslek:
    boştayım..
    Şehir:
    trabzon
    sanirim tam bilmiyorum ama php5den itibaren bir cok acik kapatiliyor bu c99 da dahil sanirim.. ve linux sistemlerde ise yaradiginida gormedim :)