2014-12-28 2 views
3

Am, позволяющий пользователю загружать несколько изображений Теперь моя проблема Как я найти его только изображение или он содержит халтуру кодValidation для загрузки файла

мне нужно сделать валидатор Do или Как я могу найти ??

Поскольку существует много методов взламывать загрузки имиджа

Как предотвратить или защитить свой веб-сайт хакерства от процесса загрузки файла, я разрешаю использовать входной файл «принимает» атрибут

<input type="file" accept="image/*"></label></p> 

Будет ли это защищать,

Может кто-нибудь помочь мне сделать проверку на стороне клиента и на стороне сервера

ответ

0

Нет, это не безопасно.

Вместо этого используйте серверную функцию PHP exif_imagetype(), чтобы проверить, является ли это изображение. Смотрите код ниже:

$allowedTypes = array(IMAGETYPE_PNG, IMAGETYPE_JPEG, IMAGETYPE_GIF); 
$detectedType = exif_imagetype($_FILES['fupload']['tmp_name']); 
$error = !in_array($detectedType, $allowedTypes); 

Найти больше информации здесь: uploaded file type check by PHP. В качестве альтернативы вы можете использовать getimagesize().

+0

но я хотел бы сделать на стороне сервера и проверка на стороне клиента –

0

попробовать этот простой стороне клиента проверки

<script type="text/javascript"> 
var _validFileExtensions = [".jpg", ".jpeg", ".bmp", ".gif", ".png"]; 

function Validate(oForm) { 
    var arrInputs = oForm.getElementsByTagName("input"); 
    for (var i = 0; i < arrInputs.length; i++) { 
     var oInput = arrInputs[i]; 
     if (oInput.type == "file") { 
      var sFileName = oInput.value; 
      if (sFileName.length > 0) { 
       var blnValid = false; 
       for (var j = 0; j < _validFileExtensions.length; j++) { 
        var sCurExtension = _validFileExtensions[j]; 
        if (sFileName.substr(sFileName.length - sCurExtension.length, sCurExtension.length).toLowerCase() == sCurExtension.toLowerCase()) { 
         blnValid = true; 
         break; 
        } 
       } 

       if (!blnValid) { 
        alert("Sorry, " + sFileName + " is invalid, allowed extensions are: " + _validFileExtensions.join(", ")); 
        return false; 
       } 
      } 
     } 
    } 

    return true; 
} 
</script> 

форма должна выглядеть следующим образом:

<form ... onsubmit="return Validate(this);"> 

и для использования на стороне сервера

if (!in_array($sExt, array('.gif', '.jpg', '.png'))) { 
      $errors[] = "Image types alowed are (.gif, .jpg, .png) only!"; 
     } 
Смежные вопросы