출처:https://k0102575.github.io/articles/2020-03/hash

비밀번호 유출의 대비

기본적으로 우리는 로그인을 하기 위해 아이디와 비밀번호를 적는다. 그 정보들은 서버에 전송되고 서버에 존재하는 수 많은 데이터를 비교하여 같은 정보가 있는지 비교하고 로그인을 승인 할 지 안할 지를 정하게 된다.

이때 서버에 저장된 패스워드가 암호화가 안된 상태라면 서버와 소통하는 과정에서 비밀번호가 노출되거나 누군가 서버에 접속해서 로그인과 관련 데이터에 접근한다면 쉽게 비밀번호와 아이디가 유출될 것이다.

이렇게 되면 다른 사용자의 정보가 외부로 노출되어 막대한 피해를 입힐 수 있다.

그렇다면 이를 막기위해서는 어찌해야할까?

 

Hash를 이용

해쉬라는 단어가 생소할 수 있을 것이다. 해쉬의 사전적 의미는 '잘게 쪼개다'라는 의미를 가지고 있다. 잘게 쪼갠다는 것은 만약 help라는 단어가 있다면 h와 e, l, p 라는 단어를 각기 다른 형태로 만든다는 의미 있다. 다른 형태로 만든다는 것은 특정한 규칙으로 다른 문자로 대칭시키는 것이다.

이렇게 되면 규칙을 모른다면 help라는 단어는 dwqfqqfwq 이런식으로 변환 돼 표면적으로 이해를 하지 못할 것이다.

이런 방법을 비밀번호에게도 적용하게 된다면 만약 비밀번호라는 데이터를 다른 사용자가 습득하게 되더라도 제대로 활용하지 못하게 되는 것이다.

 

 사이트 보안을 철처하게 할 수 있는 나의 생각 

hash라는 암호화 기법은 수많이 존재할 것이다. 그렇다면 하나의 기법을 사용하여 서버의 데이터를 암호화 시킨다면 이는 쉽게 위험에 노출되는 것과 같다고 생각한다. 물론 그 암호화 규칙이 외부에 알려지지 않았을 경우는 상관없지만 만약 중간에 분석이 완료되었다면 문제가 생길 수 있기 때문이다.

이를 최대한 방지하기  위해 많은 암호화 기법을 쓰는 것이다. 1번, 2번, 3번 데이터를 각기 다른 방식으로 랜덤하게 암호화 하고 몇번째에 무슨 암호화 기법이 사용되었는지에 대한 정보를 다음 파일은 따로 보안을 신경써서 저장한다.

그리고 특정 사용자가 데이터를 요청하면 몇번 행에 이 데이터가 있는지 확인하여 거기에 맞는 암호화 기법을 사용하여 데이터를 분석해 내보낸다. 물론 이중으로 확인해야한다는 번거로움은 있지만 최적화를 한다면 충분히 사용가능한 정보이다.

아니면 한번 로그인한 클라이언트 측에 로그인 정보가 유지된다면 쿠키에 그 유저가 사용하는 데이터의 암호화기법 방식을 저장하여 서버와 소통할때 바로바로 변환하여 하는 방식도 있을것이다.

그냥 나의 생각을 끄적여 봤다... 

 

'Web > Web 개발' 카테고리의 다른 글

[php] 언어 정리  (0) 2022.04.19
JS, php언어 공부  (0) 2022.04.18
php 를 이용한 로그인 페이지 만들기  (0) 2022.04.03
[web] mysql database 및 table 만들기  (0) 2022.03.31
web 로그인 페이지 만들기 프로젝트 1  (0) 2022.03.30

+ Recent posts