Hey .. benim soru Birisi size ben bir pdf dosyası yükleyicisi örneğin taklit uzantılı bir virüs ya da bazı kötü niyetli kod yüklemek önlemek için nasıl olduğunu, herkes bunu birçok program var pdf kamuflaj ile bir ikili yükleyebilirsiniz.
Dosya yükleme ile ortaya secuirty endişeleri vardır. İlk sorun, dosya bu durumda bir pdf, istediğiniz dosya olmayabilir olmasıdır. Değişken $_FILES['file_name']['type']
never güvenilir olabilir saldırgan tarafından kontrol edilir. Bu değer genellikle Yararlanma kodu kullanarak veya TamperData kullanılarak modifiye edilir.
. 1) secuirty sisteminde ilk adım dosya bir pdf uzantısına sahip emin olmak için:
if("pdf"!=substr($fileName, strrpos($fileName, '.') + 1)){
die("Invalid File Type");
}
2) Sonra onu php filetype() function kullanarak hangi dosya türü kontrol etmelisiniz.
3) ciddi bir sorun bu PDF dosyaları gibi buffer overflows yaygın Adobe tarafından yapılan yazılımda bulunduğu gibi güvenlik açıklarından yararlanan olabilir. Bu PDF adlı bir Drive By Download saldırı virüs yaymak için kullanılır.
En iyi çözüm, web uygulama güvenlik duvarı yüklemek için Mod_Security. Bu web uygulaması isabet sql enjeksiyon ve xss gibi saldırıları durur. Mod_Secuirty all modsec-clamscan kullanarak virüsleri dosya yüklemek taramak için yapılandırılabilir.
biz fileinfo
+ dosya uzantısı onay bir arada kullanın. Tarayıcılar genellikle bu olabilir çünkü bunu asla güvenme mime türünü gönderir iken hijacked.
In our case bizim sunucu herhangi bir dosyayı çalıştırmak yok. pdf jpg png
vb blacklisted mime extensions
listesini:. Peki ne yapmamız bir extension while list
(örneğin) gibi sahip olmaktır. Bu şekilde biz mime türünü eşleşmiyor bir uzantısı olan bir dosyayı sahip riskini önlemek.
Dosya sunucusunda kayıtlı bir kez biz her zaman application/octet-stream
için mime türü zorlamak böylece dosyalar always indirilen vardır.
böyle bir şey:
<?php
$allowed_types = array(
/* images extensions */
'jpeg', 'bmp', 'png', 'gif', 'tiff', 'jpg',
/* audio extensions */
'mp3', 'wav', 'midi', 'aac', 'ogg', 'wma', 'm4a', 'mid', 'orb', 'aif',
/* movie extensions */
'mov', 'flv', 'mpeg', 'mpg', 'mp4', 'avi', 'wmv', 'qt',
/* document extensions */
'txt', 'pdf', 'ppt', 'pps', 'xls', 'doc', 'xlsx', 'pptx', 'ppsx', 'docx'
);
$mime_type_black_list= array(
# HTML may contain cookie-stealing JavaScript and web bugs
'text/html', 'text/javascript', 'text/x-javascript', 'application/x-shellscript',
# PHP scripts may execute arbitrary code on the server
'application/x-php', 'text/x-php', 'text/x-php',
# Other types that may be interpreted by some servers
'text/x-python', 'text/x-perl', 'text/x-bash', 'text/x-sh', 'text/x-csh',
'text/x-c++', 'text/x-c',
# Windows metafile, client-side vulnerability on some systems
# 'application/x-msmetafile',
# A ZIP file may be a valid Java archive containing an applet which exploits the
# same-origin policy to steal cookies
# 'application/zip',
);
$tmp_file_extension = strtolower(pathinfo($file_name, PATHINFO_EXTENSION));
if(!strlen($tmp_file_extension) || (!$allow_all_types &&
!in_array($tmp_file_extension,$allowed_types))) {
return false;
}
$finfo = new finfo(FILEINFO_MIME, MIME_MAGIC_PATH);
if ($finfo) {
$mime = $finfo->file($file_name_tmp);
}
else {
$mime = $file_type;
}
$mime = explode(" ", $mime);
$mime = $mime[0];
if (substr($mime, -1, 1) == ";") {
$mime = trim(substr($mime, 0, -1));
}
return (in_array($mime, $mime_type_black_list) == false);
Eğer virus scan
ile clamav
+ php extension ekleyebilir Buna ek olarak
Bir virüs yükleyerek birinin engel olamaz. En iyi yöntem, siteye yüklenen tüm dosyalar üzerinde clamscande gibi bir virüs taraması çalıştırmak.
Uzatma kontrol / MIME denetimini kullanıyorsanız, yalnızca dosya doğru adlandırılmış olduğunu söyleyecektir VEYA doğru MIME imzası vardır olacaktır. Bir virüs veya değil aslında tarama kadar orada olup olmadığını söylemek için bir yol olacaktır.