2012-06-17 7 views
1

안녕하세요. 웹 사이트 페이지의 암호 보호 기능으로 'pasuser form'을 사용하고 있습니다. 아래 스크립트는 하나의 암호와 사용자 이름 만 사용할 수 있습니다. 누구든지 여러 암호/사용자 이름 사용을 위해 스크립트를 변경하는 방법을 알고 있습니까? 기본적으로 나는 각 사용자가 고유 한 암호/사용자 이름을 선호합니다. 시간과 도움을 위해 대단히 감사합니다.두 개 이상의 암호

의 항목을 배열에 사용자 이름과 암호를 넣고 루프 ... 클라이언트 코드에서

function pasuser(form) { 

if (form.id.value != "user") return alert("Invalid UserID"); 
if (form.pass.value != "pass") return alert("Invalid Password"); 
location = "http://tempuri.org/"; 
} 
+22

진지한가? * 비밀번호 *를 클라이언트 측 스크립트에 넣고 있습니까? –

+1

웹 페이지의 간단한 게이트 키퍼가되어야합니다. _ 사람들이 읽을 수 있기 때문에 이것은 매우 부적절합니다. 대신 간단한 HTTP 기본 인증을 사용하여 웹 서버에서 관리하는 서버 측 암호를 넣을 수 있습니다. –

+0

AJAX에 대해 알아보고 ** 서버 측 **에서 확인하기 위해 사용자 이름과 암호를 보내십시오. 이렇게하면 모든 사용자에게 표시되는 것과 같이 올바른 이름과 암호가 무엇인지 알 수 있습니다! –

답변

1

암호 보호는 어리석은하지만 원칙은 뭔가 다른 유용 할 수 있습니다 :

var pass = [ 
    { user: 'ebby', pwd: 'john3' }, 
    { user: 'john', pwd: 'kate4' }, 
    { user: 'kate', pwd: 'ebby1' } 
]; 
// look for a match 
var found = false; 
for (var i = 0; i < pass.length; i++) { 
    if (form.id.value == pass[i].user && form.pass.value == pass[i].pwd) { 
    found = true; 
    break; // exit from loop 
    } 
} 
// act on the result 
if (found) { 
    location = "http://tempuri.org/"; 
} else { 
    alert('User name or password is wrong.'); 
} 

참고 : 사용자 이름이 올바른지 아닌지 방문자에게하지 관례입니다. 로그인 프로세스가 특정 사용자가 존재하는지 여부를 알아내는 데 사용할 수 없어야합니다. (사용자 이름과 비밀번호가 페이지 소스에 명확하게 표시되지만 중요한 것은 아니지만 ...)

+2

이것은 비효율적입니다. (O (n)) 해시를 사용하면 O (1) 근처에 오게됩니다 :'var pass = {ebby : 'john3', john : 'kate3', ...};' (패스 [사용자] === 제공된 패스워드) ...'. – josh3736

+1

@ josh3736 : 예, * 더 효율적으로 수행 할 수 있지만 그 차이를 눈치 채지 못할 것이라고 생각하지 않습니다. 코드는 효율성이 높아질 때까지 비효율적이지 않습니다. – Guffa

+0

차이점은 단지 100 개의 항목으로 [** 매우 ** 눈에 띄게] (http://jsperf.com/hash-v-array)입니다. – josh3736

-2

쿠키를 설정하고 인증하는 동안 가져옵니다. 클라이언트는 쿠키 내용을 볼 수 없습니다. 그러나 그것은 PHP를 사용하는 것이 좋습니다.

+0

클라이언트가 쿠키를 볼 수 없습니까? 저 할 수 있어요! 사파리 사용 : 환경 설정 -> 개인 정보 -> 쿠키 (그리고 나는 다음에 무엇을 기억하지 못합니다. '쿠키 관리 ...'와 같다고 생각합니다.) – 11684

+0

@ 11684, 아마도 그는 * 세션 *을 의미할까요? – josh3736

+0

세션은 쿠키이지만 (매우 짧은 수명이지만) 볼 수 있습니다. @ josh3736 – 11684

관련 문제