Na Internetu je často zmiňovaná přístupnost webových stránek. Začínajícím autorům je kladen důraz na používání CSS pro vizuální vzhled s tím, že stránky budou takto přístupné všem uživatelům, nejen těm s nejlepším a nejsprávnějším systémem. Jenže, vzhledem k tomu, že pracuji na „osmistovce“, tedy lince pro pomoc uživatelům, zjišťuji, že to není to nejdůležitější. Snadno se mohou vaše stránky stát nepřístupné i spoustě běžných uživatelů neboli BFU, i když je máte skvěle nastylované a teoreticky přístupné.
Největší chyby totiž nebývají v nesprávném použití HTML+CSS, ale v použitých technologiích.
Cookies. Máte cookies vypnuté? Já ano, tedy defaultně. Protože zde na Internetu jsem relativně anonymní, můžu přiznat, že je to kvůli TGP. Mnoho TGP galerií ukládá cookies, aby poté, co naklikáte několik vámi požadovaných hanbatých obrázků, vám mohlo místo toho servírovat jiné TGP stránky. Tedy, někteří tvůrci TGP si toho všimli a servírují vám něco takového náhodně, ale mnoho používá cookies. Zjistil jsem, že seznam „dobrých stránek“, tedy takových, které cookies potřebují k životu, je celkem dost.
Vím co mi řeknete. Že nejsem BFU. Že BFU tohle nedělá. Omyl.
Bohužel první věc, co BFU udělá, je nastavení Internet Exploreru, konkrétně sekce „Osobní nastavení“ a zde „Nejvyšší úroveň“. Co by neudělal pro svoji bezpečnost! Tím cookies spolehlivě zablokuje.
Druhá věc, kterou udělá, je, že si nainstaluje nějaký firewall. Ať se mu do počítače nikdo nedostane! Firewall samozřejmě nehodlá nijak nastavovat, stejně tomu nerozumí a je spokojený s tím co má. Spousta firewallů ovšem všehovšudy zablokuje veškeré odchozí spojení mimo portu 80, 25 a 110 (takže BFU často nejde vůbec HTTPS) a také cookies. V této souvislosti bych rád upozornil na v Česku rozšířený produkt AVG, který blokuje defaultně cookies nebo to alespoň v některých verzích dělal (mluvím o firewallu distibuovaném s tímto antivirem). Takže BFU a cookies je problém.
Vlastně by to ani problém být nemusel, kdyby některé stránky nepotřebovaly cookies „natvrdo“. Není nic trapnějšího, než když po výběru zboží ve vašem oblíbeném e-shopu kliknete na „Zaplatit“ a dozvíte se, že „Váš košík je prázdný“. Vy víte, že je potřeba povolit cookies, ale jak se to dozví BFU? Spousta stránek navíc potřebuje cookies jenom jako session cookies, což se dá vyřešit přímo předáváním v adresním řádku. Muselo by to ovšem někoho napadnout…
Takže bych apeloval na tvůrce stránek: opravdu potřebuje vaše stránka cookies k životu? Co takhle ve vašem php.ini povolit session proměnnou, aby se mohla předávat i jinak. Navíc takhle můžete mít několik domén třetího nebo vyššího řádu, aniž by to způsobovalo problémy (cookies platí vždy pro jednu určitou doménu). A pokud opravdu, opravdu potřebujete cookies, vždy nejprve proveďte test, zda prohlížeč cookies podporuje a pokud ne, pak napsat něco jako „Ke vstupu na stránky potřebujete mít zapnuté cookies“, nejlépe i se stručným návodem, jak je zapnout, protože BFU naprosto netuší, co to cookies jsou.
Javascript je o řád méně blokovaná technologie než cookies. Bohužel i tady mohou nastat problémy. Nekompatibilit mezi prohlížeči je hodně, document.all potkáme na spoustě stránek. V tomto případě to BFU moc vadit nebude, zato odradíte zkušené. Rozhodně platí to, co v předešlém odstavci – stránky by měly fungovat i s vypnutým Javascriptem.
Je zvláštní, kolik firemních stránek má jako první uvedeno „Novinky“, čili na hlavní stránce mají krátké zprávy. Opravdu máte dojem, že lezete na web určitého výrobce proto, abyste se dozvěděli tiskové zprávy? Obecná navigace je rovněž problém, zejména pokud jde o společnost vyrábějící skoro všechno, jako IBM nebo Toshiba. Zkuste si na těhle stránkách najít BIOS pro starší počítač IBM (ještě z doby, kdy to nebylo Lenovo). Pro ovladače vás odkáží na stránku Lenovo, kde se o původních počítačích IBM nic nepíše. A podle stránek Toshiby můj notebook neexistuje.
Není ani tak důležité rozmístění ovládacích prvků, jejich barevnost a podobně, ale spíš celková použitelnost informací. Je smutné, když musím výše uvedené informace hledat pomocí Google. Navíc – udělá to BFU?
O nepoužitelnosti frames (rámců) spolu s vyhledáváním psal Pixy, takže bych to jen opakoval.
O tom, že banka vyžaduje jen jeden konkrétní Java Runtime Environment a jiná stránka zase jiný snad ani netřeba psát (přičemž cestou musí BFU překonat překážky: kdo vůbec dělá nějakou Javu a že se to jmenuje oficiálně JRE).
Je toho dost. Tak alespoň na začátek: opravdu potřebujete na vašich stránkách cookies?
Ad cookies – myslím, že užitečnější je spíš BFU vychovávat, že vypínat cookie je nesmysl – před ničím se tím neochrání, ale zkomplikují život sobě i tvůrcům webů. Pokud k tomu někdo má opravdu důvod, dokáže používat prohlížeč nebo rozšíření, který umožňuje blokovat cookie selektivně např. podle domény.
Mimochodem, ke které doméně bude cookie patřit lze nastavit, takže žádné problémy s doménami třetího řádu nenastávají.
typický příklad příspevku někoho, kdo si myslí že spolknul šalamounovo ho...
Cookies má vypnuto < 1% uživatelů, když už se něco blokuje (třeba ty firewally), tak jsou to cookies na jiných doménách. Klasické cookie na jedné doméně žádné nebezpeční nepřináší, takže se neblokují. A že vám někdo zobrazuje content podle toho co máte v jeho cookie - to není bug, to je feature. Že to má někdo zpracováno tak že vám to nevyhovuje? Nevím, nikdy jsem se s tím nesetkal. Cookie jsou ale od toho, aby vám práci ulehčily. Jinak je potřeba používat session id v adrese, a to je pro spoustu uživatelů řádově větší opruz než cookie (nemožnost kopírovat adresu atd.), a je to opruz hlavně pro vyhledavače. Takže Cookies klidně používat (samozřejmě ale jen tam, kde to má smysl)
Javascript - každý byť i mírně poučený webdesigner co hledí na přístupnost ví, že javascript slouží k vylepšení zážitku, ovladatelnosti atp., nesmí být použit jako jediná možnost. Takže kvalitní weby je možné ovládat bez js ať jsou jakkoliv složité. Viz třeba gmail.
Ovšem s výjimkou těch, které prostě bez JS fungovat nemohou, viz třeba mapy (třeba mapy.cz). Bez JS se uživatel ochuzuje o zážitek, a je to jen a jen jeho problém, má použít prohlížeč, který problémy nemá (třeba zmíněné document.all umí některé prohlížeče emulovat), hlavně ale většina webů se nyní už optimalizuje na FF a IE, takže fungují všude, problémy můžou nastat u mobilních prohlížečů, i zde má uživatel možnost použít lepší a designer by měl pro PDA stejně udělat jiný vzhled.
celková navigace problém je, ovšem důkladná analýza a řešení stojí třeba statisíce. Co se týče třeba oněch ovladačů - bfu je vůbec hledata nebude. A když ano, tak právě ve vyhledavači. BTW klíčová slova "drivers xy" jsou jedny z nejčastějších na všech vyhledavačích
rámce se prakticky nikde nepoužívají a i ty mají velmi dobrou úlohu při mnoha aplikacích (viz třeba microsoft msdn) a jejich problémy lze snadno řešit. A jestli si někdo vybírá banku pro online banking, tak by si to měl nejdřív vyzkoušet.
Tak nutnost předávat session id v adrese není a záleží pouze na nastavení. Navíc stavět "aplikaci" na něčem co lze vypnout je hloupost. To je už chytřejší předávat session id v adrese a ošetřit případnou neshodu.
Jedině kde si mohu určovat pravidla jsou specializované aplikace určené pro úzkou skupinu, avšak stejně v případě chyby je nutné uvést řešení, tj. zapnutí JavaScriptu.
Ohledně BFU (dále Franta) už mnoho věcí neplatí, protože k internetu se připojují mladší a mladší lidé a během chvíle si osvojí hodně věcí. Pak tu máme "odborníky", kteří Frantu proškolí a nastaví vše potřebné.
[6] session id v url nejsou nejstastnejsi.... zaprve... lidi si budou pripadnou url vymenovat s celym sessid (a kdyz je to blbe implementovane, jde s tim udelat hezky session stealing) za druhe... uz jsem videl nekolik stranek, ktere lezly z googlu jako mojestranka.jsp?SSID=dloouuuuuhy hash... coz taky nevypada nejlip.... a onecem svedci...
ja preferuji variantu... pouzit cookies, a kdyz nejsou k dispozici prejit k pridavani session id do url
Hu, tady je lidí!
Přátelé, já fakt dělám na osmistovce. Nemyslím si, že bych spolknul šalamounovo ho... Ale protože část stránek, na které mimo jiné já dělám support, cookies vyžadují, vím jak často někdo volá s problémem "nejde se přihlásit" "nebere mi to heslo" atd., z čehož se vzápětí vyklubou cookies. Je jich rozhodně víc než jedno procento. Můj odhad je pět procent. Dva identifikovatelné problémy jsem zmínil, občas se nepodaří identifikovat o co jde - cookie prostě ne a ne projít (v případě chybného jména a hesla se systém chová jinak, takže to poznám z toho, co mi uživatel hlásí). Horuji pro řešení navrhované v příspěvku [8].
Ad [6]: To má jednu vadu. Když mi někdo zavolá "Nemůžu se přihlásit atd." a já zjistím, že je to cookies, co mu říct? Pravdu. "Váš počítač není správně nakonfigurován" (v mírnější podobě). Na což BFU zcela standardně kontruje hláškou "Všechny stránky mi fungují a vaše ne, ne že já mám něco nastavovat, vy si to opravte!". Říci "Musíte si nastavit nižší úroveň zabezpečení v Exploreru" nebo "Musíte si vypnout firewall" zní příšerně a uživatel vás pošle do háje.
Cookies jsou na stejne urovni jako Referrer. Obe techniky jsou volitelnou casti HTTP protokolu, klient je posilat muze i nemusi. Obe lze nahradit parametrickym URL, obe predstavuji mozny zasah do soukromi uzivatele. Zadna z nich sama o sobe nepredstavuje bezpecnostni riziko.
Webova aplikace by se mela umet vyrovnat s jejich chybejici podporou. Minimalne tak, ze uzivatele upozorni, ze pro spravny chod je treba to nebo ono.
Argumentace typu "coockies si vypinaji jenom blazni nebo ho neumi uzivatele obskurnich prohlizecu" je na urovni "jeden prohlizec vladne vsem".
SessionId v URL je PRASÁRNA (mimo jiné proto, ze k tomu URL neni urceno, protoze URL oznacuje objekt na server a nikoliv napr. autentizacni informace. Z toho pak plynou pak zminene problemy s vymenou a ukladanim URL - vyhledavace, zalozky, posilani odkazu ostatnim lidem)!
Z mych zkusenosti neni pouzivani cookies pro normalni uzivatele problem (opravdu drtiva vetsina je ma zapnute), jen je samozrejme treba, aby stranka spravne osetrila pripad, kdy jsou cookies vypnute a upozornila na to uzivatele...