목록🎃 기타/상식 ❗ (41)
코딩마을방범대
포스트맨을 통해 API를 테스트해보다가 POST 메소드의 request 값으로 json 데이터를 보내는 상황이였는데 받은 request의 값이 동일하지 않은 것을 확인하였다 내가 보낸 request 값엔 슬래시(/)가 들어가 있었는데, 실제 메소드가 받은 request는 슬래시에 백슬래시(\)가 붙어서 전달되었다 검색해서 찾아보니 json 표준이 슬래시는 이스케이프 처리해서 보내도록 되어있다고 한다 큰따옴표를 사용할 경우 문장의 완성이 아니라는 의미를 갖기 위해 백슬래시를 붙이 듯이 슬래시에도 자동으로 백슬래시가 붙는 것이었다. 이스케이프 문자 (Escape String) 원래의 의미를 벗어나는 문자 따라서 GET으로 보낼 경우엔 인코딩만 확실히 해주면 기호가 올바르게 전달되는데 POST로 보낼 경우 j..
노드(node)란? 네트워크에 연결되어 있는 1개의 기기 노드의 사전적 의미 매듭, 점, 집합점, 중심점 노드와 노드를 연결하고 있는 것은 링크(link) 라고 부름 다른 네트워크와의 경계선에 있는 부분을 엣지(edge) 라고 부름 링크 + 노드 + 엣지 = 하나의 네트워크 ※ 엣지는 링크 중에서도 다른 네트워크와의 경계선에 있는 부분, 혹은 단말의 가장 자리에 있는 부분을 의미한다. 유형 별 노드의 정의 유형 정의 블록체인 데이터를 저장, 복제해놓는 수많은 컴퓨터(참여자) 서버 데이터 센터에서는 복수의 서버를 1대의 기기(멀티 노드 서버 등) 에 집약하여 설치하는 것이 일반적으로, 서버를 의미하는 단위로써 노드를 사용 예: 이 멀티 노드 서버에서는 서버 노드를 최대 8노드 탑재할 수 있다. TCP/IP..
Log - (1) Log4j Log - (2) Logback Log - (3) Log4jdbc+Logback을 이용한 SQL 로그 남기기 Log - (4) log 설정 xml 파일에서 if문 사용하기 로깅(Logging) 정보를 제공하는 일련의 기록인 로그(log)를 생성하도록 시스템을 작성하는 활동 로그(Log)의 이점 1. 재현하기 힘든 버그에 대한 유용한 정보를 제공할 수 있음 2. 성능에 관한 통계와 정보를 제공할 수 있음 로그를 출력하는 방법 System.out.println() 이용 로깅 라이브러리 이용 로그 라이브러리 종류 java.util.logging JDK 1.4부터 포함된 표준 로깅 API 별도 라이브러리 추가 불필요 기능이 많이 부족해 다른 로그 라이브러리를 많이 사용 Apache ..
AOP (Aspect Oriented Programming) 비지니스 로직 등의 핵심 기능 (Core Concerns)들과 로깅, 보안 , 트랜잭션 처리 등 핵심 기능을 도와주는 부가기능 (Cross-cutting Concerns)으로 분리해서 모듈화 하는 것 Primary Concern (Core Concern) 핵심기능, 비즈니스 로직으로만 구성되어 있음 Cross- Cutting Concern 로깅, 보안 등의 기능을 하는 부가 기능 Point Cut 부가기능을 어디에 적용시키는지 Aspect (Adviser) = Point Cut + Cross-Cutting Concern Weaving 런타임 때 Aspect(Adviser)를 핵심 기능에 끼워넣는 것 사용 방법 build.gralde // htt..
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) 정보를 통해서 위변조 ..