2010-12-21 4 views
2

가 현재 내 인증은 다음과 같습니다PHP 인증

사용자가 서버로 전송 된 사용자 이름/암호 조합 를 입력, 사용자 이름과 암호를 소금에 절인하고 (MD5)를 해시와 데이터베이스에 대해 확인.

정확하고 사용자가 지정한 경우 1 개월의 쿠키가 설정됩니다.

사용자가 쿠키를 설정하도록 지정하지 않은 경우 5 분 동안 사용하지 않으면 자동으로 로그 아웃됩니다.

제 질문은 간단히 말해서 필요한 경우, 어떻게하면 더 안전하게 만들 수 있는지입니다. 저는 PHP에 능통하지만 보안면에서는별로 좋지 않습니다. 어떤 도움, 조언, 리드 및 일반적인 도움을 주시면 감사하겠습니다.

감사합니다. :)

+0

, 드루팔에 대해 동일한 기능의 저자이 문서를 보라; http://jaspan.com/improved_persistent_login_cookie_best_practice –

답변

0

는 여기에 몇 가지 아이디어가 있습니다 :

  1. 은 가장 중요한 역할을 한 SSL을 사용하는 것입니다. 비밀번호는 일반 텍스트 으로 전송되므로 누구나 볼 수 있습니다.
  2. 설정중인 쿠키는 무엇입니까? 해당 쿠키를 복사 한 다음 의 승인을받을 수 있습니까? 어쩌면 임의의 토큰을 생성하고 설정하는 것입니다.
  3. 사이트 위조 방지 및 교차 사이트 스크립팅에 대해 보호 하시겠습니까?

내가 생각할 수있는 전부입니다.

+0

1) 나는 SSL을 지원할 수 없기 때문에 거기서 물 밖으로 빠져 나온다. 2) 임의의 토큰 아이디어를 주셔서 감사합니다. 지금부터 사용하겠습니다. 3) 가능한 한 많이 생각할 수 있습니다. – foxtrot

+0

보안을 원하면 실제로 SSL을 사용해야합니다. 그렇지 않으면, 그냥 애완 동물 프로젝트에 대한 그때 난 당신이 볼 필요가 없습니다 볼 수 있습니다. –

+0

SSL을 사용해야하는 이유 : http://stackoverflow.com/questions/4495570/to-ssl-or-not-to-ssl – markmnl

1

mysql_escape_real_string으로 SQL 인젝션을 피하기 위해 사용자 이름과 암호에서 슬래시를 벗기십시오. 필요한 모든 보안이 있어야합니다.

0

새 인증을 발명하려는 것 같습니다. 하지 마세요 - 아미르의 조언을 따르십시오. 모든 수단으로 암호를 조정할하려는 경우

는하지만, 여기에 자바 스크립트와 아이디어입니다 :

소금은 비밀이 아니다. 클라이언트에게 nonce (충분한 엔트로피의 또 다른 무작위 값)과 함께 보내십시오.

클라이언트가 nonce + hash(timestamp + hash(salt + password))을 다시 보냅니다. 서버가 nonce이 최근인지 확인합니다.

이렇게하면 재생 공격을 막을 수 있습니다.

(+으로 나는 연결을 나타낸다.) 쿠키의 경우

+0

왜이 모든 작업을 클라이언트 측에서하고 싶습니까? 넌스 (nonce)는 좋은 생각이지만 클라이언트 측에 모든 것을 전송하면 보안을 향상시키는 데 아무런 도움이되지 않습니다. –