Autor Zpráva
D15
Profil *
Proč mají některé webhostingy vypnuté magic_quotes_gpc? K čemu je to dobré? Díky.
Joker
Profil
Proč mají některé webhostingy zapnuté magic_quotes_gpc? K čemu je to dobré? Díky.

Tak to má být správně ;)
Joker
Profil
No a abych odpověděl, magic_quotes_gpc je podle mě dobré akorát k ničení zdraví PHP programátorů a případně předmětů v jejich okolí :)

Kdybych měl říct nejhorší vlastnost PHP, tak suverénně magic_quotes_gpc a na druhém místě chaos v pojmenování funkcí (viz např.: stripslashes vs. strip_tags)
D15
Profil *
Právě že to nechápu. Jakub Vrána na svém blogu magic_quotes_gpc "vychvaluje". Myslel jsem si tedy, že se jedná o dobrou věc pro ti SQL injections a podobným věcem. Nebo ne?
loyza
Profil
Pokud je tato direktiva povolena tak veškeré uvozovky, které přicházejí z formulářů jsou oescapované (jsou před ně přidány uvozovky). Tím pádem je web ochráněn před SQL injection. Pokud je ta direktiva vypnutá tak si musí programátor escapovat uvozovky sám. Nyní když je to na každém hostingu jinak musí s tím autor webu počítat a zjistit si nejprve nastavení této direktivy a poté provést patřičnou operaci.
D15
Profil *
loyza Ano, přesně tak jsem to pochopil. Čili to beru jako tak, že magic_quotes_gpc jsou zapnuté dobrá věc. Ovšem Joker tady říká opak, to mne mate. Proto jsem se právě ptal, zdali tahle zapnutá direktiva má i nějaké negativa - kdyby to byla 100% dobrá záležitost, tak by ji všechny webhostingy měly zapnoutou, což ale nemají ...
loyza
Profil
No možná....
Ne každý programátor chce aby se mu někam přidávali nějaká lomítka prostě si chce všechno pořešit sám. Ví jaká jsou nebezpečí, ví co je SQL injection a sám si to zabezpečí. Nicméně existuje spousta lidí, kteří nemají o nějakém zabezpečení ani šajnu a kvůli nim je ta direktiva zapnutá.
Joker
Profil
Jak já to vidím:
Magic quotes jsou fajn u textového vstupu ukládaného do databáze. Jenže jsou i jiné vstupy, třeba čísla, která ukládám do databáze přes intval(), tam jsou lomítka zbytečná. A pak jsou vstupy, které chci zase zobrazit na obrazovku, tam jsou lomítka škodlivá. Takže výsledek: Textové vstupy do databáze mi ošetří magic quotes, ostatní si udělám sám a vstupy co chci vypisovat musím napřed prohnat přes stripslashes. Nevidím tam nějaké extra výhody proti tomu, když si ošetřím i ty texty a vypisovat můžu přímo.
A podle mě je lepší se naučit kontrolovat vstupy do databáze, což je dobrý návyk a tak jako tak to budu muset dělat (číslo, datum,...)

Ale největší problém není to samotné přidávání lomítek, ale to, že je to nastavitelné, tj. dělá se jen někdy. Takže pokud aplikaci nepíšu pro svůj vlastní web, nedá se na to spolehnout. A i na tom vlastním webu mohou nastat problémy při případném přesunu, pozdější změně nastavení, atd.
Tím se eliminují veškeré výhody a jediný výsledek magic quotes je, že programátor musí počítat s oběma variantami a nějak to vyřešit. Nejspíš hned na začátku v případě "té druhé" varianty převést všechny vstupy na tu preferovanou a pak už pracovat normálně. Každopádně je to úplně zbytečná práce navíc.

Jen tak mimochodem, názorný příklad, jak nelze spoléhat na konkrétní nastavení magic quotes, je i tahle diskuse, respektive to požírání zpětných lomítek, které je nejspíš zapřičiněno tím, že PHP bylo napsané pro jiné nastavení magic quotes, než má server.
DoubleThink
Profil *
Direktiva magic_quotes_gpc má být v PHP6 odstraněna.

Kdybych měl říct nejhorší vlastnost PHP, tak suverénně magic_quotes_gpc a na druhém místě chaos v pojmenování funkcí (viz např.: stripslashes vs. strip_tags)

No tak jména funkcí mě opravdu netrápí (chaos vznikl postupným vývojem, podtržítková konvence je poměrně mladá), kvalitní editor si názvy pamatuje za mě.
Co mě trápí víc je typová nekonzistence (0==''; 0==null; 0!==null, ''==false)
krteczek
Profil
DoubleThink: ale vždyťto je přímo ze života:
0=='' => nula je rovna prázdnu
0==null => nula je rovna neznámemu
0!==null => nula neni shodná s neznámem
''==false => prázdno je považováno za bolean false ale není s touto hodnotou shodné

Myslím, že je to jen o správném pochopení jednotlivých datových typů a jejich vzájeho porovnávání
Toto téma je uzamčeno. Odpověď nelze zaslat.

0