Autor Zpráva
Erwinero
Profil
Je php príkaz unlink možnou verziou hacku. Skúšal som to, a keď som taký príkaz dal do svojej návštevnej knihy, vymazalo mi to daný súbor.
Dá sa proti tomu brániť?
Keeehi
Profil
Erwinero:
Dá sa proti tomu brániť?
Ano, nesmíš dovolit, aby někdo neoprávněný mohl spustit tuto funkci.
Augustus
Profil
Keeeihi, ale to sa dá rýchlo obísť.
Zadáš adresu ochranného súboru (alebo premennej) , a potom ťa to prehodí na normálnu časť a už to zapisuješ.
Alebo tam dáš ssesions.
Nox
Profil
To je snad možný jen když používáš eval(), ne? Aspoň vidiš, že to dělat nemáš ;)
Keeehi
Profil
Augustus:
A mohl by jsi uvést konkrétní příklad? Na to jsem opravdu moc zvědavý.
Darker
Profil
Doporučuju s daty z návštěvní knihy pracovat přes file_get_contents() a file_put contents().
Pak nic nehrozí.
Keeehi
Profil
Ona ani funkce unlink není strašná ani nebezpečná. Jen se k ní musí pustit jen ti oprávnění.
Darker
Profil
No a jak bys to zaonačil, aby některý phpskript unlinkovat mohl a jiný ne?
Keeehi
Profil
Darker:
Teď tě nějak nechápu, proč by jeden mohl a jiný ne. A jestli myslíš to ošetření práv tak nějak takto:
<?php
$user_id // v této proměnné předpokládám id přihlášeného uživatele

// když je uživatel administrátor, bude mít v DB v právech 1, pokud to administrátor není, tak 0
$result=mysql_query("SELECT prava FROM uzivatele WHERE id=$user_id");

if(mysql_result($result,0)==1){ 
  unlink("historie.txt");
}

?>
TomášK
Profil
Nejde jen o funkci unlink, pokud může skript manipulovat se soubory, mohl by např. zpřístupnit z webu zdrojové kódy, ve kterých pravděpodně bude heslo k databázi a určitě páchat i spoustu dalšího zla. Spouštění cizích skriptů je nebezpečné - při troše neopatrnosti/neznalosti může snadno skončit dírou v systému. Řešení je mít nastavená práva na souborech (všech v systému) a spouštět skripty jen s takovými právy, které mají mít.
Darker
Profil
No já jsem předpokládal, že jeho NK má tu díru, že vkládá obsah pomocí include a umožňuje tak spouštění skriptů které někdo zvenčí přidal...
Keeehi
Profil
Darker:
má tu díru, že vkládá obsah pomocí include
V include není žádná díra. Je spousta webů, kde je include (a podobné) použito, přesto problém se zabezpečením nemají. Záleží jen na programátorovi, jak si umí vstupy ošetřit. Třeba se dá název souboru kontrolovat oproti nějakému whitelistu, nebo udělat něco takového:

index.php?page=druha
<?php
$page=preg_replace("~[^a-zA-Z0-9]~","",$_GET["page"]);

if(file_exists("/include/$page.php"))
  include("/include/$page.php");
else
  include("/include/404.php");
?>

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: