반응형 프로그래밍 언어22 [TypeScript] Bcrypt를 이용한 비밀번호 해쉬화(암호화) 회원가입을 할 때 데이터베이스에 비밀번호 같이 보안에 민감한 정보를 그냥 저장하면 안되고 암호화해서 저장하는게 안전하다. node.js에서는 주로 Bcrypt를 사용해서 비밀번호 해쉬화를 해 저장한다. 해쉬화는 단방향으로 해쉬 알고리즘을 이용하여 비밀번호를 암호화시키며 당연히 단방향이라 복구는 불가능하다. 다시 말하면 한쪽 방향으로만 암호화를 하는 단방향 암호화이기 때문에 암호화는 가능하지만 복호화는 불가능하다. 기존 해시 함수에서는 무차별 대입 공격(고성능 GPU를 이용해 무차별적으로 해시함수를 대입해 같은 digest를 찾는 공격)에 취약했는데 bcrypt는 salting 방식을 통합하여 취약점을 보완했다. 임의의 salt 값을 덧붙여 hash 함수를 진행하기 때문에 같은 비밀번호여도 다른 diges.. 2023. 12. 15. [GoLang] 환경변수(.env) 설정 어느 프레임워크에서나 데이터베이스를 직접 연결할 때 데이터베이스 정보를 절대 코드에 직접 입력하지 않는다. 보안상 이슈 때문에 보통은 .env 안에 환경변수로서 정보들을 관리한다. (데이터베이스 뿐만 아니라 인증에 필요한 정보나 그 외 보안상 필요한 정보는 환경변수로 관리한다. 일단 go에서는 똑같이 루트 디렉토리에 .env 파일을 만들어준다. 그리고 필요한 정보를 입력해준다. 지금은 로컬에서 돌리지만 클라우드 디비를 활용할 경우 그에 맞는 정보를 입력해야한다. 그리고 디비를 연결할 때 env를 먼저 로드해줘야한다. err := godotenv.Load() if err != nil { log.Fatal("Error loading .env file") } dbHost := os.Getenv("DB_HOST.. 2023. 12. 8. [Golang] echo postgresql 연결 시 panic: sql: unknown driver "postgres" (forgotten import?) 문제 해결 새롭게 시작한 프로젝트에서 go 언어를 도입해봤다. 배우기 시작한지 1주일도 안됐지만 에러가 터져나오는데 데이터베이스로 postgresql을 선택한 뒤 연결 하려고 했다. package storage import ( "database/sql" "fmt" "log" "os" "github.com/joho/godotenv" ) var db *sql.DB func InitDB() { err := godotenv.Load() if err != nil { log.Fatal("Error loading .env file") } dbHost := os.Getenv("DB_HOST") dbPort := os.Getenv("DB_PORT") dbUser := os.Getenv("DB_USER") dbPass := os.G.. 2023. 11. 29. [Dart] 추상화 클래스와 상속, Mixin 추상화 클래스 추상화 클래스는 객체를 생성할 수 없는 클래스이다. 추상화 클래스는 다른 클래스들이 직접 구현 해야 하는 메소드들을 모아놓은 것이라고 할 수 있다. 먼저 추상화 클래스를 작성해보자 abstract class Human { void walk(){} //반환 값과 함수 이름만 선언 } Human이라는 추상화 클래스는 walk라는 메소드를 가지고 walk 메소드는 void 반환타입을 가진다. 그리고 이 Human 추상화 클래스를 사용하기 위해서 Player 클래스가 Human 클래스를 상속을 받는다. 다음과 같이 하면 된다. class Player extends Human{ String name; int xp; Team team; Player({required this.name,required .. 2023. 10. 25. 이전 1 2 3 4 5 6 다음 반응형