Katalog ASP odkaz∙: Hledßte informace o ASP? Zkuste nßÜ nov² katalog odkaz∙ na ASP weby. Vφce zde...
TextLink.cz
VyÜlo: 3.1.2001 Rubrika: ASP - ZdrojovΘ k≤dy

Funkce GenPwd: jak zak≤dovat heslo resp. jak vygenerovat unikßtnφ °et∞zec?
Chcete zaheslovat Φßst svΘbu? V Φlßnku se dozvφte jakΘ existujφ zp∙soby chrßn∞nφ p°ed nevy₧ßdan²m p°φstupem na strßnku! Dostane se Vßm do rukou zdroj funkce GenPWD(), kterß generuje hesla doslova na poΦkßnφ! Celß funkce je °ßdk∞ okomentovßna, tak₧e ji pochopφ opravdu ka₧d²! Vφce v Φlßnku...

P°i tvorb∞ lepÜφch WWW strßnek je nutnΘ ke ka₧dΘmu webu vytvo°it jeho "zadnφ vrßtka", kterß obsahujφ administraΦnφ nßstroje webu(formulß°e pro vklßdßnφ Φlßnk∙, novinek, odkaz∙,...), kterΘ je nutnΘ dostateΦn∞ zabezpeΦit, p°ed ne₧ßdoucφ nßvÜt∞vnoou, kterß by mohla jenom a pouze Ükodit, co₧ jist∞ neni v naÜem zßjmu.

Existuje n∞kolik zp∙sob∙, jak zak≤dovat heslo:

  • Vymyslet si "vnit°nφ" k≤dovacφ mechanismus pomocφ kterΘho si heslo p°i p°ihlßÜenφ zak≤dujete a p°i ka₧dΘm naΦtenφ strßnky jej p°evedete do dek≤dovanΘ podoby a porovnßte s jeho originßlem.
    P°φklad:

    U₧ivatel mß heslo KUadoMsaci41.

    Vytvo°φme si tabulku abecedy ve kterΘ je pφsmenko "a" jako Φφslo "1", pφsmenko "b" jako "7", pφsmeno "c" jako "t"(hodnoty mohou b²t samoz°ejm∞ jinΘ). Tuto "k≤dovou" tabulku zaÜifrujeme tφm, ₧e ji v Φas p°ihlßÜenφ vynßsobφme pr∙m∞rem hodnot sekunda, minuta, hodina. Na zßv∞r v²slednΘho °et∞zce, kter² jsme si takto zak≤dovali dodßme pouze n∞co ve smyslu kdy byl k≤d vytvo°en, jeliko₧ je tato infomrace ₧ivotn∞ d∙l∞₧itß pro pozd∞jÜφ op∞tovnΘ dek≤dovßnφ.
    Tento Φasov² ·daj lze zak≤dovat pomocφ pevnΘho klφΦe nap°φklad vynßsobenφm Φφsla 3 a p°iΦt∞nφm 6.
    P°i vstupu na zaheslovanou strßnku provedeme dek≤dovßnφ, kterΘ se zajistφ opaΦn²m postupem v²Üe uvedΘnoho nßvodu.
  • V databßzi mßte uchovßno nezßkodovanΘ heslo, kterΘ u₧ivatel jednou zadß do p°ihlaÜovacφ formulß°e a vy jej pouze napoprvΘ porovnßte. Jestli₧e se heslo neshoduje se zadan²m °et∞zcem u₧ivatelem, jeho p°φstup odmφtnete. Jestli₧e se ovÜem shoduje, vygenerujete pomocφ funkce, kterou vßm p°edlo₧φm za chvφli nßhodn² °et∞zec, kter² si op∞t ulo₧φte do databßze(nap°φklad do sloupku kodovane_heslo) a toto k≤dovanΘ heslo budete p°i volnßni novΘ strßnky posφlat jako parametr strßnky.
    Dßle nßsleduje na ka₧dΘ strßnce testovßnφ k≤dovanΘho hesla, kterΘ se musφ v₧dy shodovat s k≤dovan²m heslem ulo₧en²m v databßzi.
  • Vyu₧ijete "ofiißlnφho" p°ihlßÜenφ IIS 5.0, kterΘ se zavolß pomocφ Response.Status a nßslednΘ prcßce s hlaviΦkami strßnek(LOGON_USER a podobn∞) - o tomto zde naleznete Φlßnek za pßr dnφ.

Funckce GenPWD()

<%
Function GenPWD()
Randomize
For i = 1 to 8
  intNum = Int(10 * Rnd + 48)
  intUpper = Int(26 * Rnd + 65)
  intLower = Int(26 * Rnd + 97)
  intRand = Int(3 * Rnd + 1)
    Select Case intRand
    Case 1
      strPartPass = Chr(intNum)
    Case 2
      strPartPass = Chr(intUpper)
    Case 3
      strPartPass = Chr(intLower)
    End Select
  GenPWD = GenPWD & strPartPass
Next
End Function
%>

Syntaxe:

strRetezec = GenPWD()

strRetezec - °et∞zcovß prom∞nnß, kterou si p°ejete naplnit nßhodn²m °et∞zcem obsahujφcφm Φφsla a pφsmena.

Jak funkce funguje?

<%
Function GenPWD()
'>>>Pomocφ Randomize zapneme generßtor nßhodn²ch Φφsel.
Randomize
'>>>Pomocφ cyklu FOR zajistφme dΘlku °et∞zce resp. generovßnφ nßhodnΘho znaku se provßdφ 8x z Φeho₧ plyne, ₧e heslo bude obsahovat 8 znak∙. Zm∞nφte-li nßsleujφcφ °ßdek nap°φklad na For i = 1 to 15, heslo bude mφt 15 znak∙.
For i = 1 to 8
'>>>Vygenerujeme celΘ nßhodnΘ Φφslo. CelΘ Φφslo zajistφme funkcφ INT, kterß vrßti Φφslo typu Integer.
  intNum = Int(10 * Rnd + 48)
'>>>To samΘ ud∞lamΘ s prom∞nnou intUpper do kterΘ vlo₧φm∞ op∞t nßhodnΘ Φφslo vygenerovanΘ pomocφ funkce RND a nßsledn∞ "o°ezanΘ" na celΘ Φφslo pomocφ INT.
  intUpper = Int(26 * Rnd + 65)
'>>>Stejnou operaci provedeme s prom∞nnou intLower.
  intLower = Int(26 * Rnd + 97)
'>>>Stejnou operaci provedeme s prom∞nnou intRand.
  intRand = Int(3 * Rnd + 1)
'>>>Nynφ pomocφ podmφnkovΘho rozboΦovaΦe(p°φkazu) Case rozhodneme jak² typ znaku budeme do hesla vklßdat.
  Select Case intRand
     Case 1
'>>>Jestli₧e prom∞nnß intRand obsahuje Φφslo 1, provede se nßsledujφcφ °ßdek ve kterΘm se do prom∞nnΘ strPartPass dostane Φφslice vygenerovanß pomocφ funkce Chr s parametrem intNum, co₧ je nßhodnΘ Φφslo.
      strPartPass = Chr(intNum)
     Case 2
'>>>Nßsledujφcφ °ßdek se provede v p°φpad∞, kdy intRand obsahuje hodnotu rovnou 2. Naplnφ se tak prom∞nnß strPartPass °et∞zcem vygenerovan²m pomocφ funkce Chr s parametrem intUpper.
      strPartPass = Chr(intUpper)
    Case 3
'>>>Poslednφ volbou p°φkazu Case je Case 3, kterß se provede v p°φpad∞, kdy intRand je napln∞na hodnotou 3. V tomto p°φpad∞ se prom∞nnß strPartPass naplnφ vygenerovßnφm znaku funkcφ Chr s parametrem obsahu prom∞nnΘ intLower.
      strPartPass = Chr(intLower)
    End Select
'>>>Na zßv∞r ka₧dΘho "pφsmene" staΦφ vygenerovan² znak p°ipojit k ji₧ hotovΘ Φßsti hesla, kterΘ si uklßdßme do promnnΘ GenPWD. P°ipojφme tedy prom∞nnou strPartPass, kterou jsme si pomocφ Chr vygenerovali.
  GenPWD = GenPWD & strPartPass
Next
End Function
%>
Jak se funkce chovß si odzkouÜejte na adrese http://www.netday.cz/web/examples/genpwd/.

Zden∞k Cendra
ceskywap@ceskywap.cz



   Souvisejφcφ Φlßnky
TextLink.cz