• 03-12-2013, 11:47:06
    #1
    iki sunucu var birisinde siteler yayınlanıyor diğerinde görseller depo ediliyor.
    sitelerde "image/x.jpg" gibi görseller için yani image klasörü için rewrite yazılmış durumda. image/x.jpg şeklinde istek geldiğinde rewrite ile bu istek doyacek.php?dosya=x.jpg şeklinde işleniyor.
    dosyacek.php ile gelen görsel talebi curl kullanılarak depo sunucusundan çekilip ekrana basılıyor.

    buraya kadar her şey güzel. yani script içinden
    <img src="image/x.jpg />
    şeklinde talep geldiğinde bu talep curl ile farklı bir sunucudan çekilip ekrana basılıyor.
    sıkıntı ise şu birisi ekrandan resme sağ tıklayıp resmi yeni sekmede açtığında ekranda resim yerine binary kodlar görünüyor. yani resmi script yerine adres satırından çağırırsam ekranda kodlardan başka birşey olmuyor.
    bu durumu nasıl çözebiliriz yada bu tarz bir uygulama için farklı bir çözüm varmı?
  • 03-12-2013, 16:20:30
    #2
    Çok saçma bir sistem olmuş hocam. Her tekil ziyaretçi için resimler indiriliyor site daha geç açılıyor. 2 yolu var ya kendi sunucunuzda olsun resimler ya da imaj linklerini diğer sunucu üzerinden verin. Muhtemelen sizin yazdığınızı da diğer siteden getirmeye çalışıyor o yüzden hatalı kod basıyor. Bunun için de diğer siteden resim çekme sistemini iptal etmeniz gerekiyor.
  • 03-12-2013, 17:31:10
    #3
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Çektiğiniz resmin MIME tipini alıp ona uygun header bilgisi göndermeniz gerekiyor.
  • 04-12-2013, 13:06:16
    #4
    saintx dediğiniz gibi depo sunucuda
    mime_content_type()
    ile mime tipini alıp header de bastırdım. ana sunucuda da bu headeri bastırınca sorun düzeldi.

    Elumre dostum saçma ama benim için gerekli. ana sunucuda barınan sitelere dosya yükleme izni vermem gerekiyor. herkes de iyi niyetli değil malesef. olur da filtreden kaçan zararlı bişey yüklenirse adamların web aplikasyon kısmında sunucunun içinde gezinmesini istemiyorum. o yüzden dosya alanı ile script alanını ayırdım.
    resimlerin yoluna diğer sunucunun ipsini yazabilir yada boştaki domainlerden birini çakıp kullanabilirdim de ama bu şekilde debelenmemin sebebi kullanıcıların ikinci bir sunucunun varlığından bi haber olmalarını istemem
  • 06-12-2013, 21:34:19
    #5
    Üyeliği durduruldu
    MIME kontrolünü ve bi kaç güvenlik kontrolünü daha dosya upload aşamasında yaparsan bu kadar takla atman gerekmez...
  • 06-12-2013, 23:09:06
    #6
    Dosya uzantısına göre header bilgisini ekleyin.

        $mime_types = array("323" => "text/h323",
        "acx" => "application/internet-property-stream",
        "ai" => "application/postscript",
        "aif" => "audio/x-aiff",
        "aifc" => "audio/x-aiff",
        "aiff" => "audio/x-aiff",
        "asf" => "video/x-ms-asf",
        "asr" => "video/x-ms-asf",
        "asx" => "video/x-ms-asf",
        "au" => "audio/basic",
        "avi" => "video/x-msvideo",
        "axs" => "application/olescript",
        "bas" => "text/plain",
        "bcpio" => "application/x-bcpio",
        "bin" => "application/octet-stream",
        "bmp" => "image/bmp",
        "c" => "text/plain",
        "cat" => "application/vnd.ms-pkiseccat",
        "cdf" => "application/x-cdf",
        "cer" => "application/x-x509-ca-cert",
        "class" => "application/octet-stream",
        "clp" => "application/x-msclip",
        "cmx" => "image/x-cmx",
        "cod" => "image/cis-cod",
        "cpio" => "application/x-cpio",
        "crd" => "application/x-mscardfile",
        "crl" => "application/pkix-crl",
        "crt" => "application/x-x509-ca-cert",
        "csh" => "application/x-csh",
        "css" => "text/css",
        "dcr" => "application/x-director",
        "der" => "application/x-x509-ca-cert",
        "dir" => "application/x-director",
        "dll" => "application/x-msdownload",
        "dms" => "application/octet-stream",
        "doc" => "application/msword",
        "dot" => "application/msword",
        "dvi" => "application/x-dvi",
        "dxr" => "application/x-director",
        "eps" => "application/postscript",
        "etx" => "text/x-setext",
        "evy" => "application/envoy",
        "exe" => "application/octet-stream",
        "fif" => "application/fractals",
        "flr" => "x-world/x-vrml",
        "gif" => "image/gif",
        "gtar" => "application/x-gtar",
        "gz" => "application/x-gzip",
        "h" => "text/plain",
        "hdf" => "application/x-hdf",
        "hlp" => "application/winhlp",
        "hqx" => "application/mac-binhex40",
        "hta" => "application/hta",
        "htc" => "text/x-component",
        "htm" => "text/html",
        "html" => "text/html",
        "htt" => "text/webviewhtml",
        "ico" => "image/x-icon",
        "ief" => "image/ief",
        "iii" => "application/x-iphone",
        "ins" => "application/x-internet-signup",
        "isp" => "application/x-internet-signup",
        "jfif" => "image/pipeg",
        "jpe" => "image/jpeg",
        "jpeg" => "image/jpeg",
        "jpg" => "image/jpeg",
        "js" => "application/x-javascript",
        "latex" => "application/x-latex",
        "lha" => "application/octet-stream",
        "lsf" => "video/x-la-asf",
        "lsx" => "video/x-la-asf",
        "lzh" => "application/octet-stream",
        "m13" => "application/x-msmediaview",
        "m14" => "application/x-msmediaview",
        "m3u" => "audio/x-mpegurl",
        "man" => "application/x-troff-man",
        "mdb" => "application/x-msaccess",
        "me" => "application/x-troff-me",
        "mht" => "message/rfc822",
        "mhtml" => "message/rfc822",
        "mid" => "audio/mid",
        "mny" => "application/x-msmoney",
        "mov" => "video/quicktime",
        "movie" => "video/x-sgi-movie",
        "mp2" => "video/mpeg",
        "mp3" => "audio/mpeg",
        "mpa" => "video/mpeg",
        "mpe" => "video/mpeg",
        "mpeg" => "video/mpeg",
        "mpg" => "video/mpeg",
        "mpp" => "application/vnd.ms-project",
        "mpv2" => "video/mpeg",
        "ms" => "application/x-troff-ms",
        "mvb" => "application/x-msmediaview",
        "nws" => "message/rfc822",
        "oda" => "application/oda",
        "p10" => "application/pkcs10",
        "p12" => "application/x-pkcs12",
        "p7b" => "application/x-pkcs7-certificates",
        "p7c" => "application/x-pkcs7-mime",
        "p7m" => "application/x-pkcs7-mime",
        "p7r" => "application/x-pkcs7-certreqresp",
        "p7s" => "application/x-pkcs7-signature",
        "pbm" => "image/x-portable-bitmap",
        "pdf" => "application/pdf",
        "pfx" => "application/x-pkcs12",
        "pgm" => "image/x-portable-graymap",
        "pko" => "application/ynd.ms-pkipko",
        "pma" => "application/x-perfmon",
        "pmc" => "application/x-perfmon",
        "pml" => "application/x-perfmon",
        "pmr" => "application/x-perfmon",
        "pmw" => "application/x-perfmon",
        "pnm" => "image/x-portable-anymap",
        "pot" => "application/vnd.ms-powerpoint",
        "ppm" => "image/x-portable-pixmap",
        "pps" => "application/vnd.ms-powerpoint",
        "ppt" => "application/vnd.ms-powerpoint",
        "prf" => "application/pics-rules",
        "ps" => "application/postscript",
        "pub" => "application/x-mspublisher",
        "qt" => "video/quicktime",
        "ra" => "audio/x-pn-realaudio",
        "ram" => "audio/x-pn-realaudio",
        "ras" => "image/x-cmu-raster",
        "rgb" => "image/x-rgb",
        "rmi" => "audio/mid",
        "roff" => "application/x-troff",
        "rtf" => "application/rtf",
        "rtx" => "text/richtext",
        "scd" => "application/x-msschedule",
        "sct" => "text/scriptlet",
        "setpay" => "application/set-payment-initiation",
        "setreg" => "application/set-registration-initiation",
        "sh" => "application/x-sh",
        "shar" => "application/x-shar",
        "sit" => "application/x-stuffit",
        "snd" => "audio/basic",
        "spc" => "application/x-pkcs7-certificates",
        "spl" => "application/futuresplash",
        "src" => "application/x-wais-source",
        "sst" => "application/vnd.ms-pkicertstore",
        "stl" => "application/vnd.ms-pkistl",
        "stm" => "text/html",
        "svg" => "image/svg+xml",
        "sv4cpio" => "application/x-sv4cpio",
        "sv4crc" => "application/x-sv4crc",
        "t" => "application/x-troff",
        "tar" => "application/x-tar",
        "tcl" => "application/x-tcl",
        "tex" => "application/x-tex",
        "texi" => "application/x-texinfo",
        "texinfo" => "application/x-texinfo",
        "tgz" => "application/x-compressed",
        "tif" => "image/tiff",
        "tiff" => "image/tiff",
        "tr" => "application/x-troff",
        "trm" => "application/x-msterminal",
        "tsv" => "text/tab-separated-values",
        "txt" => "text/plain",
        "uls" => "text/iuls",
        "ustar" => "application/x-ustar",
        "vcf" => "text/x-vcard",
        "vrml" => "x-world/x-vrml",
        "wav" => "audio/x-wav",
        "wcm" => "application/vnd.ms-works",
        "wdb" => "application/vnd.ms-works",
        "wks" => "application/vnd.ms-works",
        "wmf" => "application/x-msmetafile",
        "wps" => "application/vnd.ms-works",
        "wri" => "application/x-mswrite",
        "wrl" => "x-world/x-vrml",
        "wrz" => "x-world/x-vrml",
        "xaf" => "x-world/x-vrml",
        "xbm" => "image/x-xbitmap",
        "xla" => "application/vnd.ms-excel",
        "xlc" => "application/vnd.ms-excel",
        "xlm" => "application/vnd.ms-excel",
        "xls" => "application/vnd.ms-excel",
        "xlt" => "application/vnd.ms-excel",
        "xlw" => "application/vnd.ms-excel",
        "xof" => "x-world/x-vrml",
        "xpm" => "image/x-xpixmap",
        "xwd" => "image/x-xwindowdump",
        "z" => "application/x-compress",
        "zip" => "application/zip");
    
    $uzanti = 'jpg';
    
    header("Content-Type: ".$mime_types[$uzanti]);
  • 07-12-2013, 00:30:05
    #7
    Haplo adlı üyeden alıntı: mesajı görüntüle
    saintx dediğiniz gibi depo sunucuda
    mime_content_type()
    ile mime tipini alıp header de bastırdım. ana sunucuda da bu headeri bastırınca sorun düzeldi.

    Elumre dostum saçma ama benim için gerekli. ana sunucuda barınan sitelere dosya yükleme izni vermem gerekiyor. herkes de iyi niyetli değil malesef. olur da filtreden kaçan zararlı bişey yüklenirse adamların web aplikasyon kısmında sunucunun içinde gezinmesini istemiyorum. o yüzden dosya alanı ile script alanını ayırdım.
    resimlerin yoluna diğer sunucunun ipsini yazabilir yada boştaki domainlerden birini çakıp kullanabilirdim de ama bu şekilde debelenmemin sebebi kullanıcıların ikinci bir sunucunun varlığından bi haber olmalarını istemem
    İyi de hocam, sitelerin resimleri upload ettiği alana bir güvenlik filtresi koysanız, filtreden geçmeyen resim kaydedilmese daha mantıklı olmaz mı?
  • 07-12-2013, 11:08:51
    #8
    örnek resim üzerineydi ama resimden başka xls,xlsx,doc,pdf,mov,avi,mp4 gibi diğer uzantılarda olacak.
    işin en başında zaten önlemler var, resim yada dosya yüklenmesi esnasında dosya boyutu ve mime kontrolu yapılıyor izin verilenlerin haricindekiler yüklenmiyor ve yüklenirken gif harici imajları yeniden create ediyorum.
    bu şekilde şimdiye kadar patlayan baş ağrıtan birşey çıkmadı ben sadece işi biraz daha ileri noktaya götürmek istedim.
    harici sunucu ile henüz stres testi yapılmadı ama site genel performansı çok çok etkilenirse eski usule dönmek kolay.

    Alıntı
    soulmy
    dostum uzantıya bakarak mime tipini belirleme sakatlık çıkartabilir gibime geliyor
  • 07-12-2013, 15:38:26
    #9
    Haplo adlı üyeden alıntı: mesajı görüntüle
    ....

    dostum uzantıya bakarak mime tipini belirleme sakatlık çıkartabilir gibime geliyor
    Ben sadece ilk mesajda yazdığınız probleme çözüm ürettim.

    Kolay gelsin.