Medlem
|
|
Reg.datum: Sep 2008
Inlägg: 189
|
|
Medlem
Reg.datum: Sep 2008
Inlägg: 189
|
Hindra att farliga filer laddas upp.
Hej
Jag har hittat en kod, som jag länkar till med popup, och då körs nedan kod.
Den har två funktioner.
1) Välja en fil att ladda upp.
2) Ladda upp filen.
Jag har med hjälp av session id kunskap att veta vem som laddar upp.
Tanken är att ladda upp bilder, txt eller pdf typ.
Min fråga:
Hur kan jag se till att ingen laddar upp dåliga saker såsom .exe fil eller annan fil ändelse som ökar sårbarheten.
PS. det finns säkert kod, som är helt onödig, men dräller kvar. ska ta bort post senare kanske.
Jag hade lite strul att hitta lösning, innan jag km att tänka på session. DS.
Tack, Glad Påsk!
/ Tony
<?php
session_start();
if(!session_is_registered(myusername)){
header("location:main_login.php");
}
$myusername = $_SESSION['myusername'];
echo "session:$myusername !";
?>
<html><form enctype="multipart/form-data" action="uploader.php" method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="100000" />
<input type="hidden" name="laddaupp" value="laddatupp" />
<?php echo "<input type='hidden' name='myusername' value=$myusername>"; ?>
Choose a file to upload: <input name="uploadedfile" type="file" /><br />
<input type="submit" value="Upload File" />
</form>
<?php
// Where the file is going to be placed
$target_path = "uploads/";
/* Add the original filename to our target path.
Result is "uploads/filename.extension" */
$target_path = $target_path . basename( $_FILES['uploadedfile']['name']);
$target_path = "uploads/";
$target_path = $target_path . basename( $_FILES['uploadedfile']['name']);
if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) {
$host="xxxxxxx";
$username="xxxxxx"; $password="xxxxxx";$db_name="xxxxxxxx";
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
$sql6="INSERT INTO xxx_tabell (kolumn1, kolumn2, kolumn3) VALUES ('foto', '$myusername', '".basename( $_FILES['uploadedfile']['name'])."')";
$result6=mysql_query($sql6) or die("Kunde inte hitta attribut.");
echo "Filen ". basename( $_FILES['uploadedfile']['name']).
" har laddats upp";
} else{
echo "There was an error uploading the file, please try again!";
}
?>
Senast redigerad av TonyL den 2010-04-01 klockan 10:28
|