Autor | Zpráva | ||
---|---|---|---|
samotar Profil |
#1 · Zasláno: 3. 4. 2007, 14:15:48
cus all
mam třeba stranky www.neco.cz tam soubot index.php a v něm include ($_GET["show"]); (zkrácený zápis bez ošéfování že show není nastaveno atd at je to prehledne) pak kliknu na odkaz třeba www.neco.cz/index.php?show=stranka.php a stránka sa mi includne do indexu a oco mi de? on take uživatel može dat www.neco.cz/stranka.php a stranka.php sa mu zobrazi neznáte funkci nebo parametr v nastavení php serveru aby tomuto šlo zabránit jak je třebas tu www.adamslo.net i jinde? děkuju |
||
Timy Profil |
#2 · Zasláno: 3. 4. 2007, 14:19:29
třeba takhle:
$jsme_na_strance=true; include ($_GET["show"]); a v každé stránce: if($jsme_na_strance) //vypsat stránku else //poslat do háje |
||
hamstet Profil * |
#3 · Zasláno: 4. 4. 2007, 11:22:49
Nebo takhle:
odkaz bude www.neco.cz/index.php?show=stranka $prefix = "includes/" $postfix = "post.inc" include ($prefix.$_GET["show"].$postfix); Soubor musí mít jméno strankapost.inc a být v podřízeném adresáři includes. Fór je v tom, že uživatel nevidí úplný název a tak si ho ani nemůže vyvolat. Případně se zakáže do inludes přístup http uživatelům (PHP tam může) pomocí httpacces. |
||
DoubleThink Profil * |
#4 · Zasláno: 4. 4. 2007, 12:35:31
include ($_GET["show"])
Uaaa.... |
||
Timy Profil |
#5 · Zasláno: 4. 4. 2007, 12:42:50
DoubleThink
"(zkrácený zápis bez ošéfování že show není nastaveno atd at je to prehledne)" Předpokládal jsem z toho, že to má "ošefované" správně... |
||
roberta Profil |
#6 · Zasláno: 4. 4. 2007, 12:44:54
Uaaa....
tiež mi napadlo presne to isté... samotar include ($_GET["show"]); toto je príklad, ako umožniť nepovolaným osobám robiť si s tvojím webom čokoľvek |
||
samotar Profil |
#7 · Zasláno: 4. 4. 2007, 13:04:08
mno a tomu chcu prave zabranit ?=)
|
||
Timy Profil |
#8 · Zasláno: 4. 4. 2007, 13:08:49
samotar
Ne, ty chceš zabránit něčemu jinému. Zkus si na stránce tenhle kód: www.neco.cz/index.php?show=http://google.com pokud to nemáš ošetřené, naincluduje ti to tam google, což rozhodně není dobře |
||
samotar Profil |
#9 · Zasláno: 4. 4. 2007, 16:12:43
dobře zkusil sem to vyřešit pomoci session
když sme na stránce index tak session existuje a má hodnotu true do includované stránky akorát vložím funkci aby otestovala exitenci session a její hodnotu to už by z hlediska bezpečnosti podle vás šlo? |
||
Timy Profil |
#10 · Zasláno: 4. 4. 2007, 16:19:53
samotar
já používám něco takového: include "./".$stranka.".php"; kde $stranka je obsah z $_GET["page"], navíc kontroluji, jestli $page neobsahuje nedovolené znaky (resp. kontroluji, zda se skládá jen ze znaků a-z0-9 a pomlčky a podtržítka). Pokud neprojde regulárním výrazem, přiřadím $stranka=404 a zobrazím chybovou stránku, že stránka neexistuje. |
||
tiso Profil |
#11 · Zasláno: 4. 4. 2007, 16:31:21
Timy - ešte Ti tam chýba kontrola existencie súboru cez file_exist(), prípadne robiť kontrolu platnosti názvu cez in_array()
|
||
Ssob Profil |
#12 · Zasláno: 4. 4. 2007, 17:47:54
ja pouzivam:
projde pres to neco co neni na mem serveru? |
||
samotar Profil |
#13 · Zasláno: 4. 4. 2007, 19:46:16
dikes všem za rady :))
|
||
DoubleThink Profil * |
#14 · Zasláno: 6. 4. 2007, 19:33:18
Koncepce, kde se includuji soubory podle vnějšího parametru je špatná koncepce. Z hlediska bezpečnosti, ale hlavně škálovatelnosti je lepší to dělat obráceně - do proměnlivých souborů vkládat uniformní.
Ssob ja pouzivam:... Máš štěstí, že file_exists nepodporuje http:// ani php://input wrapper, ale i tak jde nalistovat libovolný php soubor z tvého webu (kam až open_basedir dovolí) - tedy včetně sebe samého a zacyklení. |
||
tiso Profil |
#15 · Zasláno: 6. 4. 2007, 19:37:29
DoubleThink - súhlasím, používam...
|
||
Ssob Profil |
#16 · Zasláno: 6. 4. 2007, 19:47:13
DoubleThink
děkuji, na to jsem nemyslel. Jinak mohl bys mi trochu přiblížit cos myslel tim: do proměnlivých souborů vkládat uniformní. ? Nepochopil jsem to.. Díky |
||
Ssob Profil |
#17 · Zasláno: 6. 4. 2007, 19:48:23
včetně sebe samého a zacyklení
hehe praktická ukázka: http://autodoprava.hu.cz/index.php?page=index |
||
Časová prodleva: 5 dní
|
|||
DoubleThink Profil * |
#18 · Zasláno: 11. 4. 2007, 10:06:31 · Upravil/a: DoubleThink
Nepochopil jsem to
Místo index.php?page=kontakt je lepší použít kontakt.php, do kterého bude vložena hlavička a patička. Nesporná výhoda je v tom, že máš na každé stránce pod kontrolou začátek scriptu (začátek výstupu). Můžeš tedy měnit hlavičky, startovat session atd. Taky můžeš snadno připojit další "knihovny" s funkcemi nebo třídami na stránce, kde jsou třeba. |
||
Ssob Profil |
#19 · Zasláno: 11. 4. 2007, 17:37:27
DoubleThink
Diky. Uz mi to je jasne. Ovsem jestli se nemylim tak php stroji je jedno kde pripojim "knihovny" s funkcemi nebo třídami. To znamena ze to include muze byt klidne uprostred nebo nakonci cele stranky. To mi dovoluje pripojit knihovny primo v souboru, ktery slouzi jako obsah. Ale uznavam, ze kdyz chci zmenit hlavicku jenom pro konkretni obsah tak je vyhodnejsi pouzit Tvuj zpusob. Diky |
||
Časová prodleva: 17 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0