>>serafX A co myslis ze sem jako prvni radil? Ono by stacilo si precist diskuzi a pak bys nemusel psat to co uz nekdo napsal... ;)
>>Tom nevim co je na include zrovna u tohoto prikaldu spatneho? Pokud se include pouzije spravne tak v podstate "nic" nehrozi...
nevim, ten include min taky přijde v poho
Bře, myslíte to dobře, ale já se snažím uvažovat trošku dopředu:
příjde amatér, uvidí to a řekne si: "jé, hele, to by mohlo bejt dobrý...", zkopíruje to, narve to na svůj výtvor a potom někde náhodou narazí na $_GET. A jelikož už je profík, protože dělá s PHP, tak to "vylepší" a udělá si dynamickou aplikaci: <?php include $_GET['stranka'].'.php'; ?> a už to jede ...
... co jede, snad nemusím vysvětlovat (viz. gůgl -> PHP injection)
BTW: na nějaké "profi" diskuzi o bezpečnosti PHP sem se dočetl, že tohle (tedy <? include $_GET['stranka']; ?>) se dá zneužít taky, jenom jsem nepochopil jak. Zase nejsem až takový zvíře ;)
No a abych tady jenom nedělal pana důležitýho, tak dodám jednoduchou "opravu" PHP injection:
if(file_exists($_GET['stranka'].'.php')) include $_GET['stranka'].'.php';
else echo 'Stránka neexistuje';
Tom: no to jo, to mas pravdu. ale mi vznikl dojem, ze tvrdis, ze include("soubor.php"), kde se ten parametr include neda zvenku nijak ovlivnit, protoze to je konstanta, je nebezpecna konstrukce. a tomu se mi nejak nechtelo verit. takze tak. mozna bys to mel priste psat jasneji. abys nepojmenovaval terminem "PHP injection" neco, co jim neni. v tomto pripade je to vazne matouci (pro cloveka, ktery nevi, o co jde) nebo minimalne ponekud podivne tvrzeni (pro cloveka, ktery vi, o co jde).
>> on-topic odpověď: težko má smysl pro začátečníka učit se ještě navíc php byď jen jednoduchou funkci...
>> Rellik: [off-toppic odpověď 1]: nenaštval ses doufám...
>> off-topic odpověď 2: když to vezmu kolem a kolem, např. mý stránky: co tam chceš hackovat? Páč tam není co... Dobře, zjištíš třeba, že <? include "složka/menu.php"; ?> a na co ti to bude, když k souboru se nedostaneš... Jediný co mám zaheslovaný je administrace a to je dělaný přes .htaccess a .htpasswd, což mi připadne celkem bezpečný...
Toník: jo, napsal jsem to blbě, uznávám, ale jak jsem poznamenal: někde jsem se dočetl, že i include("soubor.php"), kde vkládáš soubor pevně zadaný do skriptu lze taky jaksi napadnout. Bohužel nejsem zase až tak znalý odborné angličtiny, abych princip pochopil, takže s dalšími informacemi nemohu sloužit.
Mike: <? include "složka/menu.php"; ?> je již jednoduché zabezpečení proti PHP injection, protože pokud bych zadal http://gůgl.kom, tak se ti do stránky vloží obsah Gůglu. Pokud bych zadal http://mujestránky.cz/můj.hack, tak se ti tam vloží můj škodlivý kód a můžu si z tvého webu zjistit celkem dost informací (záleží na "úrovni" kódu). Tohle jsem dělal svým spolužáků na škole - vložil jsem svůj kód , přes který jsem získal přístup k DB a už to jelo. Eh .. tohle je navádění k hackingu!
.htpasswd zabezpečení je dobrý, ale já mám radši svoje výtvory, takže mám celkem složitej systém ověřování (teda teď ne, teď to celý předělávám, aby se mi s tím líp pracovalo) ... =)
>> [ot pokračuje] Tom: jakože nechni aby to vypadalo, že zjišťuju jak hackovat, ale myslím, že to třeba mám ošetřený dobře: proměnná $page mi zežere pouze soubory v konkrétní složce a z konkrétní příponou, a tam kromě .htaccessu a souboru s menu nic jinýho není. {else to načte index} Takže jediný, co se mi povedlo je následující věc - šak se podívej :-) http://djchemo.wz.cz/?page=menu Takže jak tam chceš uploadnout svůj soubor? [/ot končí]
Mike: ale jo, hacking je moderní. Jo, chápeš to dobře, ale hacking je jen o detailech(pokud vynechám Win XP, u kterých jsem byl názorně vyškolen, že ani dobře nastavenej firewall ti nepomůže; <flame>linux rulezz</flame>):
1) Jde o nezabezpečené weby. Tedy ty, keré vytvářejí někteří amatéři a hodně profíků (jsou mezi námi tací, kteří si za takhle děravej web nechají zaplatit). 2) 2) Toto PHP injection je možné jen a pouze na tomto: <? include '$_GET['param']'; ?> a jeho obdobách s $_POST ... . Jakmile vkládáš soubor z podadresáře, nebo kontroluješ existenci přes file_exists(), tak jsi za vodou, a většina hackerů je na tebe krátká. Tudíž jsi vysmátej, tebe se to netýká, ale nedávno jsem se brouzdal po WZ a narazil jsem hned na několik děravých webů (nebudu říkat kterých, stále jsou děravé)
3) Pořád zapomínám, že na WZ nedávno zakázali načítání vzdálených souborů, takže je tento způsob útoku značně omezen (a pak že WZ nemyslí na bezpečnost, že? ;).
4) Poku by jsme se měli bavit o bezpečnosti PHP a MySQL aplikací jako takových, tak PHP injection je taková prskavka. Existují mnohem, mnohem nebezpečnější postupy (běžně praktikované), ale o těch už zde psát odmítám. Jednak je to nadlouho a jednat nechci být linčován za navádění...
>>Mike ne nenastavl... neni proc. :)
Jinak to co resite stejne na WZ nejde pokud si to nepovolite viz tema:
Warning: fopen(): URL file-access is disabled ...
http://www.webzdarma.cz/forum/read.php?f=2&i=35747&t=35747
A myslim ze uz tu resite uuplne neco jineho nez jaky byl puvodne dotaz... A ten znel:
<duraz>
Jak se dělají rámy?pls pomocte mi!
</duraz>
Takze to tu skoncete... ;)
O.K. tak se tu snažíme vysvětlit lepší možnost, než použití rámů.
Dobře: podle mě je nejlepší využít PHP. Pro ty, kteří PHP nerozmí, napíšu jednoduchý základ:
<?php
$dir = 'inc'; /* adresář se soubory */
if(empty($_GET)) include $dir . DIRECTORY_SEPARATOR . 'uvod.html';
elseif(file_exists($_GET['stranka'])) include $dir . DIRECTORY_SEPARATOR . $_GET['stranka'] . '.html';
else header("HTTP/1.0 404 Not Found");
?>
celý to uložte jako index.php a máte v podstatě hotovo ... ;)