CS (13) 썸네일형 리스트형 XSS(Cross Site Scripting) XSS(Cross Site Scripting) ? XSS은 웹 사이트의 어드민(관리자)이 아닌 악의적인 목적을 가진 제 3자가 악성 스크립트를 삽입하여 의도하지 않은 명령을 실행시키거나 세션 등을 탈취할 수 있는 취약점이다. 이름처럼 대부분 자바스크립트를 이용한 공격이 이루어지며 SQL Injection과 함께 웹 취약점 중 가장 기초적인 취약점으로 알려져 있습니다만 워낙 공격패턴이 다양하고 변화가 많이 이루어지기 때문에 사실상 완벽한 방어가 힘들고 지금까지도 굉장히 위험한 취약점 중 하나 이다. 위험성 XSS로 발생할 수 있는 피해는 다음과 같습니다. 1. 쿠키 및 세션정보 탈취 - XSS에 취약한 웹 게시판 등에 쿠키나 세션 정보를 탈취하는 스크립트를 삽입하여 해당 게시글을 열람하는 유저들의 쿠키.. CORS (Cross Origin Resource Sharing) ? CORS (Cross Origin Resource Sharing) ? CORS는 Cross-Origin Resource Sharing의 약자로 직역하면 "교차 출처 리소스 공유" 이다. 좀 더 쉽게 말하면 동일한 출처가 아닌 다른 출처에서 데이터를 주고 받는 것을 허용하는 정책이다. CORS에 대해 설명하려면 그 전에 SOP를 설명해야 된다. SOP (Same Origin Policy) SOP는 동일 출처 정책으로 웹 브라우저에서 보안을 강화하기 위하여 동일한 출처에서만 리소스를 주고 받도록 하는 정책이다. 그렇다면 "출처"는 도대체 무엇일까? 쉽게 말하면 URL 주소이다 하지만 "동일한 출처"는 정확히 똑같은 URL을 의미하는 것을 아니다. 동일한 출처는 URL 중에서도 프로토콜, 도메인 주소, 포트 .. JWT란 ? (JSON Web Token) JWT (JSON Web Token) JWT는 당자자 간에 JSON 객체로 정보를 안전하게 전송할 수 있는 개방형 표준이다. JWT는 API를 사용하는 클라이언틀르 인증 및 식별하는데 사용할 수 있어서 보통 RESTful API에서 사용한다. JWT의 구성요소 JWT는 헤더(header), 페이로드(payload), 서명(signature) 세 파트로 나눠져 있다 헤더 (Header) 어떠한 알고리즘으로 암호화 할 것인지, 어떠한 토큰을 사용할 것 인지에 대한 정보가 들어있다. 정보 (Payload) 전달하려는 정보(사용자 id나 다른 데이터들, 이것들을 클레임이라고 부른다)가 들어있다. payload에 있는 내용은 수정이 가능하여 더 많은 정보를 추가할 수 있다. 그러나 노출과 수정이 가능한 지점이기 .. URL과 URI의 차이는 무엇일까? URI (Uniform resource Identifier) 인터넷 상에서 특정 자원(파일)을 나타내는 유일한 주소 자원의 id -> 유일해야함 URL (Uniform Resource Locator) 통합 자원 식별자로 인터넷에 있는 자원을 나타내는 유일한 주소 URL은 특정 서버의 한 리소스에 대해 구체적인 위치를 서술 URI가 URL의 상위 개념. (URL이 URI안에 포함 되어있다고 생각 / URI 의 하위 개념으로는 URL 말고 URN도 있음) 정리된 글들을 보고 정리하면서 내가 이해한 것은 (틀릴수도 있다) 우리가 흔히 도메인으로 생각하는 부분과 같은 페이지의 위치까지는 url이고, 그 페이지에서 어떤 자원의 정확한 위치는 uri인것이다. 지금 uri url에 대해서 하고나서 실생활에 가까운 예.. MVC Pattern이 뭘까? MVC Pattern MVC(Model, View, Controller) 모델-뷰-컨트롤러(Model–View–Controller, MVC)는 소프트웨어 공학에서 사용되는 소프트웨어 디자인 패턴이다. 이 패턴을 성공적으로 사용하면, 사용자 인터페이스로부터 비즈니스 로직을 분리하여 애플리케이션의 시각적 요소나 그 이면에서 실행되는 비즈니스 로직을 서로 영향 없이 쉽게 고칠 수 있는 애플리케이션을 만들 수 있다. Model DATA, 정보들의 가공을 책임지는 컴포넌트를 말한다. 모델(Model)은 어플리케이션의 정보, 데이터를 나타냅니다. 데이타베이스, 처음의 정의하는 상수, 초기화 값, 변수 등을 뜻합니다. 비즈니스 로직을 처리한 후 모델의 변경사항을 컨트롤러와 뷰에 전달합니다. 모델은 다음과 같은 규칙을.. Event Loop란 Event Loop란? 자바스크립트는 싱글스레드 언어이다. 싱글스레드란 한번에 한가지의 일 밖에 할 수 없음을 의미한다. 자바스크립트 엔진은 하나의 call stack을 가지고 있기 때문에 한번에 하나의 동작만을 처리할 수 있다. 그런데 브라우저가 동작하는것을 보면 많은 부분이 동시에 처리 되는 것처럼 느껴진다. 이와같이 자바스크립트의 동시성을 지원하는 것이 Event Loop이다. 자바스크립트의 코드가 실행되면 비동기 호출에 대한 처리를 브라우저에서 web API로 넘기고 동기적인 처리를 call stack에 담아 먼저 처리하게 된다. 이후에 비동기 호출에 대한 처리가 끝나면 web API는 비동기 호출의 콜백 함수를 task queue에 담게 되고 Event Loop는 call stack이 비어있는지.. var, let, const 서로 다른 차이점? var, let, const 서로 다른 차이점? var ES6 이전에는 변수를 선언할때 var 키워드로 사용했었다. var의 특징에 대해 간략히 설명하자면 변수의 중복 선언이 가능하다. var 키워드는 생략이 가능하다. block-scope이 아닌 function-scope이다. 호이스팅(hoisting) 당한다. 정도로 정리할 수 있습니다. //1function-scope과 block-scope의 차이 // function-scope for (var i = 0; i < 10; i++) { console.log(i); } console.log('outside i: ', i); // 출력: outside i: 10 // i를 var로 선언 했기 때문에 function-scope를 사용해서 for문에 선언한.. Blocking/Non-blocking & Synchronous/Asynchronous 동기 / 비동기 동기 작업이란 작업을 수행하는 두 개 이상의 주체가 서로 동시에 수행하거나, 동시에 끝나거나, 끝나는 동시에 시작할 때를 의미합니다. 시작과 종료를 동시에 하거나, 하나의 작업이 끝나는 동시에 다른 주체가 작업을 시작하면 이는 동기 작업이라고 볼 수 있습니다. 비동기 작업이란 두 주체가 서로의 시작, 종료시간과는 관계 없이 별도의 수행 시작/종료시간을 가지고 있을 때를 뜻합니다. 서로 다른 주체가 하는 작업이 자신의 작업 시작, 종료시간과는 관계가 없을 때 비동기라고 부를 수 있습니다. 블로킹 / 논블로킹 블로킹과 논블로킹은 다른 작업을 수행하는 주체를 어떻게 상대하는지가 중요하다. 자신의 작업을 하다가 다른 작업주체가 하는 작업의 시작부터 끝까지 기다렸다가 다시 자신의 작업을 시작한다면.. 이전 1 2 다음