Ограничить типы файлов для загрузки - PullRequest
0 голосов
/ 05 декабря 2011

Я хочу ограничить типы файлов, которые загружаются на мой сайт.Я использую эту функцию ниже.Буду ли я писать заявления для .jpg || .gif || .jpeg || .png.Я не хочу, чтобы люди загружали exe.Каков наилучший способ сделать это?

if (FileUpload1.HasFile)
    try
    {
        var FileExtension = Path.GetExtension(FileUpload1.PostedFile.FileName);
        var Myguid = Guid.NewGuid().ToString("N");

        //Check to make sure its an allowable file to be uploaded???????????        

        var newName = Guid.NewGuid() + FileExtension;
        //Map path to folder
        string realpath = Server.MapPath("Pictures\\") + newName;

        //FileUpload1.SaveAs("C:\\Users\\josh\\Desktop\\JaysVersion\\PicRatingSite\\PicRatingSite\\Pictures" + FileUpload1.FileName);
        FileUpload1.SaveAs(realpath);

        Label1.Text = "File name: " +
             FileUpload1.PostedFile.FileName + "<br>" +

             FileUpload1.PostedFile.ContentLength + " kb<br>" +
             "Content type: " +
             FileUpload1.PostedFile.ContentType;


        InsertMembers insert = new InsertMembers();
        int age = Int32.Parse(txtAge.Text);
        insert.InsertNewMember(txtEmail.Text, Myguid, txtName.Text, txtCity.Text, txtState.Text, txtDescription.Text, age, gender);


        //Get Member Id to Insert into Pictures table
        GetMemberInfo GetID = new GetMemberInfo();
        int UMemberId = GetID.GetMemberId(Myguid);
        Displayme.Text = newName.ToString();

        //Now that i have member Id Lets insert new picture into picture table
        Picture InsertnewPictures = new Picture();
        int insertpics = InsertnewPictures.InserNewPicture(UMemberId, newName, 0);

    }
    catch (Exception ex)
    {
        //Handle the error
        throw ex;
    }
else
{
    Label1.Text = "You have not specified a file.";
}

Ответы [ 2 ]

1 голос
/ 05 декабря 2011

НЕ доверяйте имени файла, которое предоставляет пользователь.Взломать банально, и кто-то может легко сделать «переименовать nastyvirus.exe cutekittens.jpg» перед загрузкой.Вы должны использовать определение типа mime на стороне сервера, чтобы убедиться, что вы действительно получили изображение.То же самое касается типа MIME, предоставляемого удаленным браузером.Его также можно легко подделать, чтобы «nastyvirus.exe» отображался как «text / plain».

0 голосов
/ 05 декабря 2011

вы можете отфильтровать тип файла для загрузки с помощью оператора switch

var FileExtension = Path.GetExtension(FileUpload1.PostedFile.FileName);

switch(FileExtension.ToLower())
{
    case".jpg":
    case".png":
    case".gif":
    case".jpeg":
        break;
     default:
        Response.Write("this file type is not allowed");
        return;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...