r∙znΘ zp∙soby
Mo╛nosti zaheslovßnφ - Kryptovan² soubor - Tajnß adresa - P°φstup k tajnΘ adrese JavaScriptem - Zaheslovßnφ serverov²m skriptem (PHP) - Serverovß autentifikace - BezpeΦnß komunikace - Logika utajovßnφ
Hodn∞ lidφ se m∞ ptß, jak si dßt na sv∙j web informace, kterΘ m∙╛e Φφst jen ten, kdo znß heslo. Jsou r∙znΘ mo╛nosti, ╛ßdnß ale nenφ ·pln∞ primitivnφ:
V╣echny mo╛nosti majφ v²hody a nev²hody. Nßsledujφcφ text vßm umo╛nφ vybrat si vyhovujφcφ °e╣enφ podle va╣ich pot°eb a technick²ch mo╛nostφ.
Na web se prost∞ umφstφ soubor ve formßtu, kter² umo╛≥uje zaheslovßnφ. To je nap°φklad formßt *.zip (zip archiv) nebo *.doc (Microsoft Word), jsou i jinΘ. U╛ivatel si soubor stßhne, ale otev°e jej pouze v p°φpad∞, ╛e znß heslo.
Je to podobnΘ jako kdy╛ schovßte knφ╛ku v kovanΘ truhlici: truhlici lze ukrßst (soubor stßhnout), ale nelze se pak dostat ke knize.
Autor souboru heslo zadßvß p°i uklßdßnφ. V ka╛dΘm formßtu a programu se to d∞lß jinak. Nap°. WinZip na to mß tlaΦφtko Password. Ve Wordu se to nastavuje v Mo╛nosti > Uklßdßnφ.
Osobn∞ nemohu doporuΦuji pou╛φvat heslovanΘ *.zipy ani *.docy pro velmi tajnΘ informace. Kryptovßnφ v souborech MS Office (*.doc, *.xls a spol.) se pr² dß rozlousknout a takΘ v ka╛dΘ verzi office funguje jinak. TakΘ zip pr² jde rozlousknout. Na╣t∞stφ to ale mnoho lidφ neumφ (jß t°eba ne), tak╛e rozumnß mφra utajenφ z∙stane zachovßna.
Tato kryptovacφ metoda je extrΘmn∞ nevhodnß pro soubory, kterΘ se Φasto m∞nφ, proto╛e je s tφm moc prßce. Pro svoji jednoduchost je ale velmi oblφbenß.
Nejprimitivn∞j╣φ zp∙sob utajenφ strßnky spoΦφvß v tom, ╛e nikdo nevφ, kde strßnka je. Pokud prost∞ nikomu ne°eknu adresu a na strßnku nenamφ°φm ╛ßdn² odkaz, tak skoro nenφ ╣ance, ╛e by si jφ n∞kdo mohl p°eΦφst.
Je to podobnΘ, jako kdy╛ schovßte knφ╛ku "n∞kde na Brdech".
P°φstupov²m heslem je potom adresa strßnky. Lidem, kte°φ si budou sm∞t strßnku p°eΦφst, prost∞ po╣lete adresu.
NutnΘ podmφnky bezpeΦnosti takovΘho zp∙sobu:
<meta name="robots" content="noindex, nofollow">
, Tento zp∙sob utajenφ informacφ je rychl², jednoduch², ale vcelku nepohodln². Heslo se ne╣ikovn∞ p°edßvß a je╣t∞ h∙°e pamatuje, prakticky se musφ posφlat celΘ URL. To je velmi nepohodlnΘ. Tyto problΘmy se dajφ vy°e╣it JavaScriptem (popsßno dßle). Ale ani JavaScript neumo╛≥uje pou╛itφ u╛ivatelsk²ch jmen ani rozdφln²ch hesel (leda bych m∞l pro ka╛dΘho u╛ivatele s≤lo soubor).
Ideßlnφ p°edstava pro u╛ivatel∙v p°φstup k utajen²m strßnkßm je ta, ╛e u╛ivatel klikne na odkaz a bude vyzvßn, aby zadal heslo. Heslo by p°itom m∞lo b²t relativn∞ jednoduchΘ (ne desφtky znak∙).
Budu mφt dv∞ strßnky
Strßnka s formulß°em bude mφt tento k≤d:
<form name="formular" onsubmit="return
false">
Heslo: <input type="password" size="10" name="heslo">
<input type="submit" value="PokraΦovat" onclick="window.location.href
= 'priklady/' + document.formular.heslo.value
+ '.html'">
</form>
Co╛ ve strßnce vypadß jako obyΦejnß polφΦka:
Zadßte-li nynφ heslo "tajna_stranka", dostanete se na strßnku, kterß mß relativnφ adresu priklady/tajna_stranka.html. Zadß-li se ╣patnΘ heslo, strßnku nelze zobrazit (musφ se zp∞t).
Funkci skriptu zkuste prosφm pochopit sami (trochu jsem pro p°ehlednost obarvil v∞ci, kterΘ souvisejφ). M∙╛ete si jej upravit podle sebe:
(Dal╣φ vysv∞tlivky: onclick je udßlost, kterß se spou╣tφ p°i kliknutφ na tlaΦφtko; window.location.href je adresa strßnky v aktußlnφm okn∞; document.formular.heslo.value v sob∞ obsahuje hodnotu zadanou do polφΦka s heslem; Type=password ned∞lß v∙bec nic krom∞ toho, ╛e zadßvan² text hv∞zdiΦkuje; Onsubmit="return false" zabra≥uje odeslßnφ formulß°e standardnφ cestou (nechßvß se to vyhodnotit skriptu). )
Samoz°ejm∞ je nutnΘ zachovat klasickß opat°enφ pro utajenφ adresy: zakßzat indexovßnφ a neodkazovat. Dal╣φ nev²hodou je hlß╣ka "strßnku nelze zobrazit", pokud n∞kdo zadß ╣patnΘ heslo.
ServerovΘ skripty jsou nap°. PHP, ASP nebo obecn∞ libovoln² CGI skript. Nabφzejφ mnohem v∞t╣φ mo╛nosti zaheslovßnφ, zejmΘna ve spoluprßci s databßzφ (nenφ podmφnkou). Abyste mohli serverovΘ skripty pou╛φt, musφte je mφt povolenΘ a nainstalovanΘ na serveru. V p°φkladu budu uva╛ovat pou╛itφ PHP.
Tajnß strßnka mß nynφ ve°ejnou adresu. Je to soubor tajna_stranka.php. Server ji p°ed odeslßnφm ale parsuje a odesφlß jen v²sledky. (P°edstavte si to jako knihu, kterß je Φitelnß jenom p°es polarizaΦnφ br²le:-)
Jednoduch² p°φklad heslovßnφ strßnky v PHP:
<body>
<? if($heslo
!= "mellon"): ?>
<!--p°ihla▒ovacφ formulß° -->
<form>
Zadej heslo: <input type=password
name="heslo">
<input type=submit>
</form>
<? ; else: ?>
<h1>Vφtejte v Morii!</h1>
... dal▒φ tajn² text
<? endif ?>
</body>
Zobrazte si p°φklad (nefunguje ve sta╛enΘ verzi) a zkuste zadat "mellon".
Popis funkce: jestli╛e neexistuje prom∞nnß $heslo nebo nenφ rovna (!= je nerovnost) °et∞zci mellon, zobrazφ se pouze p°ihla╣ovacφ formulß° s ╛ßdostφ o heslo.
Jinak (else) se vypφ╣e tajn² text strßnky.
Zmφn∞n² p°φklad je v praxi nutno trochu zdokonalit n∞jakou konverzφ hesla, aby se zabrßnilo pr∙niku hacker∙, kte°φ zkou╣ejφ mφsto hesel zadßvat programovΘ k≤dy.
Heslo je chrßn∞no p°ed Φtenß°i, proto╛e se jim neodesφlß k≤d, ale jenom v²sledky. V praxi se ale hesla nepφ╣φ do PHP zdrojßk∙, spφ╣e se uklßdajφ ve zvlß╣tnφch souborech nebo v databßzi zak≤dovanΘ pomocφ MD5.
ServerovΘ skripty mohou spolupracovat s databßzφ, kterß si uklßdß u╛ivatelskß jmΘna a hesla. Potom m∙╛e mφt ka╛d² u╛ivatel jinΘ heslo. Databßze spoleΦn∞ s PHP umo╛≥uje t°eba i zalo╛enφ "·Φtu", kdy se po registraci do tabulky ulo╛φ heslo a u╛ivatelskΘ jmΘno, kterΘ jsou pot°eba pro dal╣φ p°φstupy ke strßnkßm.
V n∞kter²ch p°φpadech p°ebφrajφ serverovΘ skripty trik neznßmΘ adresy: vygenerujφ dlouhatananßnsk² °et∞zec, kter² by nikdo neuhodl, a pou╛φvajφ jej intern∞ mezi r∙zn²mi sv²mi soubory jako heslo.
ServerovΘ skripty majφ tu zßsadnφ nev²hodu, ╛e se musejφ na serveru instalovat, programovat a mßlokdo mß mo╛nost pou╛φvat je zdarma. Nabφzejφ sice mnohem lep╣φ ochranu ·daj∙ ne╛ mechanismus tajnΘ adresy (popsan² v²╣e), p°esto nenφ ochrana absolutnφ, proto╛e je teoreticky mo╛n² ·tok (pokud je server ╣patn∞ vylad∞n) ze strany n∞jakΘho jinΘho u╛ivatele serveru nebo databßze nebo m∙╛e b²t heslo odchyceno cestou.
ServerovΘ skripty jsou dnes nejroz╣φ°en∞j╣φ metodou ochrany ·daj∙ na velk²ch serverech. Nap°. v╣echny velkΘ po╣tovnφ servery s webov²m rozhranφm (Seznam, Post, Email apod.) je pou╛φvajφ pro autentifikaci u╛ivatel∙ webu.
Nejlep╣φ systΘm ochrany ·daj∙ je autentifikace p°φmo na serveru. Jednß se o ╣ir╣φ problematiku, ne╛ aby se dala popsat struΦn∞ (co╛ mßm v ·myslu). Aby se dala serverovß autentifikace pou╛φt, je t°eba mφt mo╛nost konfigurovat server -- bu∩to p°φmo httpd.conf, nebo, je-li to dovoleno, soubory hesel. Proto╛e dnes (narozdφl od minulosti) mß mo╛nost konfigurovat server (procentußln∞) naprostΘ minimum autor∙ webu, p°ejdu tuto mo╛nost pouze s poukazem na to, ╛e existuje.
M∙╛ete si to p°edstavit jako knφ╛ku v knihovn∞, kterou knihovnice p∙jΦφ pouze registrovan²m Φtenß°∙m.
Jedna idea je takovß, ╛e na serveru v operaΦnφm systΘmu definovanφ u╛ivatelΘ a skupiny u╛ivatel∙. Normßln∞ k webov²m dokument∙m p°istupuje virtußlnφ u╛ivatel jako n∞jak² host, kter² mß omezenß prßva. Pokud se n∞jakΘmu adresß°i nebo souboru na serveru omezφ prßva je╣t∞ vφc, bude webov² u╛ivatel vyzvßn promptem k zadßnφ jmΘna a hesla. To se mu poda°φ zadat pouze pokud je na serveru n∞jak registrovan²m u╛ivatelem.
Jinou ·rove≥ omezenφ p°φstup∙ je autentifikace p°es server Apache (nebo jin² server). NejΦast∞ji se pr² pou╛φvß soubor .htacess, kter² definuje u╛ivatele, zp∙sob autentifikace a mφsto kde mß najφt seznam hesel v souboru htpasswd. Apache musφ mφt v configu direktivy AuthType, AuthName, Limit, Require a cestu k souboru s hesly AuthUserFile nebo AuthGroupFile. Ten se tvo°φ aplikacφ htpasswd. Nic pro smrtelnφky odkojenΘ operaΦnφm systΘmem Windows. :-) Zßjemce musφm odkßzat na jinΘ zdroje, t°eba na knihu Apache, sprßva webovΘho serveru, ComputerPress 1997, kapitola 5. Srozumiteln∞ je to popsßno na strßnce http://bronek-hlavac.webzdarma.cz (vlevo kliknout na odkaz), ale nejsem si jist², zda popsan² zp∙sob bude fungovat v╣ude na Apachi. Po╣lete mi prosφm odkazy na p°φpadnΘ srozumitelnΘ on-line zdroje, dφky.
Serverovß autentifikace se hodnotφ jako jedinß opravdu bezpeΦnß metoda ochrany a distribuce dat. Pou╛φvß se pro ostrΘ ╣piΦkovΘ aplikace, nap°. internetovΘ banky, exkluzivnφ pornoservery a obecn∞ v╣echno, v Φem je hodn∞ pen∞z. Chcete-li v²hledov∞ zbohatnout, sta≥te se odbornφky na serverovΘ zabezpeΦenφ a bezpeΦnou komunikaci :-).
P°edem hlßsφm, ╛e o tom nic nevφm. Snad jen to, ╛e teoreticky lze v╣echnu b∞╛nou komunikaci na Internetu p°i tro╣e ╣t∞stφ odchytit a monitorovat. V praxi to nikdo moc ned∞lß, proto╛e t∞ch dat je neuv∞°itelnß spousta a nikdo se v tom nechce hrabat. Jakmile ale jde o velkΘ penφze, tak u╛ by se vyplßcelo ta hesla odchytßvat.
Proto existuje protokol https://, kter² umo╛≥uje data p°edßvat k≤dovan∞, tedy bezpeΦn∞. Protokol musφ pou╛φvat jak klient (nastavuje se v mo╛nostech nov∞j╣φho prohlφ╛eΦe), tak server (to zßle╛φ na instalaci a konfiguraci serveru). Krom∞ https existujφ i dal╣φ metody kryptovßnφ informacφ (nap°. PGP), ty se ale nepou╛φvajφ pro p°enosy strßnek.
Napi╣te mi prosφm odkazy na on-line zdroje, kterΘ o https a podobn²ch v∞cech pojednßvajφ, dφky.
V╛dycky m∞ uchvßtφ, kdy╛ p°ijdu na strßnku, kde na poΦitadle svφtφ dvoucifernΘ Φφslo, ale je tam vstupnφ formulß° pro vstup do utajenΘ sekce. K Φemu to je???
Je pot°eba si uv∞domit, ╛e strßnek existuje tolik miliard, ╛e u╛ivatele vlastn∞ nezajφmß ani normßlnφ text strßnky. Nato╛ n∞jakΘ utajenΘ nesmysly! Pokud budu u╛ivateli do cesty klßst r∙znΘ p°ekß╛ky typu registrace nebo zadßvßnφ hesla, tak se otrßvφ a zkusφ jinou strßnku z mili≤nu mo╛n²ch.
Kdy╛ u╛ tedy mßte n∞co tajnΘho, nemusφte se moc ·zkostliv∞ sna╛it vymyslet dokonalΘ utajenφ, proto╛e normßln∞ nikoho nebude bavit tφm systΘmem pronikat.
Pravidlo dne tedy znφ: co nenφ nutn∞ tajnΘ, nech╗ je ve°ejnΘ! Jinak °eΦeno nejlΘpe ud∞lß ten, kdo z tΘto strßnky nic nepou╛ije.
Vizte tΘ╛: Programovßnφ strßnek, ┌vod do formulß°∙, Zßklady nastavenφ serveru, Vyhledßvacφ roboti, Mo╛nosti PHP, JavaScript
o tvorb∞, ·dr╛b∞ a zlep╣ovßnφ internetov²ch strßnek