Autor Zpráva
Martin02
Profil
Ahoj,
když mám v databázi uloženou nějakou stránku včetně html a php, jak mám udělat aby v určitém souboru byla tato stránka, která je v mysql? Mám na mysli, když použiju příkaz echo, vypíše se php kód, ale já potřebuji php kód provést. Jak na to?

Děkuji
_es
Profil
Martin02:
mám v databázi uloženou nějakou stránku včetně html a php
To asi nie je dobrý nápad. Ale keď už, tak môžeš použiť eval.
joe
Profil
Martin02:
ale já potřebuji php kód provést
Proč to potřebuješ? Není to vůbec správné řešení.
Str4wberry
Profil
Zrovna v tomto případě může být použití této funkce namístě. Pokud bych například v DB chtěl mít uložené články, ve kterých chci používat PHP, tak to může být relativně vhodný způsob.
joe
Profil
Str4wberry:
uložené články, ve kterých chci používat PHP
Nenapadá mě k něčemu takovému žádný důvod.

A vidím v tom také bezpečnostní riziko v případě napadení databáze.
Str4wberry
Profil
Co třeba, kdybys v rámci článku chtěl používat proměnné? Nebo nějaké „makro“? Třeba bys na dané stránce chtěl ukazovat svůj aktuální věk, jak bys to řešil?

A vidím v tom také bezpečnostní riziko v případě napadení databáze.
Pokud myslíš napadení s možností úprav, tak to už je průser i bez možnosti tam zapsat vlastní PHP kód, takže toto situaci až tolik nezhorší.
joe
Profil
Str4wberry:
jak bys to řešil?
Třeba přes nějaké vlastní tagy, různého označení v textu, apod., například tedy:


Začátek obsahu, dál bude pokračovat výpis nějakého makra (věk): <str4wberry:age birthday="22.8.2012" />

eval je ale jinak daleko jednodušší cesta.

Pokud myslíš napadení s možností úprav
Myslel jsem třeba jen přístup do databáze, mně by se pak nelíbilo, kdyby mi třeba někdo takto smazal veškeré soubory na webu (což s plným přístupem může udělat samozřejmě také).
Alphard
Profil
No nevím, počítat svůj věk v rámci tuctového článku snad není běžný příklad z praxe. Také by se mi to asi nelíbilo, veškerý kód chci mít v rámci filesystému, verzovaný a pod kontrolou.
Určitě existují situace, kdy je potřeba nacpat doprostřed článku nějakou komponentu (fotogalerie, anketa, ...) ale také bych se to snažil řešit nějakým vlastním tagem.

U velkých publikačních systémů asi bude existovat možnost z administrace přidávat makra a nejvhodnější uložiště zřejmě bude databáze, ale aspoň bych je oddělil a v článku jen volal.
Str4wberry
Profil
Co třeba možnost matematických výpočtů? Odpočítávání nějaké akce. Podmínka pro oslovení nových × stávajících návštěvníků? Trochu jiný text ráno/večer, v létě/zimě atd. Jasně, nic tuctového to není. Právě proto může být řešení s vlastními tagy (pseudokódem) nebo komponentami — zvláště pro věci, co se použijí typicky jen pro jednu jedinou stránku — kanón na vrabce (koneckonců se potom stejně nejspíš použije ten eval).

Jak to myslíš, joe, pokud mám přístup do DB pouze ke čtení, jak mi viditelnost skriptu pro výpočet věku v článku pomůže smazat soubory? :–)
joe
Profil
Str4wberry:
pokud mám přístup do DB pouze ke čtení
Nepsal jsem o přístupu pouze ke čtení ;-) To pak je samozřejmě k "ničemu", ale akorát to bude nutit případného útočníka najít onen přístup, který by mu vyhovoval a o to víc ho bude lákat útok :-)

Co třeba ...
Ve tvém výčtu jsem nenašel nic, na co by třeba ty "mé" makra nešly použít a jako "kanón na vrabce" (tohle jsem poslední dobou slyšel mnohokrát a kolikrát to bylo vyřčeno na jednu z vhodných implementací problému a tak mi to přišlo docela vtipné) mi to opravdu moc nepřijde, zvlášť když to je věc, která se může hodit kdykoli.

koneckonců se potom stejně nejspíš použije ten eval
Proč myslíš, že by se měl použít?
Str4wberry
Profil
Tak to už mi jako reálné zvýšení hrozby nepřijde.

Výčet byl jako ilustrace „proč vůbec podobné skopičiny umožnit“. Nikoliv jako příklad, co pomocí maker neuděláš.

Použít eval samozřejmě nemusíš — můžeš si jednotlivé části PHP z DB kešovat do PHP souborů, napsat si vlastní překladač pseudokódu atd. Osobně ale nevidím důvod se této funkci za každou cenu vyhýbat, protože je prostě špatná.

Ad kanón na vrabce – to je pochopitelně případ od případu. Pokud by se potřebné části skriptů hodně opakovali*, můžou se vyplatit ty makra, jinak v napsání poměrně rozsáhlého systému na tvorbu maker nevidím až tak velkou přidanou hodnotu oproti evalu.

*) Nebo ty již existující by měl používat méně zkušený uživatel.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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