Prihlásenie | Registrácia

MNews Jednoduchý redakčný systém bez databázy

Bezpečnosť

MNews 2 je na svete už 11 dní, dúfam, že všeobecne panuje spokojnosť s novými funkciami a novým vzhľadom. Verím, že sa nám podarilo dlhým obdobím testovania vychytať všetky výraznejšie chyby, ktoré sa mohli vyskytnúť, svedčia o tom aj vo väčšine pochvalné komentáre. Dnes nepíšem článok s konkrétnym návodom, či dokonca novou verziou, dnes by som chcel spísať len pár mojich poznámok k 2ke ohľadom bezpečnosti. Bude to veľa nudnej teórie, ale snáď to niekoho zaujme Žmurk

Bezpečnosť funkcií

Aj keď sa programovaniu venujem len na amatérskej úrovni, vo voľnom čase, už od prvej verzie sa snažím dbať na bezpečnosť v maximálnej možnej miere. Snažím sa nezabudnúť na nijakú blbosť, ktorá by mohla systému uškodiť a v súčastnosti hľadám aj niekoho skúsenejšieho, kto by systém prevetral úplne, aby som si mohol byť istý na 99% (na stovku si nemôže byť nik istý). V texte bude veľmi často spomínaný hash, či hashovacia funkcia, pokiaľ netušíte čo to je, viac sa dozviete napríklad na wikipedii.

Už od prvej verzie MNews sú napríklad heslá hashované pomocou funkcie sha1 (silnejšia obdoba md5), takže je veľmi ťažké dostať tieto heslá z hashovanej do čitateľnej podoby. S novou verziou však prišli aj nové problémy a to v nových funkciách: trvalé prihlásenie, upload a zálohovanie.

Trvalé prihlásenie

Pred tým, ako som vytvoril túto funkciu som sa rozhodoval medzi 2 možnosťami: trvalé prihlásenie možné na viacerých počítačoch naraz, alebo trvalé prihlásenie možné len z jedného počítača. Nakoniec padlo rozhodnutie na obmedzenejšie, ale z môjho pohľadu bezpečnejšie riešenie - povolenie trvalého prihlásenia len z jedného počítača.
Táto funkcia je veľmi striktná a prísna, preto niekedy človek nadobudne aj pocit, že nefunguje. Pravdou je, že funguje až príliš presne, avšak na svoju funkcionalitu je prísna. Trvalé prihlásenie je totiž obmedzené množstvom faktorov, v krátkosti:

  • do cookies sa ukladá login užívateľa a samostatne generovaný hash (do cookies sa neukladá žiadne samostatné heslo - ani v čitateľnej, ani v zahashovanej podobe)
  • vygenerovaný hash sa skladá zo 4 častí (použitý prehliadač, zahashované heslo, čas prihlásenia, IP adresa), ktoré sú následne zahashované pomocou sha1 funkcie.
  • pri prihlasovaní cez trvalé prihlásenie sú tak tieto časti porovnávané - tj musí sa zhodovať IP adresa a prehliadač, keď bol tento hash na trvalé prihlásenie vygenerovaný. Pokiaľ sa nezhoduje, systém užívateľa neprihlási a automaticky zruší možnosť ďalšieho trvalého prihlásenia s daným hashom.
  • pri každom prihlásení cez túto funkciu je vygenerovaný nový hash, takže hash v databáze ostáva uložený len na čas nevyhnutne potrebný.
  • ak sa prihlásite z iného počítača do systému, hash na trvalé prihlásenie sa zruší - tak aj keď sa vrátite späť k svojmu počítaču, trvalé prihlásenie už nebude fungovať.

Ako sami vidíte, funkcia je naozaj veľmi restriktívna užívateľovi dovolí prihlasovať sa len z jedného počítača. Myslím si však, že tieto obmedzujúce prvky prispievajú len k väčšej bezpečnosti pri použití tejto funkcie. Aj keby došlo ku krádeži cookie s hashom, tak trvalé prihlásenie nebude fungovať.
Vyskytli sa u vás nejaké problémy s touto funkciou? Ako sa vám páči? Dajte vedieť do komentárov!

Zálohovanie

Zálohovanie mala byť jednoduchá funkcia, ktorá umožní vytvoriť zip súbor, ktorý sa uloží na server, a v ktorom bude zabalený obsah adresára "data", aby pri prípadnom probléme sa údaje dali obnoviť zo zálohy. Až do verzie RC2 som nevidel žiadne bezpečnostné riziká, ktoré by mohli vzniknúť pri používaní tejto funkcie.
Zmenilo sa to, keď som sa rozhodol ochrániť adresáre, ktoré sa nachádzajú v adresári "data" a to tak, že do nich vygenerujem prázdny súbor index.html, aby nebolo možné prehliadať ich obsah. Zabránil som tak síce možnosti pozrieť si aj zoznam súborov v adresári "backups", kde sa ukladajú zálohy, avšak dovtedy vygenerovaný zip mal formát backup-yyyy-mm-dd.zip (y - rok, m - mesiac, d - deň). Nedal sa síce pozrieť zoznam súborov, avšak meno súboru so zálohou sa dalo veľmi ľahko uhádnuť a tak by si ktokoľvek stiahol zálohu a dostal sa ku kompletnej databáze článkov, užívateľov, ... Riešením bolo pridanie náhodného reťazca k názvu súboru. Generovaný zip súbor ma tak podobu backup-yyy-mm-dd-rrrrrrrrr.zip, kde rrrrrrrrr je 9 miestny, náhodne generovaný reťazec. Na priamy download zálohy tak musíte vedieť dátum jej vytvorenia a hodnotu reťazca. Alebo sa jednoducho prihlásite do administrácie ako admin a stiahnete si poslednú zálohu v sekcii zálohovania Úsmev

Ostatné

Funkcia uploadu je klasickou, ničím zvláštnou funkciou, ktorá v súčastnosti len kontroluje, či zasielaný súbor je skutočne obrázkom (zisťuje na základe prípony a rozmerov obrázku). Plánuje sa ďalšie rozširovanie o ajaxový multiupload a upload média súborov (videá, flash, mp3) - až vtedy to začne byť zaujímavé.
Zvláštnou funkciou je aj zaheslovanie stránky - možnosť vstúpiť na vytvorenú stránku je buď po zadaní správneho hesla, alebo prostredníctvom pripísanie kľúča do url adresy. Kľúč je jedinečný pre každý deň, mení sa vždy o polnoci (napríklad ak niekomu chcete poskytnúť vstup na stránku bez toho, aby sa dozvedel heslo - taký blud, ktorý poteší). Viac o tejto funkcii sa dozviete pri upravovaní zaheslovanej stránky v sekcii Info.
Ak na jednej doméne máte MNews nainštalované 2 krát, len v iných adresároch, nemôžete sa pohybovať medzi týmito dvoma administráciami - MNews kontroluje, pre ktorú inštaláciu aká session platí. Dobrým príkladom je demo a administrácia na tejto stránke.

Nabudúce, ak bude mať opäť náladu sa rozpíšem o použiteľnosti, respektíve malých drobnostiach, na ktoré som sa snažil myslieť pri návrhu systému Úsmev.

mylan Čo sa inde nevošlo 26.12.2009 13:09 Zobrazené: 2518×
bezpečnosť, trvalé prihlásenie, upload, zálohovanie

Komentáre

1 · Ayrton1 Avatar Ayrton1 · 27.12.2009 02:52
Tento článek mě zaujal :-)

Sice nejsem ten expert, kterého hledáš (také jsem amatér), ale myslím si, že MNEWS je velmi dobře postavený a zabezpečený systém.
2 · MirrorOV Avatar MirrorOV · 28.12.2009 09:52
Taky si myslim ze MNews je dobre zabezpecen a nemam co bych mu vytknul, a u toho uploadovani by mozna stacilo dat prazdne index.php soubory at k tomu lidi nemaji pristup ;-) ...tak to mozna budu resit i ja.
3 · mylan Avatar mylan · 28.12.2009 12:57
Prázdny súbor index.html sa vytvára v každej zložke data už pri inštalácii. Písal som o tom v tomto článku pri popise zálohovania
4 · MirrorOV Avatar MirrorOV · 28.12.2009 13:16
mylan: Tak pak to mam asi blbe nainstalovane :-( protoze mi se zadny soubor index.html nevytvoril a to pouzivam MNews uz od Alfa verze ...webhosting mam od banan.cz
5 · mylan Avatar mylan · 28.12.2009 13:37
No to bude to... Vytvorenie súborov je až od ostrej verzie MNews, takže ak si nainštaloval systém v alpha verzii a odvtedy si len prepisoval súbory a nič neinštaloval, tak sa súbory nevytvorili. Skopíruj si index.html napríklad z tunajšej administrácie.
6 · MirrorOV Avatar MirrorOV · 28.12.2009 15:13
mylan: Aha ok. Dekuju. Hned to udelam ;-)
7 · MirrorOV Avatar MirrorOV · 29.12.2009 12:58
Zdravim
potrebuju poradit co se tyce editoru...na strankach pouzivam na pozadi cernou barvu a v editoru je jako pozadi bila barva :-( da se to nejak zmenit ze bych nekde neco zmenil v nejakem souboru a bylo by cerne? Takhle nevidim svetle barvy pri editovani at uz clanku nebo stranek. Diky moc vsem za jakoukoliv pomoc
8 · mylan Avatar mylan · 29.12.2009 13:45
Podobné dotazy smeruj prosím do fóra, diskusia pod článkom je na iné veci (tu sa napríklad rozoberá bezpečnosť a tvoj príspevok je veľmi mimo).
Stránku rieš pomocou CSS, tak nemusíš vždy upravovať farbu textu. Pozadie vo WYSIWYG editore sa nedá meniť
9 · noe Avatar noe · 03.01.2010 12:22
Dobrý den prosím k čemu jsou dobré a jak použít kategorie template ? děkuji
10 · mylan Avatar mylan · 03.01.2010 13:16
Tvoja otázka nemá vôbec súvis s týmto článkom. Ak chceš riešiť technické, či iné veci s MNews, založ si prosím tému vo fóre!
11 · MirrorOV Avatar MirrorOV · 04.01.2010 12:42
Zdravim. Nechci nijak strasit,ale ted sem udelal cistou instalaci MNews 2 na webhostingu php5.cz a ve slozce data se mi prazdne index soubory nevytvorily, zustaly porad prazdne slozky bez nejakych souboru
12 · mylan Avatar mylan · 04.01.2010 12:54
Čerstvá inštalácia na php5.sk a súbory sa mi vytvorili (vytvárajú sa len v zložkách, ktoré sú v zložke /data/files/)
13 · MirrorOV Avatar MirrorOV · 04.01.2010 13:09
mylan: Jo tak...ja myslel ze to ve vsech podslozkach vytvori ty soubory a ne jen ve slozce /data/files. Tak zas jsem o neco chytrejsi ;-)
14 · mylan Avatar mylan · 04.01.2010 13:12
V ostatných zložkách je to zbytočné, ich štruktúru pozná každý, kto si systém preštuduje...
Pridanie komentára



Bold text Italics Link Code    :-) ;-) 8-) :-D :-P :-O :-( :-/ ;,( ]:-D :-[

Ochrana proti spamu. Napíšte prosím číslicu jedenásť: