본문 바로가기

cs/컴퓨터와 네트워크

컴퓨터와 네트워크3

- 쿠키와 세션 

 http 는 무상태로 서버가 이전상태를 보존하지 않는다 그러므로 이전에 어떤 것이 주고받았는지를 까먹는다. 그렇기 때문에 이 유저가 매번 내가 누구인지를 서버에 알려줘야한다. 이때 쿠키에 현재유저의 세션id를 서버에서 프론트로 건네주고  프론트는 리퀘스트를 날릴때 쿠키에 세션id를 같이 건네주어 서버가 디비에서 보내준 id를 찾아서 현재 유저가 누군인지를 안다.

 

- jwt 

모바일에서는 쿠키를 사용할 수 없기때문에 나온것이 바로 토큰이다 . 그중에 jwt가 있는 그 안에는 헤더 내용 서명으로 이루어져있다.

- SOP, CORS

1. SOP : 동일 출처 정책 

   sop는 한 origin에서 로드된 문서 또는 스크립트가 다른 origin의 리소스와  상호 작용할 수 있는 방법을 제한하는 중요한 보안 메커니즘이다.  origin이란 것은 스키마에서 포트 까지 모두 합친 url이다. 동일함의 조건은 이 세개가 다 동일하다면 동일 출처로 판단한다.웹 브라우저에서 동작하는 프로그램은 로딩된 위치에 있는 리소스만 접근할 수 있는 정책이다.

그러나 현재는 다른 외부 api를 쓰는 경우가 많기 때문에 그렇게 되면 sop를 통해 소통을 할 수가 없다 그러므로 대안으로 나온 것이 cors이다.

2. CORS: 서로 다른 출처 접근 

다른 출처에 있는 리소스에 접근이 가능하게 하는 것으로 서버에서  다른 프론트에서 들어오는 api 호출을 허용하는 것이다. 

여러 cors 에러 종류가 있는데 그건  아래를 참고하자

https://www.jeong-min.com/30-cors-fe/ 

방법으로는 헤더에  접근 권한을 주는 헤더를 추가하는 경우, 서버에서 특정 도메인 접근을 허용하는 것 

프론트에서는 proxy를 통해 해결할 수 있다 .(로컬만 가능)

 

 

- rest api 

rest api는 소프트웨어 프로그램 아키텍처의 한 형식이다. http 프로토콜을 그대로 활용하기 때문에 활용할 수 있는 아키텍처 스타일이다.

 

- rest api 제약사항 

1. 동사는 사용하지 않으며 명사를 사용한다.

2. 마지막에 /를 포함하지 않는다.

3. 언더바 대신 하이폰을 사용한다. ( -)

4.파일확장자는 uri에 포함하지 않는다.

 

 

- URL, URI, URN 차이가 뭘까요?

 uri: uri는 인터넷의 자원을 식별할 수 있는 문자열을 의미한다. 하위 개념으로 url,run이 있다.

url: url은 네트워크 상에서 리소스 위치한 정보를 나타낸다.

urn: http와 같은 프로토콜을 제외하고 리소스의 name을 가리킨다.

 

- XSS 공격이 무엇이고, 방어하는 방법을 설명해주세요.

공격자가 상대방의 브라우저에 스크립트가 실행되도록 해 사용자의 세션을 가로채거나,웹사이트를 변조하거나,악의적 콘텐츠를 삽입하는 것을 말한다.

 

1. 정규표현식을 통해 특수문자를 입력받지 못하도록 처리 

2. 입력갑을 치환- 특수문자를 문자열로 치환하기 

악성 스크립트를 만들 수 있는 특수 문자

ASCII 문자 참조 문자 ASCII 문자 참조 문자
& & " "
  <   '
> >   /
( ( ) )

3. 그대로 문자열로 출력하지 못하게 하기

 

-CSRF 공격이 무엇이고, 방어하는 방법을 설명해주세요.

사용자가 자신의 의지와 무관하게 공격자가 의도한 행동을 하여 특정 페이지를 보안에 취약하게 한다거나 수정,삭제 등의 작업을 하게 만드는 공격방법을 말한다.

 

방어)

1. token 사용 : 서버에서 암호화 된 token을 발급하고 매 요청마다 token을 함께 보내서 검증을 거치게 한다.

2. get/post 사용:  서버에서 받는경우 get,  폼을 통해 서버에 보내느 경우 post을 이용하여 요청을 구분해준다.

 

- SQL Injection 공격이 무엇이고, 방어하는 방법을 설명해주세요.

정의 )SQL Injection은 악의적인 사용자가 웹 애플리케이션에서 사용되는 입력 폼 등을 통해 데이터베이스에 악의적인 SQL 쿼리를 삽입하는 공격 기법입니다.

1. 입력값에 대한 검증

 

2.prepared statement 구문사용 

 

3.error message 노출금지 

공격자가 공격을 수행하기 위해서는 데이터베이스의 정보가 필요한데 데이터베이스 에러 발생 시 따로 처리를 해주지 않았다면, 에러가 발생한 쿼리문과 함께 에러에 관한 내용을 반환해 준다. 여기서 테이블명 및 컬럼명 그리고 쿼리문이 노출이 될 수 있기때문에 error message를 따로 처리를 해주어야한다.

 

4. 웹 방화벽 사용 

웹 공격 방어에 특화되어있는 웹 방화벽을 사용하는 것도 하나의 방법이다.

 

- 웹 캐시에 대해 설명해주세요.

사용자가 웹 사이트에 접속할 때 정적 컨텐츠를 특정 위치에 저장하여, 웹 사이트 서버에 해당 컨텐츠를 매번 요청하여 받는 것이 아니라 특정 위치에서 불러움으로써 사이트 응답시간을 줄이고, 서버트래픽 감소 효과를 볼 수 있다.

 

종류)

 1. browser caches

- 브라우저 또는 http요청을 하는 client application에 의해 내부 디스크에 캐쉬

2.proxy chaches

- 네트워크상에서 동작하여 browser caches랑 동일한 원리로 동작한다.

- 한정된 수의 클라이언트를 위하여 무한대의 웹서버의 컨텐츠 캐쉬

 

 

- 프록시 서버에 대해서 설명해주세요.

클라이언트가 자신을 통해서 다른 네트워크 서비스에 간접적으로 접속할 수 있게 해주는 컴퓨터 시스템이나 응용 프로그램을 말한다.

  • 클라이언트는 리버스 프록시의 존재를 알지 못하며, 실제 서버는 클라이언트에 직접 노출되지 않습니다.

 

-포워드 프록시에 대해서 설명해주세요.

사용자가 연결할려는 주소가 있다면 그걸 직접 연결하는것이 아니라 포워드 프록시 서버가 대신 그 주소에 연결하여 그 결과를 클라이언트에 전달한다.

  • 실제 서버는 클라이언트에 직접 노출되지 않으며, 클라이언트는 포워드 프록시의 존재를 알고 있습니다.

- 리버스 프록시에 대해서 설명해주세요.

리버스 프록시로 웹 서버를 설정할 경우 사용자가 연결할려는 주소에 데이터를 요청하면  이 요청을 받아서 내부 서버에서 데이터를 받은 수에 이 데이터를 사용자에게 다시 전달한다.,

 

-L7 로드 밸런서에 대해서 설명해주세요.

애플리케이션 계층에서 작동하는 로드 밸런서로 주로 http 및 https 프로토콜을 기반으로 클라이언트와 서버 간의 트래픽을 분산시킨다.

 

 

- 커넥션 타임아웃과 리드 타임아웃에 대해 설명해주세요.

커넥션 타임아웃:  클라이언트가 서버측으로 연결맺길 원하지만 서버와 연겨리 맺어지지 못할 때 발생한다 

 

리드 타임아웃: 커넥션 타임아웃과 다르게 크라이언트와 서버가 connection은 맺어졌지만 i/o작업이 길어지거나 데이터를 읽어가지 못하는 상황이 되어 설정된 시간을 초과하여 생기는 문제이다.

'cs > 컴퓨터와 네트워크' 카테고리의 다른 글

컴퓨터와 네트워크 4(UDP,TCP)  (0) 2024.01.30
컴퓨터와 네트워크 2  (0) 2024.01.16
컴퓨터 네트워크  (0) 2024.01.11