목록🎃 기타/상식 ❗ (53)
코딩마을방범대
Nginx란? 트래픽이 많은 웹사이트의 서버(WAS)를 도와주는 비동기 이벤트 기반 구조의 경량화 웹 서버 프로그램 클라이언트로부터 요청을 받았을 때 요청에 맞는 정적 파일을 응답해주는 HTTP Web Server로 활용 Reverse Proxy Server로 활용하여 WAS의 부하를 줄일 수 있는 로드밸런서 역할 Apache보다 동작이 단순하고, 전달자 역할만 하기 때문에 동시접속 처리에 특화됨 Nginx의 장단점 Nginx의 장점 이벤트 중심 접근 방식을 사용하여 클라이언트 요청 제공 제한된 하드웨어 리소스로도 여러 클라이언트 요청을 동시에 효율적으로 처리 단일 스레드를 통해 여러 연결을 처리 가능 최소한의 리소스로 웹 서버의 아키텍처를 개선하기 위해 독립형 HTTP 서버로 배치 가능 Nginx의 단..
프록시(Proxy) 사전적 의미: 대신, 대리 보안상의 문제로 직접 통신을 주고 받을 수 없는 두 PC 사이에서 통신을 할 때 중간에서 대리로 중계하는 것 클라이언트가 서버를 직접 접근하지 못하기 때문에 접근 가능한 사이트를 제한할 수 있으므로 보안을 향상할 수 있음 클라이언트가 직접 App 서버에 직접 요청하는 경우, 프로세스 1개가 응답 대기 상태가 됨 따라서 프록시 서버를 둠으로써 요청을 배분하는 역할을 함 클라이언트에서 리소스를 요청 프록시 서버에 도착 서버에 전달 프록시 서버는 서버의 응답을 클라이언트에 전달 포워드 프록시(Forward Proxy) 클라이언트는 서버를 알지만, 서버는 프록시를 통해 요청이 오기 때문에 클라이언트를 알지 못함 (서버에서 받는 IP는 클라이언트의 IP가 아닌 프록시..
CSRF(Cross-site request forgery) 공격이란 사이트 간 요청 위조 권한을 가진 유저가 스스로 시스템에 있는 정보를 탈취하거나 망가뜨리도록 조종하는 것 CSRF방어의 핵심은 XSS차단 + 비정상적인 루트를 통한 CUD를 막는데 있음 CSRF의 방어 방법 1. MAKE TOKEN & CHECK 로그인시 auth token 값을 생성(세션에 보관) session.setAttribute("CSRF_TOKEN",UUID.randomUUID().toString()); 화면 단에선 해당 토큰을 빼내어 hidden값에 넣어 놓음 submit 처리시 세션에 있는 값과 비교 / 파라미터로 전달된 csrf 토큰 값 String param = request.getParameter("_csrf"); //..
JWT (Json Web Token) 인증에 필요한 정보들을 암호화시킨 JSON 토큰 인증(authentication) 또는 인가(authorization) 정보를 서버와 클라이언트 간에 안전하게 주고 받기 위해서 사용 JSON 데이터를 Base64 URL-safe Encode 를 통해 인코딩하여 직렬화한 것 (위변조 방지를 위해 개인키를 통한 전자서명이 들어있음)Base64 URL-safe Encode 는 일반적인 Base64 Encode 에서 URL 에서 오류없이 사용하도록 '+', '/' 를 각각 '-', '_' 로 표현한 것 Authorization HTTP 헤더를 Bearer 으로 설정하여 클라이언트에서 서버로 전송 서버에서는 토큰에 포함되어 있는 서명(signature) 정보를 통해서 위변조 ..
원래 웹에서의 데이터는 가로채면 누구나 읽을 수 있는 일반 텍스트 형태로 전송되었음 SSL (Secure Scokets Layer) 암호화 기반 인터넷 보안 프로토콜 개인정보 보호, 인증, 데이터 무결성을 보장하기 위해 Netscape가 1995년에 개발 전달되는 모든 데이터를 암호화하고 특정한 유형의 사이버 공격도 차단 TLS(Transport Layer Security) 암호화의 전신이기도 함 SSL/TLS 를 사용하는 웹사이트 URL은 HTTP 대신 HTTPS을 사용 SSL은 1996년 SSL 3.0 이후 업데이트되지 않았으며, 알려진 취약성이 여러가지가 있어 보안 전문가들은 SSL 사용 중단을 권장 SSL의 대안으로는 TLS가 있음 TLS 최신 암호화 프로토콜 SSL 암호화로 혼용해서 부르는 경우..
X.509 공개 키 인증방식의 형식을 정의하는 표준 HTTPS의 기초가 되는 TLS/SSL을 포함한 많은 인터넷 프로토콜에서 사용 인증서 디지털 서명으로 내용 변경과 위장 행위를 검출하고, 부인을 방지할 수 있음 인증서의 표준 규격 버전(Verion Number) 인증서의 버전 시리얼 번호(Serial Number) CA가 할당한 정수로 된 고유 번호 CRL에서는 이 번호로 폐지한 인증서를 구별 서명 알고리즘(Signature Algorithm ID) 인증기관이 사용한 서명 알고리즘 발행자(Issuer Name) 인증서를 발행한 인증기관의 이름 Name(DN) 형식으로 기술됨 (사용자는 이 발행자와 시리얼 번호로 인증서를 구별) 유효기간(Validaty period) Not Before, Not Afte..
RSA 암호화 SSL/TLS에 가장 많이 사용되는 공개키 암호화 알고리즘 소인수분해 문제에 기반하여 알고리즘이 만들어졌음 암호화 뿐만 아니라 전자서명이 가능한 최초의 알고리즘 큰 정수의 소인수 분해의 난해함에 기반하여, 공개키만을 가지고는 개인키를 쉽게 짐작할 수 없도록 디자인되어 있음 RSA-2048 전에는 숫자가 number of digits 를 의미했으나 RSA-2048 부터는 bit 을 의미 RSA-2048 617 자리 숫자를 Key 로 사용 Bouncy Castle란 경량 암호화에 사용되는 API 모음 Java 및 C# 프로그래밍 언어 모두에 대한 API가 포함 JCE(Java Cryptography Extension) 및 JCA(Java Cryptography Architecture), JSS..
소켓(Socket)이란 프로세스들은 데이터 송수신을 위해 반드시 소켓을 거쳐 전송 계층으로 데이터를 전달해야 함 전송 계층과 응용 프로그램 사이의 인터페이스 역할을 하며 떨어져 있는 두 호스트를 연결해줌 프로토콜, IP, Port 3요소로 정의됨 일반적인 소켓 통신의 흐름 소켓 생성 서버 바인딩 (ip, port번호 설정) listen()으로 클라이언트 요청에 대기열을 만들어 몇개의 클라이언트를 대기시킬지 결정 accept()로 클라이언트와 연결 클라이언트 서버에 설정된 ip, port로 연결 시도 accept()로 클라이언트의 socket descriptor 반환 마지막. 데이터 송수신 후 소켓 닫기 소켓 종류 (1) 스트림 소켓 TCP(Transmission Control Protocol)을 사용하는..