정보보안 및 해킹(115)
-
[DB] DB에 이미지를 저장하는 여러가지 방법
데이터베이스에 이미지를 저장하는 방법에는 여러가지 방법이 있는데, 본 포스팅에는 총 4가지 방법을 소개하고 싶다. 이미지 자체를 BLOB로 저장이미지 데이터를 LONGBLOB데이터로 변환하여 DB에 저장한다BLOB(Binary Large Object)라고 하여, 최대 2,147,483,647길이의 가변길이 이진 문자열이라고 한다.이미지를 Base64로 저장이미지를 Base64로 인코딩하여 저장한 후 읽어올 때에도 디코딩하여 읽어오는 방법이 있다.Base64는 64진법으로 0부터 63까지 사용하면서도 최대한 데이터 손상을 최소화할 수 있어서 많이 사용되고 있는 것으로 보인다.보통 Mobile Application에서 띄울 때 많이 사용하는 방식인 것으로 보인다.이미지 전체 경로를 저장이미지를 불러오는 전체..
2024.05.06 -
[Normaltic's 취업반 과제] 게시판에 글 등록하기
컨셉 한번 지독하다앞서 글 쓴 것처럼 필자의 웹사이트는 뮤지컬 / 연극 / 콘서트 관극을 기록하는 웹사이트이므로, 관극한 날짜, 카테고리, 공연 이름, 리뷰(선택사항)을 사용자로부터 받아와서 DB에 저장하면 된다.index.php - 글 등록 버튼 추가 및 등록 페이지로 이동하는 이벤트 발생[생략] Write [생략]write_board.php - 글 등록 페이지. 관극한 날짜를 입력할 수 있도록 하고, DB에 있는 카테고리 enum값을 받아와서 Deopdown으로 띄우고, 공연 이름을 입력하고였고. 후기는 선택사항으로 입력할 수 있도록 NUL..
2024.05.05 -
[Problem Solve] OSError: [Errno 98] Address already in use 해결
필자는 이 에러때문에 화가 많이 났었다...왜 자꾸 잡고있는가..일단 해당 에러가 왜 생기는지를 먼저 알아보자면,sudo python3 -m http.server [PORT][PORT] 안에 들어가는 포트 번호를 이미 어떠한 프로세스가 잡고 있기 때문에 생기는 에러이다.에러 해결방법은 간단하다.우선 아래 명령어로 어떤 프로세스가 포트를 잡고있는지 확인!sudo lsof -i :[PORT]그리고 결과가 나올것이다~PID 즉 프로세스 ID를 보자. 필자의 경우에는 15722가 잡고있어서 에러가 발생한 경우였다.해당 프로세스를 죽이면 된다.sudo kill -9 [PID]-9는 SIGKILL이다.해당 종료 신호는 프로세스를 '즉시' 죽이므로, 중요한 데이터가 있다면.. 아래, ref를 참고하길 바란다.. re..
2024.05.04 -
[Normaltic's 취업반 과제] jwt를 이용한 로그인
sign_up_func.php - 회원 가입 시 사용자가 입력한 정보들을 jwt로 변환시켜 정보에 함께 저장 (현재 평문 비밀번호를 통한 로그인 등 많은 것들이 엮여있어서 다른 요소를 삭제하지는 못함 / 삭제 예정)[생략]function try_signup($username, $userpassword, $userage, $useremail, $userphone){ if (!connect_db()) { die("Connection failed: " . mysqli_connect_error());} $table_name = "rame_table"; $userpasswordhash = hash('sha256', $userpassword); $jwt = set_query_to_jwt($userema..
2024.05.03 -
[System] Default Login System
식별많은 데이터 중 특정 데이터를 찾아내는 것unique, 즉 같은 컬럼의 다른 데이터와 중복되지 않는 유일한 값이어야 한다.보통 PRIMARY KEY로 등록하여 사용ex) ID인증로그인을 시도하는 사람이 정말로 그 유저인지 확인하는 작업ex) password, OTP 식별값 : userid인증값 : userpassword Hash일방향 함수. 한 쪽으로 값을 변경할 수 있지만 되돌릴 수 없다. 식별과 인증을 동시에userid와 password를 하나의 쿼리문에서 검사, userpassword는 평문으로 비교select * from member where id='$user_id' and pass='$user_pass'식별과 인증을 따로userid를 먼저 검사한 후 통과하면 userpassword 검사 ,..
2024.05.03 -
[Normaltic's 취업반 과제] jwt
JWTJSON Web Token정의전자서명 된 URL-safe(URL에 그대로 사용하면 안되는 문자를 인코딩 등을 통해 변조)의 JSON속성 정보(Claim)을 JSON구조로 표현한 토큰구성header / payload / signatureheader토큰의 타입과 알고리즘으로 구성JWT + [HMAC / SHA256 / RSA ...]payload토큰에 담을 속성 정보(Claim)으로 구성. 복수의 Claim 가능등록된 Claim(Registered), 공개 Claim(Public), 비공개 Claim(Private)name / valuesignature비밀 키를 포함하여 암호화방식서버와 클라이언트 간 데이터를 주고 받을 시 Http 리퀘스트 헤더에 JSON토큰을 넣은 후 서버의 인증 과정 없이 해당 토..
2024.05.03