1학기가 끝나고 여름방학이 시작되었다
홈페이지를 만들기 위해 먼저 데이터베이스 설계를 먼저 진행하였다
VSCode ERD Editor

최근에 알게 된 확장 프로그램이다
이전에는 다른 프로그램을 활용하여 데이터베이스 연결관계 같은 실습을 진행해 본 적이 있는데 이번에는 간단하게 위의 확장 프로그램을 사용하여 설계를 간단히 해보았다
이름.vuerd.json
형식으로 파일을 생성하면 테이블과 관계설정등을 할 수 있고, 내가 만든 테이블에 관련된 명령어도 만들어주는 기능이 있다
설계 내용 1
이번에는 조금 더 쳬계적으로 만들기 위해 크게 2가지 부분으로 구분하였다

초록색 부분은 로그인, 회원가입 관련된 부분이다
당연히 prepared statement로 구현할 것이지만 그래도 언제 이 방법이 취약해질지도 모른다
그래서 3가지 방법을 생각했다
1. 사용자가 입력한 아이디를 활용하기
사용자가 입력한 아이디를 활용하여 회원인지 아닌지를 검증하는 방법이다
1. 사용자가 입력한 아이디가 존재하는지 확인
2. 아이디가 존재한다면 이 아이디를 활용하여 member 테이블에서 해당 아이디의 정보를 가져온다
3. 사용자가 입력한 아이디와 비밀번호를 변수에 할당한다
4. member 테이블에서 가져온 아이디와 비밀번호를 변수에 할당한다
5. 마지막으로 테이블에 있는 정보와 회원이 입력한 정보가 일치하는지 변수를 활용하여 검사한다
우리 동아리 홈페이지는 소규모를 위한 홈페이지며 동시 접속자가 많아봤자 20명이 될 리가 없다 ( 작성일 기준 )
추가적으로 로그인과정만 위와 같이 시간이 좀 걸릴 뿐이고 회원 명단도 50명이 안 넘어가서 시간이 많이 걸리지 않는다
로그인이 된 이후에는 문제없을 거라 생각해서 2단계 검증 과정을 생각했다
이 과정에서 중요한 것은 True, False의 값이 아닌 변수들이 일치하는지 불일치하는지를 확인하는 과정인 거 같다!!
2. 사용자의 입력값에 특정 문자 추가하기
사용자가 아이디, 비밀번호를 입력하여 로그인을 시도하면 아이디, 비밀번호에 특정값을 추가해서 검증하는 방식이다
1. 사용자가 아이디, 비밀번호를 입력하여 로그인
2. 사용자의 입력값의 마지막에 ruang, tistory를 각각 추가한다 ( 맨 앞, 양끝에 추가하는 방법도 있다 )
3. 완성된 쿼리문을 활용하여 회원 조회 후 결과 반환
SQL Injection의 경우 사용자의 입력값에 의해 SQL이 변형되면서 발생한다
내가 임의의 문자를 추가하면 SQL Injection을 시도하려고 할 때 에러가 발생해서 SQL Injection이 발생하지 않게 될 거라 생각한다
하지만 이 방법을 적용하였을 경우 회원가입할때에 동일한 방법으로 해줘야 할 것이다
3. 아이디의 첫번째값 활용하기
사용자의 아이디가 asdf라면 a로 시작하므로 a로 시작하는 테이블에서 정보를 찾도록 한다
1. 사용자의 입력값에서 제일 첫번째 값 확인
2. 해당하는 조건에 맞는 테이블에 고객정보 확인
3. 회원이 있을 경우 로그인 성공
이 방법같은 경우 a부터 f까지 묶고 e부터 z까지 묶는 등의 방법으로 다양하게 할 수 있을 것 같다
그리고 여기에서 사용자가 입력한 아이디, 비밀번호의 길이를 활용하여 추가적으로 검증하는 방법이 있을 수 있을 것 같다
설계 내용 2
로그인, 회원가입과는 별도로 따로 사용되는 데이터베이스이다

이곳은 회원들의 문제풀이에 대한 내용과 회원정보, 자기소개, 학적 상태 등에 대한 내용으로 이루어져 있다
여기서의 데이터 유출은 없을것이라 생각해 위와 같이 구성하였고, 홈페이지 개발을 혼자 진행하기도 하고 가능한 빨리 개발을 끝내려 하기에 비밀번호 찾기와 비밀번호 변경기능은 만들지 않으려고 한다
로그인하면 최근 접속정보고 나오도록 되어있으므로 만약 누군가 나의 계정을 무단으로 사용한다면 관리자 권한으로 해당 계정을 탈퇴처리하고 다시 가입하라고 할 예정이다

확실히 홈페이지를 처음만들때와 비교해서 시간도 오래 걸리고 생각해야할 것들도 많다
하지만 지금까지 성장해오면서 알게된것들에 대해서 적용할 수 있어서 너무 좋은 기회인 것 같다
'Projects > 동아리 활동' 카테고리의 다른 글
| [학교 동아리] 동아리 홈페이지 5 (0) | 2024.06.27 |
|---|---|
| [학교 동아리] 동아리 홈페이지 4 (0) | 2024.06.27 |
| [학교 동아리] 동아리 홈페이지 3 (0) | 2024.06.25 |
| [학교 동아리] 동아리 홈페이지 1 (0) | 2024.06.02 |
| [학교 동아리] BITB 피싱사이트 제작 후 체험활동 진행하기 (0) | 2024.04.20 |