Sikkerhed: Uploadfunktion på hjemmeside
Hej EksperterJeg har brug for input omkring sikkerhed i forbindelse med en løsning som giver admin lov til at uploade filer til webserveren.
Det er kun admin som har adgang til upload. Han logger på men der bliver ikke gemt cookies med loginoplysninger i hans browser.
Jeg tænker hvad nu hvis der er en ondsindet som får adgang til upload?
Her lidt facts:
1) Brugeren uploader en zip-fil som bliver pakket ud på serveren.
2)Jeg bruger http://www.icsharpcode.net/opensource/sharpziplib/ til at pakke ud
3) Der testes om det er en zip fil. Både på filtypenavn men også via. zip-scan-funktion som er en del af open source produktet
4) Følgene filer får kun lov til at blive pakket ud: .xml, .png, .jpg, .swf, .mp3
5) Maksimum størrelse på zip-fil er 2 mb
6) Zip-filen bliver omdøbt men stien til filerne vil kunne blive fundet et andet sted i løsningen
Her er scriptet jeg bruger til at pakke filer ud med:
public static void DecompressFiles(String ZipPath, String Destination, String Password)
{
using (ZipInputStream s = new ZipInputStream(File.OpenRead(ZipPath)))
{
if (Password != null && Password != String.Empty)
{
s.Password = Password;
}
ZipEntry entry;
String tmpEntry = String.Empty;
while ((entry = s.GetNextEntry()) != null)
{
String dirName = Destination;
String fileName = Path.GetFileName(entry.Name);
if (dirName != "")
{
Directory.CreateDirectory(dirName);
}
if (fileName != String.Empty)
{
if (entry.Name.IndexOf(".ini") < 0)
{
String FileName = dirName + "\\" + entry.Name;
FileName = FileName.Replace("\\ ", "\\");
String FolderName = Path.GetDirectoryName(FileName);
if (Directory.Exists(FolderName) == false)
{
Directory.CreateDirectory(FolderName);
}
if(filetype==true){
FileStream fStream = File.Create(FileName);
int StreamSize = 2048;
byte[] buffer = new byte[2048];
while (true)
{
StreamSize = s.Read(buffer, 0, buffer.Length);
if (StreamSize > 0)
{
fStream.Write(buffer, 0, StreamSize);
}
else
{
break;
}
}
fStream.Close();}
}
}
}
s.Close();
File.Delete(ZipPath);
}
}
Tusinde tak for hjælp
Venlig hilsen
Jensen2005