---
title: "Mime-typ vid upload."
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/150295-mime-typ-vid-upload"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "SlewME"
published: "2006-08-18T23:59:37.000Z"
updated: "2006-08-20T15:58:06.000Z"
replies: 13
views: 682
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/asp/150295-mime-typ-vid-upload"
---

# Mime-typ vid upload.

## #1 — SlewME, 2006-08-18T23:59Z

Tjenare. 
Jag använder ASPupload som komponent och det har nu visat sig att det går att utnyttja detta till att bli admin. Killen sade att han laddade upp ASP eller PHP-kod för att manipulera sig själv och bli admin. Har nu letat som ingen annan efter en lösning på problemet - utan resultat. 

Det jag vill göra är att alltså ENDAST tillåta .gif och .jpg-mime för att förhindra att detta sker. Sidan ligger tillfälligt uppe på IIS5 då min andra server krashade och IIS5 är nästan oanvändbart.

Hur gör jag detta i ASPupload-koden? 
Tacksam för svar. // SlewME

Permalänk: https://www.webforum.nu/p/150295

## #2 — emission, 2006-08-19T14:54Z

Låt helt enkelt bli att spara filer med andra filslut än .gif, .jpg och .jpeg.

Permalänk: https://www.webforum.nu/p/1853789

## #3 — SlewME, 2006-08-19T15:02Z

> **emission skrev:**
>
> Låt helt enkelt bli att spara filer med andra filslut än .gif, .jpg och .jpeg.

Visste att jag skulle varit tydligare i min tråd. Det har inte med saken att göra, självklart har jag sett till att andra filer än dessa inte ska sparas. MEN ASPupload läser av filers mime-typ och lägger upp filen på servern samt tar bort den om det är fel filtyp. 

Detta skrev han på MSN till mig; 
"Spoofad MIME-typ + extension med ASP eller PHP == exekvera kod på servern"
"Problemet är att scriptet litar på MIME-typen"
"Finns två lösningar, enkla och svåra. Typ."
"Enkla är att neka servern att servera allt som slutar på .asp eller .php ifrån katalogen som filer uppladdas till."
"Svåra är att kolla direkt i scriptet."

Vill alltså få ett SVAR på hur jag löser detta? Dvs. antingen neka .asp/.php eller att bara acceptera en viss mime-typ.

Permalänk: https://www.webforum.nu/p/1853790

## #4 — emission, 2006-08-19T15:49Z

> **SlewME skrev:**
>
> självklart har jag sett till att andra filer än dessa inte ska sparas.

Då är det ju löst. Så länge filslutet inte är något annat än de nämnda så har du inget problem. Filens mime-typ är ointressant.

> **SlewME skrev:**
>
> "Enkla är att neka servern att servera allt som slutar på .asp eller .php ifrån katalogen som filer uppladdas till."

Det kan du förvisso göra som en extra åtgärd. Det smidigaste sättet är att sätta Execute Permission till None på just den mappen.

Permalänk: https://www.webforum.nu/p/1853799

## #5 — SlewME, 2006-08-19T15:51Z

> **emission skrev:**
>
> Då är det ju löst. Så länge filslutet inte är något annat än de nämnda så har du inget problem. Filens mime-typ är ointressant.

Tror inte att du hänger med? Eller så är jag kass på att förklara. 
Allt är som det ska vara MEN han kan ändå ladda upp .asp eller .php-filer. Dvs. det går att gå runt, vilket jag har försökt att komma fram till många gånger i mina tidigare trådar. 

Vill därför spärra detta.

Permalänk: https://www.webforum.nu/p/1853800

## #6 — emission, 2006-08-19T15:55Z

Då får du allt visa lite kod.

Permalänk: https://www.webforum.nu/p/1853801

## #7 — SlewME, 2006-08-19T16:00Z

> **emission skrev:**
>
> Då får du allt visa lite kod.

Visar hela. ;)

```
<% 
If Request.Querystring("do") = "bild" Then

Set connect = Server.CreateObject("ADODB.Connection")
connect.open "driver={MySQL ODBC 3.51 Driver};server=localhost;uid=***;pwd=***;database=***"
Set ObjRS = Server.CreateObject("adodb.recordset")

strSQL = "SELECT * From bildkey Where userid = "&CLng(session("id"))
Set ObjRS = Connect.Execute(strSQL)

Set Upload = Server.CreateObject("Persits.Upload.1")

On Error Resume Next
Upload.SetMaxSize 614400, True
Upload.OverwriteFiles = True

Upload.Save "C:\Inetpub\wwwroot\***\***\bilder\"

NewName = ObjRS("key")

If Err.Number = 8 Then
Session("message") = "Tyvärr så är bilden är större än tillåtet, max 600kb!"
Response.Redirect "index.asp?s=laddaupp&id=" &Request.Querystring("id")
Else
If Err <> 0 Then
Session("message") = "Ett fel uppstod, var god försök igen."
Response.Redirect "index.asp?s=laddaupp&id=" &Request.Querystring("id")
Else
Session("message") = "Din bild är uppladdad"
End If
End If

Set File = Upload.Files("File")

For Each File In Upload.Files
If File.ImageType <> "GIF" and File.ImageType <> "JPG" Then
Session("message") = "Du kan bara ladda upp .jpg och .gif-filer"
File.Delete
Response.End
END IF
File.Copy "C:\Inetpub\wwwroot\***\***\bilder\" & NewName & File.ext
File.Delete

strSQL = "UPDATE members Set bild = 'bilder/"&NewName&File.ext&"', confirm = '0' where id ="&CLng(Request.Querystring("ID"))
Connect.Execute(strSQL)

Session("message") = "Din bild är uppladdad"
Response.Redirect "index.asp?s=laddaupp&id="&session("id")
Next
End IF
%>
```

Permalänk: https://www.webforum.nu/p/1853803

## #8 — emission, 2006-08-19T16:18Z

1\. På raden med Upload.Save(....) sparas alla uppladdade filer på disken. Spara i minnet (genom att inte ange en sökväg) eller på en icke-webbåtkomlig plats i stället, annars kan filer bli kvar om något går snett i ett senare skede.
2\. Använd "File.ext" för att kontrollera filtypen
3\. Om formuläret (kanske ett spoofat formulär) tillåter flera filer så kommer alla utom den första felaktiga att ligga kvar, eftersom Response.End avslutar loopen

Permalänk: https://www.webforum.nu/p/1853807

## #9 — jonnyz, 2006-08-19T18:10Z

Du tittar på mime-typen. Den är inte intressant. Det är filnamnet som är intressant.

Även om en asp eller php fil laddas upp som bild.gif så exekveras den inte på servern och du är safe.

Permalänk: https://www.webforum.nu/p/1853839

## #10 — SlewME, 2006-08-20T14:02Z

> **jonnyz skrev:**
>
> Du tittar på mime-typen. Den är inte intressant. Det är filnamnet som är intressant.
> 
> Även om en asp eller php fil laddas upp som bild.gif så exekveras den inte på servern och du är safe.

Vilket han lyckades med genom koden jag visade? Hur kommer det sig?

Permalänk: https://www.webforum.nu/p/1854039

## #11 — @nders, 2006-08-20T14:20Z

Läs vad emission skriver. Du börjar ju med att spara alla uppladdade filer på disken. Spara inte filen på disk förrän du kontrollerat att filen är av rätt typ.

Permalänk: https://www.webforum.nu/p/1854046

## #12 — SlewME, 2006-08-20T14:30Z

> **@nders skrev:**
>
> Läs vad emission skriver. Du börjar ju med att spara alla uppladdade filer på disken. Spara inte filen på disk förrän du kontrollerat att filen är av rätt typ.

Läste det. Har gjort så nu, 

```
<% 
IF Request.Querystring("do") = "bild" THEN

Set connect = Server.CreateObject("ADODB.Connection")
connect.open "driver={MySQL ODBC 3.51 Driver};server=localhost;uid=***;pwd=***;database=***"
Set ObjRS = Server.CreateObject("adodb.recordset")
strSQL = "SELECT * From bildkey Where userid = "&CLng(session("id"))
Set ObjRS = Connect.Execute(strSQL)

Set Upload = Server.CreateObject("Persits.Upload.1")

On Error Resume Next
Upload.SetMaxSize 614400, True
Upload.OverwriteFiles = True

Upload.Save

NewName = ObjRS("key")

if Err.Number = 8 Then
Session("message") = "Tyvärr så är bilden är större än tillåtet, max 600kb!"
Response.Redirect("index.asp?s=laddaupp")
Else
If Err <> 0 Then
Session("message") = "Ett fel uppstod, var god försök igen."
Response.Redirect("index.asp?s=laddaupp")
Else
Session("message") = "Din bild är uppladdad"
End If
End If

Set File = Upload.Files("File")

For Each File In Upload.Files
If File.ImageType <> "GIF" and File.ImageType <> "JPG" Then
Session("message") = "Du kan bara ladda upp .jpg eller .gif bilder"
Response.Redirect("index.asp?s=laddaupp")
File.Delete
Response.End
END IF
File.SaveAs "C:\Inetpub\wwwroot\***\inne\bilder\" & NewName & File.ext

strSQL = "UPDATE members Set bild = 'bilder/"&NewName&File.ext&"', confirm = '0' where id ="&CLng(session("ID"))
Connect.Execute(strSQL)

Session("message") = "Din bild är uppladdad"
Response.Redirect("index.asp?s=laddaupp")
Next
End IF
%>
```

 

Bör alltså inte gå att göra som han gjorde tidigare nu ?

Permalänk: https://www.webforum.nu/p/1854051

## #13 — emission, 2006-08-20T14:45Z

Viktigast av allt är..

> **emission skrev:**
>
> 2\. Använd "File.ext" för att kontrollera filtypen

Permalänk: https://www.webforum.nu/p/1854054

## #14 — jonnyz, 2006-08-20T15:58Z

Precis. Titta på vad filen heter och inte på MIME-typen. Ditt script tittar på MIME-typen:

```
If File.ImageType <> "GIF" and File.ImageType <> "JPG" Then
```

Permalänk: https://www.webforum.nu/p/1854070

---

Tråden på webben: https://www.webforum.nu/amne/asp/150295-mime-typ-vid-upload
