Síða 1 af 2
Búa til upload server
Sent: Mið 22. Maí 2013 11:51
af mikkidan97
Ég er með tilbúinn server með smf, php, mysql, apache2 og keyrir á ubuntu server 12.04 og mig langar að búa til service fyrir notendur mína (bara með php eða html) þar sem þeir geta uploadað skrám eins og bara avatars, mp3 skrár eða bara eitthvað þannig með max size 25 MB per skrá. Ég er kominn með auðkenningar síðu sem notar MySql database fyrir accounta og ég skrái þá bara nafn og password og notandinn getur loggað sig inn.
Var búinn að prufa
þetta en það virkaði ekki eins og ég vildi hafa það
Öll hjálp vel þegin
Re: Búa til upload server
Sent: Mið 22. Maí 2013 11:56
af Stutturdreki
Væri ekki bara einfaldast að setja upp FTP server?
Re: Búa til upload server
Sent: Mið 22. Maí 2013 12:17
af mikkidan97
Það eru ekki allir sem kunna að nota ftp (því miður)
og ég var búinn að reyna að nota FTP, en það einfaldlega gekk ekki
Re: Búa til upload server
Sent: Mið 22. Maí 2013 12:31
af rango
Bara áður enn við gerum einhvað, Hvernig ertu að setja Passwd í Mysql?
Nr. 1 2 og 3, Hashaðu lykilorðin.
Ekki nota MD5 eða SHA1, Notaðu frekar SHA2, t.d.
Saltaðu svo lykilorðin og þá getum við talað.
Re: Búa til upload server
Sent: Mið 22. Maí 2013 12:43
af mikkidan97
rango skrifaði:Bara áður enn við gerum einhvað, Hvernig ertu að setja Passwd í Mysql?
Nr. 1 2 og 3, Hashaðu lykilorðin.
Ekki nota MD5 eða SHA1, Notaðu frekar SHA2, t.d.
Saltaðu svo lykilorðin og þá getum við talað.
Þetta er allt encryptað í drasl, skil ekki alveg sjálfur hvernig, en mér sýnist það vera annaðhvort SHA1 eða 2
Það er ekki auðkenningin sem ég hef áhyggjur af (atm), heldur hvernig notendurnir geta uploadað skránum þeirra
Re: Búa til upload server
Sent: Mið 22. Maí 2013 12:57
af dori
rango skrifaði:Bara áður enn við gerum einhvað, Hvernig ertu að setja Passwd í Mysql?
Nr. 1 2 og 3, Hashaðu lykilorðin.
Ekki nota MD5 eða SHA1, Notaðu frekar SHA2, t.d.
Saltaðu svo lykilorðin og þá getum við talað.
Stráksi... Hérna notum við bcrypt eða pbkdf2. SHA er crypto hash (hannað til að vera hraðvirkt) en bcrypt og pbkdf2 eru password hash (hönnuð til að taka tíma). Samt hárrétt að salt+hash er nauðsynlegt.
@OP: hvað er það sem virkaði ekki eins og þú vildir hafa það við þetta w3schools dót?
Re: Búa til upload server
Sent: Mið 22. Maí 2013 13:08
af mikkidan97
Það einfaldlega vildi ekki leyfa mér að uploada skrám...
Ef þú vilt prufa sjálfur
http://codw.co.vu/MINE/testÉg bjó til temporary user: vaktin og pass: vaktin123
Re: Búa til upload server
Sent: Mið 22. Maí 2013 13:14
af rango
dori skrifaði:rango skrifaði:Bara áður enn við gerum einhvað, Hvernig ertu að setja Passwd í Mysql?
Nr. 1 2 og 3, Hashaðu lykilorðin.
Ekki nota MD5 eða SHA1, Notaðu frekar SHA2, t.d.
Saltaðu svo lykilorðin og þá getum við talað.
Stráksi... Hérna notum við bcrypt eða pbkdf2. SHA er crypto hash (hannað til að vera hraðvirkt) en bcrypt og pbkdf2 eru password hash (hönnuð til að taka tíma). Samt hárrétt að salt+hash er nauðsynlegt.
Veit vel hvað SHA er og í hvað það var hannað, Enn við getum verið sammála um að SHA2 sé öruggara enn SHA1?
Þetta er alveg hárrétt hjá þér með blowfish, Markmiðið með SHA er ekki strong öryggi, Ég nota bcrypt hjá mér.
Ef einhver vill brjóta SHA eða MD5 er þá er það hægt, Enn þarna ertu bara búinn að reisa rafmagnsgirðingu.
Ég var líka að taka tillit til hans mikka, Algjör óþarfi að segja honum að ekkert nema það besta dugi. Eða mér finst það þó svo að það eigi við í öryggi.
Þegar ég byrjaði að læra þetta þá varð ósaltað MD5 fyrir valinu, Shit happens
Edit, Pastebin af upload_file.php takk.
Re: Búa til upload server
Sent: Mið 22. Maí 2013 13:17
af mikkidan97
Pastebin? o.O
Kóði: Velja allt
<?php
$allowedExts = array("gif", "jpeg", "jpg", "png", "mp3");
$extension = end(explode(".", $_FILES["file"]["name"]));
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/pjpeg")
|| ($_FILES["file"]["type"] == "image/x-png")
|| ($_FILES["file"]["type"] == "image/png")
|| ($_FILES["file"]["type"] == "audio/mp3"))
&& ($_FILES["file"]["size"] < 100000000)
&& in_array($extension, $allowedExts))
{
if ($_FILES["file"]["error"] > 0)
{
echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
}
else
{
echo "Upload: " . $_FILES["file"]["name"] . "<br>";
echo "Type: " . $_FILES["file"]["type"] . "<br>";
echo "Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br>";
if (file_exists("upload/" . $_FILES["file"]["name"]))
{
echo $_FILES["file"]["name"] . " already exists. ";
}
else
{
move_uploaded_file($_FILES["file"]["tmp_name"],
"upload/" . $_FILES["file"]["name"]);
echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
}
}
}
else
{
echo "Invalid file";
}
?>
Re: Búa til upload server
Sent: Mið 22. Maí 2013 13:24
af Stutturdreki
Kóði: Velja allt
Upload: 28a8ab85ff6a1436d03e9d198c6f202923f1b674_full.jpg
Type: image/jpeg
Size: 3.734375 kB
Temp file: /tmp/phpxtyGlI
Stored in: upload/28a8ab85ff6a1436d03e9d198c6f202923f1b674_full.jpg
Kom engin villa?
Re: Búa til upload server
Sent: Mið 22. Maí 2013 13:26
af mikkidan97
Hvar ætti að koma villa?
Re: Búa til upload server
Sent: Mið 22. Maí 2013 13:30
af rango
mikkidan97 skrifaði:Pastebin? o.O
Kóði: Velja allt
<?php
$allowedExts = array("gif", "jpeg", "jpg", "png", "mp3");
$extension = end(explode(".", $_FILES["file"]["name"]));
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/pjpeg")
|| ($_FILES["file"]["type"] == "image/x-png")
|| ($_FILES["file"]["type"] == "image/png")
|| ($_FILES["file"]["type"] == "audio/mp3"))
&& ($_FILES["file"]["size"] < 100000000)
&& in_array($extension, $allowedExts))
{
if ($_FILES["file"]["error"] > 0)
{
echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
}
else
{
echo "Upload: " . $_FILES["file"]["name"] . "<br>";
echo "Type: " . $_FILES["file"]["type"] . "<br>";
echo "Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br>";
if (file_exists("upload/" . $_FILES["file"]["name"]))
{
echo $_FILES["file"]["name"] . " already exists. ";
}
else
{
move_uploaded_file($_FILES["file"]["tmp_name"],
"upload/" . $_FILES["file"]["name"]);
echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
}
}
}
else
{
echo "Invalid file";
}
?>
Ja eða þú veist orðatiltak, Getur allt eins renamað í .php.txt
villtu setja fyrir mig
rétt fyrir ofan
Kóði: Velja allt
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/pjpeg")
|| ($_FILES["file"]["type"] == "image/x-png")
|| ($_FILES["file"]["type"] == "image/png")
|| ($_FILES["file"]["type"] == "audio/mp3"))
&& ($_FILES["file"]["size"] < 100000000)
&& in_array($extension, $allowedExts))
ég fæ
Kóði: Velja allt
array(1) { ["file"]=> array(5) { ["name"]=> string(10) "Status.png" ["type"]=> string(9) "image/png" ["tmp_name"]=> string(24) "G:\xampp\tmp\php7BC1.tmp" ["error"]=> int(0) ["size"]=> int(251893) } } Upload: Status.png
Þessi if function er að feila og því kemur Invalid file.
Re: Búa til upload server
Sent: Mið 22. Maí 2013 13:33
af dori
Má ég giska á permission villur?
Also, það er góður siður að geyma skjöl sem eru send inn ekki til hliðar við scipturnar þínar (þú vilt ekki leyfa einhverjum að uploada skrá.php, keyra hana og ná að taka yfir vefþjóninn þinn). Það er líka sniðugt að búa til nýtt nafn fyrir skjöl sem eru send inn (md5 summa af skjalinu + .ext virkar ágætlega í það) og að hafa fall sem býr til slóðina á skránna og setja í breytu (t.d. get_filename("einhver-mynd.jpg") -> "/afvikinn/staður/b861d3166e5b360b60e2325d5fc971a8.jpg") og nota þá breytu alls staðar í stað þess að vera með "upload/" . $name á mörgum stöðum (býr til hættu á villum).
Re: Búa til upload server
Sent: Mið 22. Maí 2013 13:36
af mikkidan97
dori skrifaði:Má ég giska á permission villur?
Also, það er góður siður að geyma skjöl sem eru send inn ekki til hliðar við scipturnar þínar (þú vilt ekki leyfa einhverjum að uploada skrá.php, keyra hana og ná að taka yfir vefþjóninn þinn). Það er líka sniðugt að búa til nýtt nafn fyrir skjöl sem eru send inn (md5 summa af skjalinu + .ext virkar ágætlega í það) og að hafa fall sem býr til slóðina á skránna og setja í breytu (t.d. get_filename("einhver-mynd.jpg") -> "/afvikinn/staður/b861d3166e5b360b60e2325d5fc971a8.jpg") og nota þá breytu alls staðar í stað þess að vera með "upload/" . $name á mörgum stöðum (býr til hættu á villum).
Á íslensku takk
Re: Búa til upload server
Sent: Mið 22. Maí 2013 13:39
af dori
Eitthvað svona (ef þú ert á linux vél)
cd /www/mikkidan/MINE
chown www-data:www-data uploads
chmod 755 uploads
Augljóslega aðlaga slóð/username/groupname að því sem þú hefur á þínu kerfi.
Re: Búa til upload server
Sent: Mið 22. Maí 2013 13:42
af rango
dori skrifaði:Má ég giska á permission villur?
Also, það er góður siður að geyma skjöl sem eru send inn ekki til hliðar við scipturnar þínar (þú vilt ekki leyfa einhverjum að uploada skrá.php, keyra hana og ná að taka yfir vefþjóninn þinn). Það er líka sniðugt að búa til nýtt nafn fyrir skjöl sem eru send inn (md5 summa af skjalinu + .ext virkar ágætlega í það) og að hafa fall sem býr til slóðina á skránna og setja í breytu (t.d. get_filename("einhver-mynd.jpg") -> "/afvikinn/staður/b861d3166e5b360b60e2325d5fc971a8.jpg") og nota þá breytu alls staðar í stað þess að vera með "upload/" . $name á mörgum stöðum (býr til hættu á villum).
Ef þetta væri permission villi væri það þá ekki einhvað tengt move_uploaded_file()?
Kóði: Velja allt
Superlongif(){
Moves and shit
}
else
{
echo "Invalid file";
}
Mig grunar $extension ef að $_FILES er ekki empty.
Og ég er 100% sammála þér með Md5, Og t.d. hafa upload í './'
meðan htdocs er í './htdocs/'
mikkidan97 skrifaði:Á íslensku takk
Keyrðu það sem ég sagði þér að keyra takk, Þetta er annars íslenska.
Google translate sannar munin
May I guess Permission errors?
Also, it is good practice to store documents that are not submitted to the side of scipts (you do not want to allow someone to upload skrá.php, run, and manage to take over your server). It's also a good idea to create a new name for the documents that are filed (md5 sum of the file +. Ext works pretty well in it) and have a function that creates a path to the file and set the variable (eg get_filename ("some-image . jpg ") ->" / afvikinn/staður/b861d3166e5b360b60e2325d5fc971a8.jpg ") and use that variable everywhere instead of being a" upload / ". $ name in many places (creates a risk of errors).
Re: Búa til upload server
Sent: Mið 22. Maí 2013 13:45
af Stutturdreki
mikkidan97 skrifaði:Hvar ætti að koma villa?
Ef það tókst ekki að uploada skránni hefði maður búist við villu. Miðað við skilaboðin sem ég fékk og php skriptið þá tókst þetta fullkomnlega.
Re: Búa til upload server
Sent: Mið 22. Maí 2013 13:48
af dori
Ég var að giska á að þetta væri tengt move_uploaded_file. Ég hef ekki hugmynd um hvernig sú aðgerð hegðar sér en ég man eftir skrýtnum og leiðinlegum vandamálum með PHP og upload og illa stillt permissions.
Re: Búa til upload server
Sent: Mið 22. Maí 2013 13:55
af Stutturdreki
move_uploaded_file() skilar bool en það er ekki notað í þessu php scripti til að athuga hvort sú aðgerð tókst yfir höfuð (
http://php.net/manual/en/function.move-uploaded-file.php).
Myndi byrja á að setja eitthvað eins og:
Kóði: Velja allt
if(move_uploaded_file($_FILES["file"]["tmp_name"],"upload/" . $_FILES["file"]["name"])) {
echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
} else {
echo "access denied";
}
Re: Búa til upload server
Sent: Mið 22. Maí 2013 14:13
af mikkidan97
rango skrifaði:villtu setja fyrir mig
rétt fyrir ofan
Kóði: Velja allt
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/pjpeg")
|| ($_FILES["file"]["type"] == "image/x-png")
|| ($_FILES["file"]["type"] == "image/png")
|| ($_FILES["file"]["type"] == "audio/mp3"))
&& ($_FILES["file"]["size"] < 100000000)
&& in_array($extension, $allowedExts))
[/quote]
Gerði það og fékk:
Kóði: Velja allt
array(5) { ["name"]=> string(12) "Capture1.PNG" ["type"]=> string(9) "image/png" ["tmp_name"]=> string(14) "/tmp/phpPChAoF" ["error"]=> int(0) ["size"]=> int(909) } Invalid file
Hvernig er hægt að fixa þetta?
Re: Búa til upload server
Sent: Mið 22. Maí 2013 14:33
af dori
"PNG" er ekki það sama og "png" þarft að nota
strtolower á $extension.
Re: Búa til upload server
Sent: Mið 22. Maí 2013 15:07
af mikkidan97
Er ekki hægt bara að búa til scriptu sem leyfir alla extensiona en blockar þá sem ég segi henni að blocka (php, html, etc..)?
Re: Búa til upload server
Sent: Mið 22. Maí 2013 15:10
af dori
Það er hægt en ætti að vera augljóst að þú vilt ekki gera slíkt. Leyfðu bara takmarkað set og settu logg færslu ef þú bannar eitthvað. Þannig geturðu fylgst með loggunum og séð hvort það sé eitthvað sem þú ættir að leyfa.
Re: Búa til upload server
Sent: Mið 22. Maí 2013 15:15
af mikkidan97
dori skrifaði:Það er hægt en ætti að vera augljóst að þú vilt ekki gera slíkt. Leyfðu bara takmarkað set og settu logg færslu ef þú bannar eitthvað. Þannig geturðu fylgst með loggunum og séð hvort það sé eitthvað sem þú ættir að leyfa.
Ég kann eiginlega ekkert á php scripting...
Er ekki hægt að fá einhvern til að skrifa svona fyrir sig frítt?
Re: Búa til upload server
Sent: Mið 22. Maí 2013 15:28
af dori
mikkidan97 skrifaði:dori skrifaði:Það er hægt en ætti að vera augljóst að þú vilt ekki gera slíkt. Leyfðu bara takmarkað set og settu logg færslu ef þú bannar eitthvað. Þannig geturðu fylgst með loggunum og séð hvort það sé eitthvað sem þú ættir að leyfa.
Ég kann eiginlega ekkert á php scripting...
Er ekki hægt að fá einhvern til að skrifa svona fyrir sig frítt?
Yfirleitt er ekki hægt að fá neinn til að gera neitt fyrir sig frítt. Værir þú til í að koma og mála húsið mitt frítt?
Prufaðu þetta annars. Ætti að vera meira verbose og láta þig vita hvað það er sem gerist ekki.
Kóði: Velja allt
<?php
const UPLOAD_PATH = "upload/";
$allowedExts = array("gif", "jpeg", "jpg", "png", "mp3");
$allowedMimes = array("image/gif", "image/jpeg", "image/jpg", "image/pjpeg", "image/x-png", "image/png", "audio/mp3");
$maxSize = 100000000;
function get_extension($filename)
{
return strtolower(end(explode(".", $filename)))
}
function get_file_path($file)
{
return UPLOAD_PATH . md5_file($file["tmp_name"]);
}
$extension = get_extension($_FILES["file"]["name"]);
$mime = $_FILES["file"]["type"];
$size = $_FILES["file"]["size"];
if (!in_array($mime, $allowedMimes))
{
echo "Restricted mime type: " . $mime;
}
elseif ($size > $maxSize)
{
echo "File too big (max size " . $maxSize . "): " . $size;
}
elseif (!in_array($extension, $allowedExts))
{
echo "Restricted extension: " . $extension;
}
else
{
if ($_FILES["file"]["error"] > 0)
{
echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
}
else
{
$path = get_file_path($_FILES["file"]);
echo "Upload: " . $_FILES["file"]["name"] . "<br>";
echo "Type: " . $_FILES["file"]["type"] . "<br>";
echo "Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br>";
echo "Dest path: " . $path;
if (file_exists($path))
{
echo $path . " already exists. ";
}
else
{
if(move_uploaded_file($_FILES["file"]["tmp_name"], $path))
{
echo "Stored " . $_FILES["file"]["name"] . " in: " . $path;
}
else
{
echo "Couldn't upload " . $_FILES["file"]["name"];
}
}
}
}
else
{
echo "Invalid file";
}
?>
Btw. ég hef ekki keyrt þetta, kannski virkar þetta ekki einu sinni. Mörg ár síðan ég fiktaði eitthvað í php af viti.