개발자 99% 커뮤니티에서 수다 떨어요!
해시 함수와 솔트를 사용해 비밀번호를 안전하게 저장하는 법
공장으로 찍어내고 자식에게 물려줘요! 객체 지향 프로그래밍
함수형 프로그래밍으로 숨은 버그 줄이기
2023. 12. 19
EP.35~EP.38
비밀번호는 보안에 아주 중요한 부분이다. 아무런 조치 없이 데이터베이스에 저장하기만 한다면 운영자, 개발자 등 누구나 개인의 비밀번호를 알 수 있어 시스템 설계에 각별히 신경을 써야 한다.
해시 함수의 특성
해시 함수는 동일한 입력 값에 대해 동일한 출력 값을 가지는 1:1 대응 관계가 유지된다.
입력 값이 조금만 달라져도 출력 값이 크게 바뀌는 무작위성을 가진다.
반대로 입력해도 한쪽 방향으로만 설계된 함수이기 때문에 원래 값을 알 수 없다.
해시 함수 + 솔트 사용하기
가장 괜찮은 방법은 입력 값을 무작위 값으로 출력해주는 해시 함수의 특성과 무작위 텍스트인 솔트를 합치는 것이다.
속성과 기능을 가지는 객체를 중심으로 프로그래밍을 하는 프로그래밍 패러다임의 한 종류이다.
객체 지향 프로그래밍의 특성
클래스 : 같은 속성을 가지지만 다른 값을 가진 각각의 객체를 값만 다르게 넣으면 알아서(?) 만들어준다. 코드의 양이 줄고 속성의 오타나 누락의 경우도 피할 수 있다. 새 속성을 부여할 때도 클래스 하나에만 추가하면 된다.
상속 : 부모가 자식에게 재산을 물려주는것과 똑같은 개념으로 부모 클래스의 기본 속성을 자식 클래스가 그대로 상속받아 사용할 수 있고, 자식 클래스에서는 자신만의 속성을 추가할 수 있다.
원하는 값에 대한 처리를 함수에 정의하고, 함수를 통해 얻는다.(?) 버그가 발생하기 어려운 구조라 개발자에게 매우 유용하다!
선언형 프로그래밍 : 원하는 결괏값을 선언한다.
명령형 프로그래밍 : 원하는 결괏값에 도달하는 방법을 선언한다.
계속해서 뚫리는 보안을 막아내고 새로운 방법을 개발해내는 보안 전문가들이 새삼 대단하다. 나도 비밀번호 바꾸기라도 잘 해야겠다.