관리 메뉴


Kinesis´s Open Document

패스워드(비밀번호) 변경 처리 루틴(알고리즘) 본문

MEMO/기술 자료/Routine/Algorithm

패스워드(비밀번호) 변경 처리 루틴(알고리즘)

Kinesis 2012. 10. 9. 14:26

패스워드 변경 처리 루틴(알고리즘)

 

::: in Javascript ( Ajax 를 사용한 경우 )

- 정규식을 통해 비밀번호가 정상적인지 확인한다.

- 바꿀 비밀번호 및 확인 비밀번호가 일치하는지 확인한다.[각주:1]

- 현재 비밀번호 입력 값 및 바꿀 비밀번호 와 확인 비밀번호를 서버측으로 POST 한다.

( 로그인 되어 있는 상태일 것이기 때문에 사용자 ID 값은 전송하지 않고 서버측에서 별도로 확인하도록 한다 )[각주:2]

※ 각각의 조건에 대해 조건식이 부합하지 않는 경우 적절한 메세지를 출력하고 프로세스를 중단 및 종료한다.

 

::: In Server-Side ( with Database )

- Reqeust Referer 주소가 접근 허용된 곳에서 요청된 것인지 확인한다.[각주:3]

- 세션이 살아있는지(존재하는지) 확인한다.[각주:4]

- 세션에 사용자 정보 값이 존재하는지 확인하고 사용자 정보를 얻어온다.

- 정규식을 통해 비밀번호가 정상적인지 확인한다.[각주:5]

- 현재 사용자의 Identity 혹은 Sequence 를 바탕으로 현재의 패스워드가 일치하는지 확인한다.

- 바꿀 비밀번호 및 확인 비밀번호가 일치하는지 재확인한다.[각주:6]

- 현재 사용자의 Identity 혹은 Sequence 를 바탕으로 패스워드 값을 새로운 패스워드로 Update 처리 한다.

- 처리 결과에 따른 처리값을 반환한다. (Code 혹은 String 문자열)[각주:7]

※ 위와 마찬가지로 조건식이 부합되지 않는 경우 적절한 메세지나 코드명을 출력하고 프로세스를 중단 및 종료 한다.

 

::: Callback or Response

- 결과 메세지 출력 ( Code 에 따른 메세지 값 또는 넘겨받은 String 문자열 값 )[각주:8]

 

- 2012년 10월 09일 정리 작성 - by Kinesis

- 본 게시물의 저작권은 Kinesis(Hae Kwang, Kim) 에게 있습니다.

 

초대장키 : 5e4571cb959aa3e2f9f06d322c0f1639 - 2012년 10월 11일 만료

 

  1. 서버측에 전달되기 이전에 클라이언트에서 자바스크립트를 통해 한번 처리하여 서버에 Post 되는 경우의 수를 줄여 서버 부하를 줄이기 위한 목적으로 사용하여 서버의 성능 퍼포먼스 유지의 이점을 노리기 위함이다. [본문으로]
  2. ID 값을 넘겨서 넘어온 ID를 가지고 서버측 연산을 처리할 경우, 클라이언트에서 조작을 통해 다른 사용자의 패스워드 변경을 노리게 되는 보안 문제점을 야기할 수 있기 때문이다. [본문으로]
  3. 웹 어플리케이션 및 외부 연계시스템에서 패스워드 변경 기능을 제공하는 경우 필요한 부분이며, 단순 어플리케이션에서는 생략할 수 있다. 넣는 이유로서는 보안위협의 문제를 줄이기 위함이다. [본문으로]
  4. 사용자 Identity 또는 Sequence 를 Post 시에 넘겨받지 않은 이유는 세션에 사용자 Identity 혹은 Sequence 가 존재할 것이라고 가정하였기 때문이다. 따라서 정상적으로 해당 값을 얻어오기 위해서는 세션이 살아있어야만 한다. (정확하게는 세션이 가진 사용자 정보 데이터를 가리킨다) [본문으로]
  5. 검증의 단계. 넘어온 값을 무조건 신뢰하는 경우 보안 문제가 야기된다. 특히 특수문자 등이 넘어오는 경우 SQL Injection 또는 서버측 스크립트 처리 연산 Injection 발생 등의 문제가 발생할 수 있으니 필요하다면 적절한 인/디코딩 과정이 필요할 수 있다. [본문으로]
  6. 검증 단계, 앞서와 마찬가지로 Injection 등의 문제가 발생할 수 있으며, 기본적으로 사용자에게서 넘어온 데이터 혹은 값은 무조건 신뢰되어서는 안된다. 따라서 다시 한번 검증을 시행한다. [본문으로]
  7. integer 형태의 code 로 리턴을 한 후 코드에 따른 메세지를 별도로 띄우거나 내지는 자체적으로 메세지를 만들어 되돌려주는 방법을 사용할 수도 있다. 이는 개발 프로젝트에 맞게 적절히 처리하도록 한다. [본문으로]
  8. 사용자가 결과를 할 수 있게끔 실질적으로 출력하는 결과 값 표시 부분이다. 표현하지 않는다면 사용자가 혼란해 할 수 있으므로 메시지 표기 처리를 구현해준다. [본문으로]


Comments