webForumDet fria alternativet

Hur säkert är mitt skydd??

4 svar · 259 visningar · startad av ElinPelin

ElinPelinMedlem sedan juni 20011 inlägg
#1

Tjofaderittan.
Tänkte jag skulle ha ett lösenordsskydd på min hemsida, men innan jag använder det så vill jag veta hur säkert det är och hur man eventuellt gör för att gå runt det.

Skriptet ligger som en extern .js och åberopas av tex en länk ( a href="javascript:Check()" )

Så här ser scriptet ut:
Som jag fattat det skall det jag skriver in bli samma som summan längst ner (15103650) och då flyttas jag till en shtml-fil med samma namn som lösenordet ???
1: Hur lätt är det för en utomstående att knäcka detta lösenordet?
2: Hur går man tillväga?
3: Vilket lösenord har jag satt i detta scriptet?

Lycka till!!!
/elin

var base= new Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9","A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z","a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z")
var pass=""
var z=23;
var y=28;
var f= new Array();
var K= new Array();
for (x=0; x<10; x++){
f[x]=x<<9
f[x]+=23
}
for (x=10; x<36; x++){
y=y<<1
v= Math.sqrt(y)
v = parseInt(v,16)
v+=5
f[x]=v
y++
}
for (x=36; x<62; x++){
z=z<<1
v= Math.sqrt(z)
v = parseInt(v,16)
v+=74
f[x]=v
z++
}
var iCounter = 3 //How many retries
function inc(){
iCounter--
if (iCounter > 0)
{
if (confirm("\nFel lösenord.\n\n\n\nFörsök igen."))
Check()
else
alert('Fel lösenord.');
history.go(-1);

}
else
alert('Tre misslyckade försök. SLUT.');
history.go(location.href='apapap.htm');

// You may use this element istead if you want.
// location.href='denied.html' // 3 times incorrect html file

}
function Check(){
pass = prompt("Skriv ditt lösenord.","")
if(pass==null || pass==""){
history.go(location.href='apapap.htm')}
else{
var lpass=(pass.length)+1
for (l=1; l<lpass; l++){
K[l]=pass.charAt(l)
}
var code=0;
for (y=1; y<lpass; y++){
for(x=0; x<62; x++){
if (K[y]==base[x]){
code+=f[x]
code*=y
}
}
}

<!-- STEP TWO: Put access code here! -->
if (code==15103650) // code==[your access code]

go()
else
inc()
}
}
function go(){
location.href=pass+".shtml";
}

JojoxxMedlem sedan juni 20004 308 inlägg
#2

>1: Hur lätt är det för en utomstående att knäcka detta lösenordet?

För en person utan programmeringskunnande så är det tämligen svårt. Annars är det bara en fråga om tid.

>2: Hur går man tillväga?

Det enklaste sättet är att skriva ett program där du inkluderar samma kodvalidering. Sedan matar du den via en loop där du testar med "0", "1" osv. upp till "Z", sedan börjar du om med "00" till "ZZ", sedan "000" osv. Det ser även ut som detta script kan generera "rätt" på fler än 1 kombination, så du kommer att få ett antal olika kombinationer att testa på den riktiga sidan.

>3: Vilket lösenord har jag satt i detta scriptet?

Som sagt, antagligen finns det flera möjliga lösenord. Men du förstår säkert ovanstående resonemang.

---Tillägg---
Nackdelen med denna typ av script (klientsides-script) är alltså att nyckeln är läsbar av användaren. Hade du det som ett serverside-script hade du kunnat se till att låsa ute användaren ute för en timme exempelvis efter 5 felaktiga försök (baserat på IP-nummer). På så vis skulle det ta oändligt lång tid att testa, och du skulle via en log vidta åtgärder för att spåra hackern.

------------------
/ J

[Redigerat av Jojoxx den 18 jun 2001]

ChainsawMedlem sedan sep. 20001 124 inlägg
#3

Jag skulle gissa på fem minuter, plus den tid det tar att skriva ett program som knäcker det hela (totalt kanske en halvtimme).

------------------
Överraska din chef: kom till jobbet i tid idag.

Engine^Medlem sedan dec. 20003 887 inlägg
#4

Det skulle bli lite svårare om du även använde dig av MicroSofts ScriptEncoder (eller vad den nu hette)... det krypterar iaf din .js-fil, men det innebär också att du måste kryptera om filen varje gång du vill göra en ändring i den.

Som sagt ovan, så är det svårt med säkerheten med klientscript...

------------------
Good news is just life's way of keeping you off balance

JohnsenMedlem sedan juli 2000836 inlägg
#5

Jag skulle vilja hävda att det med hjälp av din javascript-logaritm inte går att räkna ut det exakta lösenordet. Dels för att, som jojoxx sa, det finns flera kombinationer som genererar: 15103650, men oxå för att det inte spelar någon roll vilken första karaktär man väljer i sitt lösenord.
Ex: lösenord: a1 ger code: 535, liksom b1, c1 och tillochmed @1.

Sedan talar inte konde om ifall man får använda / eller inte, men det kan man ju givetvis och på så sätt hamna i en annan mapp på servern.

Dock, man kan använda koden för att räkna ut tänkbara alternativ.
Det slipper man helt om man skippar all valideringskod och går direkt på pudelns kärna:

pass = prompt("Skriv ditt lösenord.","");
location.href = pass+ ".shtml";

Ovanstående kod skulle vara mycket säkrare (förutsatt att din server är säker).

------------------
- J-O-H-N-S-E-N -
------------------

136 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)