webForumDet fria alternativet

Osäkert att använda file_get_contents, file_put_contents, copy? Alternativ?

PHP

2 svar · 1 299 visningar · startad av xtreme

Medlem sedan juli 20002 056 inlägg
Frågan#1

Jag behöver hämta bilder från en annan server (mitt eget Amazon S3 konto) och lägga på min serven där jag har min webbsida. Med PHP kan man använda

copy('http://img.youtube.com/vi/Rz8KW4Tveps/1.jpg', APP . '/tmp/imgID.jpg');

Eller

$image = file_get_contents("http://img.youtube.com/vi/Rz8KW4Tveps/1.jpg");
file_put_contents("imgfolder/imgID.jpg", $image);

Mitt webbhotell har dock detta avstängt som standard med motiveringen att det är en säkerhetsrisk och som standard avstängt i PHP 5.x. Jag kan dock slå på det i min php.ini.

Hur stor säkerhetsrisk är det om jag slår på det? Vad finns för säkerhetsrisk? Vad är mina alternativ?

Medlem sedan jan. 2005953 inlägg
#2

En säkerhetsrisk med file_get_contents är att om man hämtar sökvägen som ska öppnas från användardata - speciellt om man inte kontrollerar användardatat - så kan användaren då komma åt samtliga filer på servern som PHP har åtkomsträttigheter till.

Följande kod är alltså inte säker alls:

<?php echo file_get_contents($_GET['url']); ?>
Medlem sedan juni 2012581 inlägg
#3

file_get_contents() innebär inga säkerhetsrisker om det används på "rätt" sätt.
Om du aldrig har med användardata som argument så behöver du absolut inte oroa dig.

252 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)