Autor | Zpráva | ||
---|---|---|---|
tester Profil * |
#1 · Zasláno: 7. 3. 2016, 21:16:32
Mám takový problém a nevím jak ho vyřešit. v souboru index.php se includuje toto:
include_once C::PATH.'/header.php'; if(O::SMALL_INDEX) include_once C::PATH.'/templates/'.C_TEMP.'/sindex.php'; else include_once C::PATH.'/templates/'.C_TEMP.'/index.php'; include_once C::PATH.'/footer.php'; když všechny ty řádky zakomentuju a nechám jen tento: include_once C::PATH.'/templates/'.C_TEMP.'/index.php'; tak z adresáře s templatem kde mám tento zkušební kód: <?php if(!defined("C::URL")) die('No acces'); ?><?die("kuk");//if($d->isAccess(O::OPTIONS_TEMPLATE)) { ?> <?die("kuk");//if($d->isAccess(O::OPTIONS_TEMPLATE)) { ?> Netuším jak to řešit. Jedu dočasně na staré verzi php a nevím jestli to s tím souvisí, ale aplikace kdysi jela na tuto starou verzi tak by snad měla fungovat. Mám něco špatně nastavené v php konfigu? WAMP5 1.6.6 release Posted by: collection (---.vnn.vn) Date: November 03, 2006 02:28PM Download : [sourceforge.net] WAMP5 1.6.6 - PHP 5.2.0 |
||
Keeehi Profil |
#2 · Zasláno: 7. 3. 2016, 21:49:08
zkus
<?php die("kuk"); ... |
||
tester Profil * |
#3 · Zasláno: 8. 3. 2016, 02:41:47
die("kuk"); vygeneruje "kuk" a jinak prazdnou stranku. Staci pouzit die; před nebo za tím prvním blokem php.
<?php if(!defined("C::URL")) die('No acces'); ?>die; V dalším bloku kde je podmínka <?if($d->isAccess(O::OPTIONS_TEMPLATE)) {?> když dám toto: <?die; if($d->isAccess(O::OPTIONS_TEMPLATE)) {?> tak vidím toto: 1 prázdný řádek (nejspíš \r\n) a <?die; if($d->isAccess(O::OPTIONS_TEMPLATE)) {?> |
||
tester Profil * |
#4 · Zasláno: 8. 3. 2016, 07:24:28
Když sleduju hlavičky tak zjišťuji toto:
první hlavička, soubor "/" v pořádku: accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Další dvě hlavičky "soubor" je "...php kód..." accept:image/png,image/*;q=0.8,*/*;q=0.5 accpet-encoding:gzip, deflate další hlavička je soubor img.php hlavička požadavku: accept:image/png,image/*;q=0.8,*/*;q=0.5 accept-encoding:gzip, deflate chápu to teda tak, že apache neumí interpretovat danou část kódu jako php a domnívá se že je to obrázek... Ale nevím jak to vyřešit. |
||
Joker Profil |
#5 · Zasláno: 8. 3. 2016, 07:47:21
tester:
„die("kuk"); vygeneruje "kuk" a jinak prazdnou stranku.“ Čili se kód interpretuje správně. „chápu to teda tak, že apache neumí interpretovat danou část kódu jako php a domnívá se že je to obrázek“ Ne. Hlavičky accept říkají, co preferuje prohlížeč. |
||
Keeehi Profil |
#6 · Zasláno: 8. 3. 2016, 09:11:28
Tak znovu, jakýkoliv PHP kód uvozuj
<?php a ničím jiným. <?die je špatně, použij <?php die
Je možné, aby pro označení PHP kódu fungovalo i jen <? . Je však mnohem bezpečnější používat o jen 3 znaky delší <?php
|
||
tester Profil * |
Keeehi:
To jsem zkoušel dát místo <? to <?php ale nefungoval mi ten kód to pak píše Parse error: parse error, unexpected $end in ...\templates\sun\index.php on line 491 Ještě jsem zapomněl napsat že v hlavičce která přichází jak odpověď je chybně vyplněná hlavička je tam jméno konstanty místo její hodnota: C_CHARSET ... To jsem zjistil dnes v noci. V souboru s options přitom není žádný C_CHARSET , tato konstanta by se měla definovat v jazykovém souboru např. v cs.php je define('C_CHARSET', 'UTF-8'); |
||
Keeehi Profil |
#8 · Zasláno: 8. 3. 2016, 20:01:59
tester:
Ta chyba je jasná. Dosáhl jsi svého - PHP kód se začal interpretovat. Ti jsi chtěl. Jen je tam další problém který je potřeba vyřešit, ale původní je úspěšně vyřešen. Problém je v tom, že PHP došlo na konec souboru ale nečekalo hi tak brzo. Třeba mu tam chybí uzavřená nějaká závorka na kterou pořád čeká. |
||
tester Profil * |
#9 · Zasláno: 8. 3. 2016, 22:02:04
Ne je to jinak. Problém je již vyřešen.
php.net/manual/en/ini.core.php#ini.short-open-tag Ve verzi PHP 5.2.0 to neumí interpretovat short open tagy což je to o čem jsme se tu bavili. S 5.4.0 by neměl být problém jestli jsem to pochopil z manuálu správně: "Use of this shortcut required short_open_tag to be on." Takže bylo třeba zapnout tu directivu v php.ini což jsem prvně udělal na novější verzi php neb jsem to našel v kódu ale při přesunu na nižší verzi php jsem na to zapomněl a toto byl důsledek. |
||
Keeehi Profil |
#10 · Zasláno: 9. 3. 2016, 00:20:12
tester:
„Ve verzi PHP 5.2.0 to neumí interpretovat short open tagy“ A to je právě to, proč je nebezpečné je používat. „Ne je to jinak“ Motáš 2 problémy dohromady. Jedno jsou špatné tahy a to druhé chyba v syntaxi. |
||
tester Profil * |
#11 · Zasláno: 9. 3. 2016, 10:00:02
Keeehi:
O jakém nebezpečí to stále mluvíš? Někdo mi hackne stránku nebo co? Tady jde o to, že stránka nenajede hned po instalaci nebo po updatu na nové php. Máš na mysli spíš komplikace, ty se ale dají ošetřit. Chyba byla na mé straně že jsem si nepřečetl manuál, někde by měl být. Teď když na něj koukám oni tam stejně nepíší že je třeba tu directivu zapnout. |
||
Keeehi Profil |
#12 · Zasláno: 9. 3. 2016, 12:51:57
Je nebezpečí, že ti to nebude fungovat. Na starších verzích byly short_open_tags vypnuté, na novějších jsou defakultně zaplé. Pořád se však dají vypnout. Tudíž když použiješ
<? je nebezpečí, že po nahrání na hosting to nebude fungovat. Pokud pouziješ <?php pak ke úplně jedno, jak je nastavená direktiva short_open_tags. Tudíž i pokud by se webhoster rozhodl, že short_open_tags z nějakého důvodu zakáže, nepřestanou ti stránky ze dne na den fungovat.
|
||
Joker Profil |
#13 · Zasláno: 9. 3. 2016, 12:54:29
tester:
„O jakém nebezpečí to stále mluvíš?“ O tom, že short_open_tags nemusí spolehlivě fungovat, jak je vidět i z tohoto vlákna. |
||
tester Profil * |
#14 · Zasláno: 9. 3. 2016, 16:15:21
To ale nemá vliv na bezpečnost. Stránka buď jede nebo nejede. Když nejede tak ji nelze zneužít.
|
||
Lonanek Profil |
#15 · Zasláno: 9. 3. 2016, 16:23:21
tester:
„Stránka buď jede nebo nejede.“ Tak proč tady řešíte 14 příspěvků, podle Vás, nesmyslností. Když nechcete vzít rady vážně, tak nezakládejte vlákna s problémem. Keeehi se Vám zde snaží intenzivně poradit a navést správným směrem a Joker objasnil "nebezpečí". Co více ještě chcete??? |
||
Fisir Profil |
#16 · Zasláno: 9. 3. 2016, 18:09:52
Reaguji na testera:
Potíž je ale v tom, že když se neinterpretuje PHP, je samotný zdrojový kód skriptu (tedy přesně to, co ty vidíš v editoru) odeslán návštěvníkovi. I pokud je tvůj web provozován bezpečně (tj. žádné zjevné bezpečnostní díry v kódu, konfigurace nečitelná webserverem), pravděpodobně není tohle odhalení příliš žádoucí. |
||
Keeehi Profil |
#17 · Zasláno: 9. 3. 2016, 20:00:31
tester:
Navíc spousta začátečníků má třeba přihalšovací údaje k databázi přímo ve scriptu. V případě neinterpretace dojde k jejich vyzrazení. ač se to může zdát divné, slovo nebezpečí nemusí vždy souviset s bezpečností či zabezpečením |
||
tester Profil * |
#18 · Zasláno: 10. 3. 2016, 01:41:58
Keeehi:
OK, ty short tagy jsou ale pouze v šablonách tak tam snad žádné nebezpečí nehrozí. Jak jinam dát ty přihlašovací údaje? |
||
tester Profil * |
#19 · Zasláno: 10. 3. 2016, 09:18:09
Ty přihlašovací údaje co jsou ve scriptu jsou pro localhost, ale pokud by je tam někdo nechat pro veřejný server mysql tak to je fakt blbost, dík za připomínku.
|
||
Keeehi Profil |
#20 · Zasláno: 10. 3. 2016, 09:28:22
tester:
„Jak jinam dát ty přihlašovací údaje?“ Dají se dát třeba do souboru, který není v části kterou zobrazuje webserver. Od někoho jsem slyšel, že používá systémové proměnné. Přiznám se, že jsem ale pořádný průzkum na téma "doporučené postupy bezpečného uchovávání přihlašovacích údajů" ještě nestihl provést. Možná tedy existuje lepší řešení. |
||
Časová prodleva: 9 let
|
0