[코드스테이츠] S4.Unit1 회고

JinYoung Choi·2023년 6월 5일
0

세션 4가 시작됐다!

시작하기 전에 세션 2에서 학습된 내용들을 한번 복습하고 오라 쓰여있었다.

세션 2로 다시 돌아가 한번 봤는데 절반은 기억이 안 나 너무 당황스러웠다..

공부하는 데 시간을 두 배로 쓴 세션! 이젠 안 까먹을 듯!

HTTPS(HTTP Secure 혹은 HTTP over SSL)란?

HTTPS(HTTP Secure 혹은 HTTP over SSL)는 월드 와이드 웹에서 정보를 암호화하여 전송하기 위한 프로토콜. HTTP 프로토콜 위에 SSL/TLS 프로토콜을 사용하여 암호화하는 방식으로 작동하며, 서버와 클라이언트 사이에 전송되는 모든 통신을 암호화한다.

HTTPS를 사용하면 웹 브라우저와 웹 서버 사이의 통신이 외부에서 접근이 불가능하게 되어 정보가 노출되거나 변조되는 것을 막을 수 있다. 특히, 신용 카드 번호나 비밀번호와 같은 민감한 정보를 처리할 때 HTTPS는 필수적이다.

HTTPS는 기본적으로 HTTP와 동일한 프로토콜을 따르지만, SSL/TLS를 통한 암호화 단계가 추가되기 때문에 더 안전하다. 이 암호화 단계는 클라이언트와 서버 사이에서 일어나며, 이를 통해 민감한 데이터가 안전하게 전송될 수 있다.

서버가 HTTPS를 지원하기 위해서는 SSL 인증서가 필요하며, 이 인증서는 인증서 기관(CA)에 의해 발급된다. 사용자는 웹 브라우저의 자물쇠 아이콘이나 'https://'로 시작하는 URL을 통해 해당 사이트가 HTTPS를 사용하고 있음을 알 수 있다.

쿠키(Cookie)란?

쿠키(Cookie)는 웹사이트가 사용자의 웹 브라우저에 저장하는 작은 데이터 조각을 의미. 이는 웹사이트가 사용자의 컴퓨터에 접근하여 읽을 수 있는 텍스트 파일 형식으로 저장된다.

쿠키는 주로 사용자가 웹사이트에서 수행한 작업을 기억하기 위해 사용된다. 예를 들어, 사용자가 웹사이트에 로그인하면 서버는 사용자의 로그인 정보를 쿠키에 저장할 수 있다. 그리고 사용자가 다음에 같은 웹사이트를 방문하면 웹사이트는 쿠키를 읽어 사용자가 이전에 로그인했던 사실을 인지하게 된다.

또한, 쿠키는 사용자의 쇼핑 카트 항목, 언어 선호 설정, 페이지 테마 등과 같은 사용자의 선호 설정을 저장하는데도 사용될 수 있다. 이를 통해 웹사이트는 개인화된 사용자 경험을 제공할 수 있다.

그러나 쿠키는 사용자의 개인 정보를 포함할 수 있으므로 보안 문제가 될 수 있다. 따라서 웹사이트는 쿠키를 안전하게 처리하고, 사용자는 웹사이트가 쿠키를 어떻게 사용하는지 알아야 합니다. 대부분의 웹 브라우저는 사용자가 쿠키의 사용을 제어할 수 있도록 설정 옵션을 제공하며, 필요에 따라 쿠키를 삭제할 수 있다.

세션(Session)란?

세션(Session)은 특정 웹사이트에 방문한 사용자와 그 웹사이트 사이에서 서버가 관리하는 상태 정보를 의미한다. 사용자가 웹사이트에 로그인하거나 어떠한 정보를 입력하는 등의 행위를 할 때, 서버는 그 정보를 세션에 저장하여 사용자가 웹사이트 내에서 이동할 때마다 그 정보를 계속해서 유지할 수 있게 해준다.

예를 들어, 온라인 쇼핑몰에서 상품을 장바구니에 추가하면, 그 정보는 사용자의 세션에 저장된다. 사용자가 사이트 내의 다른 페이지로 이동하더라도 장바구니에 추가한 상품은 그대로 유지되는데, 이는 세션 때문. 또한 사용자가 로그인을 하면, 그 로그인 정보 역시 세션에 저장되어 사용자가 사이트를 이용하는 동안 로그인 상태가 유지된다.

그러나 세션은 일정 시간이 지나면 만료되어 그 정보가 삭제되므로, 영구적인 데이터 저장에는 적합하지 않다. 또한 세션 정보는 서버에서 관리되기 때문에, 과도한 세션 사용은 서버의 부하를 증가시킬 수 있다.

세션을 통해 웹사이트는 사용자마다 개별적인 상태 정보를 관리할 수 있으므로, 사용자 경험을 개선하는 데 큰 도움이 된다. 그러나 세션 정보는 민감한 데이터를 포함할 수 있으므로, 보안에 신경 써야 한다.

해싱 (Hashing)란?

해싱(Hashing)은 어떤 데이터를 고정된 길이의 고유한 값, 즉 해시값으로 변환하는 과정을 의미.
이 변환은 특정한 해시 함수를 통해 이루어진다.
해시 함수는 서로 다른 입력 값에 대해 가능한 한 서로 다른 결과값을 반환하는 함수를 말한다.

SQL 인젝션(SQL Injection)란?

SQL 인젝션(SQL Injection)은 악의적인 SQL 코드를 웹 어플리케이션의 데이터베이스 쿼리에 삽입하여 데이터베이스를 비정상적으로 조작하는 보안 공격 기법.

이런 공격은 주로 웹 어플리케이션에서 사용자의 입력을 적절히 필터링하거나 이스케이핑하지 않고 그대로 SQL 쿼리에 사용할 때 발생한다. 악의적인 사용자는 이러한 취약점을 이용하여 원치 않는 SQL 문을 실행시키거나 민감한 정보에 접근할 수 있다.

예를 들어, 로그인 폼에서 사용자 이름과 비밀번호를 입력받아 이를 통해 SQL 쿼리를 생성하는 경우를 생각해보자. 사용자 이름에 정상적인 문자열 대신 " OR "1"="1"과 같은 값을 입력하면, 이는 항상 참이 되는 조건이 되어 쿼리의 원래 의도를 완전히 무시하게 만들어버린다. 이로 인해 악의적인 사용자는 원하는 쿼리를 실행하거나 로그인 과정을 우회할 수 있게 된다.

SQL 인젝션을 방지하기 위해 주로 사용되는 방법은 사용자의 입력을 적절히 필터링하거나 이스케이핑하는 것이다. 또한, 가능하다면 Prepared Statement와 같은 방법을 사용하여 SQL 쿼리를 생성하는 것이 좋다. 이는 쿼리의 구조를 미리 정의하고, 사용자 입력을 이 구조에 맞게 채워넣는 방식으로 SQL 인젝션을 방지할 수 있다.

사이트 간 요청 위조(Cross-Site Request Forgery, CSRF)란?

사이트 간 요청 위조(Cross-Site Request Forgery, CSRF)는 웹 애플리케이션에서 발생할 수 있는 보안 취약점 중 하나로, 공격자가 사용자의 세션을 이용하여 서버에게 사용자가 의도하지 않은 요청을 보내게 만드는 공격 방식.

예를 들어, 사용자가 로그인 상태로 웹 사이트를 이용하고 있는 중 공격자가 마련한 특정 웹 페이지(예: 이메일 내 링크, 해킹된 웹 사이트 등)를 클릭하게 되면, 공격자는 사용자의 권한을 이용하여 서버에게 악의적인 요청을 보낼 수 있다. 이를 통해 공격자는 사용자의 권한으로 게시글을 삭제하거나 정보를 변경하는 등의 행위를 할 수 있게 된다.

profile
백엔드 취준생

0개의 댓글