JS как защита для аплоада, имеет смысл?

435
.
Естественно, используется не только JS, но заодно, что бы освободить php от мусорных и просто ошибочных загрузок и обработок файлов, решил переложить на клиента.
Вопрос вот только в том, на сколько легко обойти подобную защиту? (размер файла и его расширение проверяется)
но можно просто отключить js или исправить разметку и убрать из нее необходимые атрибуты..
В общем, есть вообще смысл, заморачиваться?
проверку уже написал, но не встраивал
.
Кадило крутится, лавэха мутится
Что имеется в виду под защитой?
В любом случае проверку на сервере делать нужно обязательно.
.
на сервере конечно все проверяется.
JS проверяет во время выбора файла, допустимое ли расширение для этого поля, у выбранного файла, не привышает ли размер файла указанный лимит, если что то не сходится, то очищает поле выбора файла
.
function selectFile(input){
    var getName = $(input).val();
    var viewName = $(input).next('span.vf');
    var filepatch = getName.split('\\');
    var fileName = filepatch[filepatch.length - 1];
    if($(input).attr('accepted')!=undefined && $(input).attr('accepted')!=''){
        var EXT = fileName.split('.');
        var FileEXT = EXT[EXT.length-1].replace('jpeg', 'jpg');
        var Accepted = $(input).attr('accepted').replace(' ', '');
        var AcceptedEXT = Accepted.split(',');
        var ValidEXT = false;
        for(s=0; s < AcceptedEXT.length; s++){
            if(AcceptedEXT[s].replace('jpeg', 'jpg')==FileEXT){
                ValidEXT = true;
            }
        }
    }else{
        var ValidEXT = true;
    }


    if(ValidEXT==true){
        if(input.files[0].size!=undefined && input.files[0].size!='' && input.files[0].size > 0){
            var FileSize = input.files[0].size;

            if($(input).attr('max-size')!=undefined && $(input).attr('max-size')!=''){
                var Size = $(input).attr('max-size').split(' ');
                if(Size[0]==parseInt(Size[0])){
                    if(Size[1]=='Gb'){
                        var LimitSize = (1024 * 1024 * 1024) * parseInt(Size[0]);
                    }else if(Size[1]=='Mb'){
                        var LimitSize = (1024 * 1024) * parseInt(Size[0]);
                    }else if(Size[1]=='Kb'){
                        var LimitSize = 1024 * parseInt(Size[0]);
                    }else{
                        var LimitSize = parseInt(Size[0]);
                    }
                    if(FileSize <= LimitSize){
                        var ValidSIZE = true;
                    }
                }else{
                    var ValidSIZE = true;
                }
            }else{
                var ValidSIZE = true;
            }



            if(FileSize > (1024 * 1024)){
                var StringSize = (FileSize / (1024 * 1024)).toFixed(2)+'Mb';
            }else if(FileSize > 1024){
                var StringSize = (FileSize / 1024).toFixed(1)+'Kb';
            }else{
                var StringSize = FileSize+'b';
            }

            var ViewFileSize = '<span class="upload-v-f-s">'+StringSize+'</span>';
        }else{
            var ViewFileSize = '';
            var ValidSIZE = true;
        }

        if(ValidSIZE==true){
            viewName.html(ViewFileSize+fileName);
        }else{
            $(input).val('');
            viewName.html('');
            alert('Недопустимый размер файла!');
        }

    }else{
        $(input).val('');
        viewName.html('');
        alert('Недопустимый тип файла!');
    }

}

и выбор файла типа
<input class="screen" accepted="gif, jpg, png" max-size="50 Kb" type="file" name="screen" placeholder="Обложка"  onchange="selectFile(this)" />
.
Как защита -- бессмысленно. Как фича, которая поможет сэкономить время и повысить юзабельность -- очень даже полезно. На мой взгляд все очевидно.
.
Как защита - не имеет. Как средство уведомить юзера о том, что он делает что-то не так, до того как он отправит фалик в пару сотен МБ на сервер - имеет.
.
на счет юзабильности я как то не подумал))
.
а с регистрацией точно так же ? можно ли побобрать как то парольчем то если рега на стороне клиента ?
.
ни чего не понял
.
ramzes, ну некоторые реги мона вскруть говорят брутом...а как регой на стороне клиента втаком случае..?
Всего: 11