본문 바로가기

웹 개발

(25)
쿠버네티스 쿠버네티스(Kubernetes) 쿠버네티스 혹은 큐브라고 한다. Linux 컨테이너 작업을 자동화하는 오픈소스 플랫폼을 뜻한다. 컨테이너화된 애플리케이션을 배포하고 확장하는 데 수동프로세스가 필요하지 않다. 리눅스 컨테이너를 실행하는 호스트 그룹을 함께 클러스터링 할 수 있고 쿠버네티스를 통해 이러한 클러스터를 쉽고 효율적으로 관리할 수 있다. 클러스터는 퍼블릭 클라우드, 프라이빗 클라우드 또는 하이브리드 클라우드 전체로 호스트를 확장할 수 있다. 아파치 카프카를 통한 실시간 데이터 스트리밍과 같이 신속한 확장을 요하는 클라우드 네이티브 애플리케이션을 호스팅하는 데 이상적인 플랫폼이다. 기능 워크로드를 위해 규모에 알맞는 컨테이너를 배포하는 데 필요한 오케스트레이션(컴퓨터 시스템, 애플리케이션, 서비스의..
XSS XSS Cross Site Scripting CSS는 이미 사용중인 약어로 XSS라 함 XSS는 게시판, 웹 메일 등에 스크립트 코드를 삽입 해, 고려되지 않은 기능이 작동하게 하는 공격 클라이언트 대상 Reflected XSS 취약점이 존재하는 페이지에 XSS 공격을 위한 스크립트가 포함된 URL을 공격 대상자에게 노출시키는 방법 공격자가 미리 XSS 공격에 취약한 웹 사이트 탐색 XSS 공격을 위한 스크립트를 포함 한 URL을 사용자에게 노출 사용자가 URL 클릭 웹 사이트의 서버에 스크립트가 포함 된 URL을 통해 Request 전송 웹 서버에서 해당 스크립트를 포함한 Response를 전송 Stored XSS 웹 사이트의 게시판에 스크립트 삽입하는 공격 공격자가 미리 XSS 공격에 취약한 웹 사이..
MyBatis TypeHandler 타입 핸들러 MyBatis에서 Select된 Enum의 코드들을 Handler를 통해서 Enum으로 바꾸어준다. public interface CodeEnum { String getCode(); } 핸들러를 적용시키고자 하는 Enum의 인터페이스를 선언 public enum MyType implements CodeEnum { CASH("01"), CARD("02"), POINT("03"); private String code; MyType(String code) { this.code = code; } @Override private String getCode( return code; } } 인터페이스를 상속받은 Enum 정의 public class CodeEnumTypeHandler implements ..
프록시 Proxy 클라이언트가 자신을 통해서 다른 네트워크에 간접적으로 접속할 수 있게 해주는 컴퓨터 시스템 혹은 응용프로그램을 말함 클라이언트와 서버 사이에서 중계기 역할로 대신 통신을 수행하는 것을 프록시라고 말한다. 목적 익명으로 컴퓨터를 유지하기 위해 보안 및 통제를 뚫고 나가기 위해 역으로 IP 추적을 당하지 않기 위해 사용률을 기록하고 검사하기 위해 지역 제한을 우회하기 위해 밖으로 나가는 컨텐츠를 검사하기 위해 악성 코드를 목적으로 전달된 컨텐츠를 검사하기 위해 캐시를 이용하여 리소스로의 접근을 빠르게 하기 위해 웹 프록시는 웹 페이지를 캐시로 저장하는데 흔히 쓰임 공개 프록시 누구나 자유롭게 접속하여 사용할 수 있는 프록시 서버를 말함 공개 프록시 이용시 자신의 IP 주소를 남기지 않고 익명으로 ..
정적 코드 분석, Static Code Analysis 정적 분석 정적 분석이란 프로그램을 실행 시키지 않고 코드 분석을 수행합니다. 정적 코드 분석은 코드내에서 발견될 수 있는 보안 취약점, 그리고 잠재적인 결함, 위험등을 찾아내어 개발자에게 알려주고 개발단계에서 여러 위험을 해결할 수 있습니다. 왜 사용하는가? 단순히 실행가능하고 동작하는 프로그램은 누구나 만들 수 있습니다. 하지만 개발자마다 제각기 다른 코딩 방식과 여러 보안 위협이나 오류를 야기시킬 수 있는 코드를 작성한채 방치한다면 이후 프로그램을 유지 보수하는데에 많은 어려움을 겪게될 것 입니다. 때문에 코드가 작성된 뒤에는 반드시 규칙에 맞는 올바른 코드가 작성되어 있는지 점검하고 수정해야 합니다. 매우 작은 프로젝트의 경우에는 직접 코드를 검수해가며 수정할 수 있겠지만 프로젝트 규모가 커지고,..
복수 배열 독립 디스크(Redundant Array of Independent Disks, RAID) 구글링을 하면 이미 잘 정리된 사이트 글들이 많은데 그 글들을 짜집기해서 다시 정리해보았습니다. 복수 배열 독립 디스크(Redundant Array of Independent Disks, RAID) 여러개의 디스크를 묶어 하나의 디스크 처럼 사용하는 기술입니다. 사용 목적 하나의 디스크를 사용하면 편한데 굳이 RAID라는 번거로운 기능을 쓰는 이유는 무엇일까요? 원인은 아무래도 하드디스크의 문제점과 한계에 있습니다. 하드디스크는 소모품으로 분류 됩니다. 시간이 지날 수록 성능이 떨어지고 고장이 날 우려가 있습니다. 만일 단일 디스크로 서버를 운영을 한다면 디스크에 장애가 발생할 시에 데이터가 손실될 우려가 있겠죠. 그 때문에 디스크 정보들은 절대적으로 백업이나 장애로부터 복구가 될 수 있어야합니다. RA..
자바스크립트 - 콜 스택 콜 스택(call stack)이란 실행이 되었을 때 호출이 되는 것들이 메모리에 적재되고 마치 스택과 같은 구조로 적재되는 것입니다. 실행 컨텍스트라고도 하는 이것은 자바스크립트의 동작원리 라고 볼 수 있습니다. 함수선언이 다음과 같이 되어있다고 가정합니다 function first(){ second(); console.log("first"); } function second(){ third(); console.log("second"); } function third(){ console.log("third"); } first(); 실행이 되면 다음과같이 아래서부터 호출스택이 쌓이게 됩니다. third second first main 메인에서부터 third까지 호출되는 순서대로 하나씩 쌓이고 실행이 될때는..
자바스크립트 - 호이스팅 자바스크립트는 실행이 되기 전 코드 전체를 한번 parsing 하고 코드 내 정의되어있는 함수나 변수들을 기억해놓은다. var v1 = "Hello"; console.log(v1); var v2 = "World"; console.log(v2); 이와 같은 코드를 실행할 때 자바 스크립트는 변수 선언 부를 한번 확인하고 끌어올린다라고 생각하면 된다. 위의 코드를 호이스팅에서 다음 처럼 된다고 생각하면 된다. var v1; var v2; v1 = "Hello"; console.log(v1); v2 = "World"; console.log(v2); {}블럭 내에서 유효하며 변수 뿐만아니라 함수선언문도 같다고 생각하면 된다. run() function run(){ return "Hello World"; } 위와..