Upload script met Chmod 777 map
Hoe kan ik dit beter aanpakken want het feit via een blader knop een plaatje te kunnen uploaden heb ik nodig! Maar moet wel helemaal veilig zijn tegen hackers en virussen..
Kan iemand me dit uitleggen?
Het enige wat CHMOD doet is regelen of iemand lees- en / of schrijfrechten heeft. Je zal het type bestand, de inhoud van het bestand (voor zover mogelijk) moeten controleren bij het uploaden.
Voor het uploaden kan je niets doen, dus je zal daar e.e.a. aan controle in moeten bouwen. Het begint al met een mime-type, (al is die ook te faken!) maar ik geloof dat iemand hier bezig was met iets van een viruscontrole bij upload?
Daarnaast kun je een virusscanner inbouwen, zoals ik hier gedaan heb. Echter heb je dan wel een eigen server nodig.
Kan iemand van buitenaf niets met chmod 777 schrijf en execute rechten zolang hij de ftp gegevens niet heeft?
Dan een laatste vraag hoe check ik op de image afmetingen?
Gewijzigd op 01/01/1970 01:00:00 door arne
En als je slim bent zet je die upload map buiten je webroot.
Arjan Kapteijn schreef op 20.01.2009 17:23:
En als je slim bent zet je die upload map buiten je webroot.
Dat heb ik inderdaad gedaan. En er staat niets anders in de map dan die plaatjes die worden geupload.
Volgens mij is het dan wel redelijk veilig?
Het is toch niet te benaderen buiten het script om?
Gewijzigd op 01/01/1970 01:00:00 door arne
Als je slim bent laat je je huidige script ook even controleren door iemand die er verstand van heeft. Je knikt namelijk wel overal ja op maar voor hetzelfde geld heb je iets verkeerd geintepreteerd. Jij begint namelijk over de bestandsgrootte (aantal MB), ik heb het overal de afbeeldingsgrootte (aantal pixels).
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?
global $_FILES;
$filename_picture1 = $_FILES['picture1']['name'];
$allow[0] = "jpg";
$allow[1] = "gif";
$allow[2] = "bmp";
$allow[3] = "png";
// $allow[3] = "exe"; enz.
$uploadname = $_FILES['picture1']['name'];
$extentie = substr($uploadname, -3);
for ($i = 0; $i < count($allow); $i++)
{
if ($extentie == $allow[$i])
{
$extentie_check = "ok";
$i = count($allow) + 5; // om loop te beindigen
}
}
if ($extentie_check)
{
if (is_uploaded_file($_FILES['picture1']['tmp_name'])) {
move_uploaded_file($_FILES['picture1']['tmp_name'], "uploads/" . $filename_picture1);
?>
global $_FILES;
$filename_picture1 = $_FILES['picture1']['name'];
$allow[0] = "jpg";
$allow[1] = "gif";
$allow[2] = "bmp";
$allow[3] = "png";
// $allow[3] = "exe"; enz.
$uploadname = $_FILES['picture1']['name'];
$extentie = substr($uploadname, -3);
for ($i = 0; $i < count($allow); $i++)
{
if ($extentie == $allow[$i])
{
$extentie_check = "ok";
$i = count($allow) + 5; // om loop te beindigen
}
}
if ($extentie_check)
{
if (is_uploaded_file($_FILES['picture1']['tmp_name'])) {
move_uploaded_file($_FILES['picture1']['tmp_name'], "uploads/" . $filename_picture1);
?>
Dat is het php gedeelte.
Verder gewoon html form met method post en action test.php
Nog iets heel geks. Ik snap niet helemaal ik wil die regel met $uploadname = $_FILES['picture1']['name'];
weghalen en gewoon zorgen dat hij rechtstreeks de bestandsnaam pakt.
Echter als ik dat weghaal en de variabele verderop in het script verander naar $filename_picture1 werkt het niet meer...
Gewijzigd op 01/01/1970 01:00:00 door arne