분류 전체보기 (63) 썸네일형 리스트형 웹 개발 공부하기 4 - 3 (HTTP) 버프 스위트를 보면 http 요청과 응답을 확인할 수 있는데 http가 무엇인지 보도록 하겠습니다. HTTP란? http는 데이터 교환을 요청과 응답 형식으로 정의한 프로토콜입니다. 즉, 클라이언트의 요청에 대해 서버가 응답하는 형식으로 작동합니다. 형식을 정의한 프로토콜로 해당형식을 맞춰서 요청과 응답을 하여야합니다. 버프 스위트를 보면 실제 요청과 응답의 형태를 확인할 수 있습니다. http요청은 http헤드와 http 바디로 나눌 수 있습니다. (공백 한 줄로 구분) 그렇기 때문에 위의 요청을 보면 공백 한줄 아래 아무것도 없기 때문에 바디가 없는 것을 확인할 수 있습니다. 그리고 헤드는 첫 줄인 시작줄과 나머지인 헤더로 한번더 구분할 수 있습니다. 시작줄 시작줄에는 메소드, 경로, http버전을 .. 웹 개발 공부 일기장 4 - 2 (Burp Suite) 저번 시간에 프록시 설정하는 것과 버프 스위트설정 하는 것을 알아보았습니다. 이번에는 실제 버프 스위트 기능을 몇가지 알아보겠습니다. 버프 스위트의 proxy탭에 Intercept, History가 있으며 intruder, repeater 탭이 있는 것을 확인할 수 있습니다. 이것에 대해 하나씩 실습과 함께 알아보겠습니다. 1. intercept은 프록시 서버로 거쳐가는 요청을 프록시 서버에서 잡아놓는 기능입니다. 실제로 요청을 보내니 브라우저에 응답이 오지않고 버프스위트에서 요청 내용을 확인할 수 있습니다. 이때 forward를 눌리면 현재 요청을 보내게 됩니다. 또한, intercept on 버튼을 눌리면 잡고있는 것을 놓아주며 전체 요청을 보낼 수 있습니다. forward를 눌려주니 해당 요청을 보.. 웹 개발 공부 일기장 4 - 1 (Web Proxy) 이번주에는 드디어 웹 해킹에 필수적인 도구!! Burp suite를 배웠습니다. 배운걸 정리하면서 다시 한번 보겠습니다. Burp Suite 버프 스위트는 Web Proxy Tool 입니다. 프록시란 영어를 직역하면 대리라는 뜻을 가집니다. 즉!! 웹의 요청을 대신해주는 툴입니다. a와 b가 서로 통신을 한다면 그 사이에서 중간자 역할을 하며 대신해서 보내주는 것으로 a는 proxy서버로 요청을 보내고 proxy서버에서 b로 요청을 보냅니다. 사진을 보면 중앙에서 요청이 바로 서버로 가는 것이 아니라 proxy서버를 거쳐 가는 것을 볼 수 있습니다. 실제로 요청이 proxy서버를 거쳐가는지 확인해보겠습니다. 요청을 보내게 되면 필요한 모든 요청이 proxy서버를 거쳐간 것을 확인할 수 있습니다. 실제로 .. 웹 개발 공부 일기장 3 - 과제 (jwt 로그인 페이지) 2. jwt로 로그인 페이지 만들기 저번 jwt를 공부하면서 설명한 것처럼 직접 만들어 볼 수도 있겠지만, 어떤 방식으로 어떻게 구성되어있는지 알았기 때문에 제공하는 라이브러리를 사용하여 만들어보겠습니다. 일단 이 라이브러리를 사용하기 위해 다운로드 해야할 것이 있기때문에 아래 사이트에 들어가면 다운로드 하는 방법과 간단한 예제들을 볼 수 있습니다. https://github.com/firebase/php-jwt GitHub - firebase/php-jwt: PHP package for JWT PHP package for JWT. Contribute to firebase/php-jwt development by creating an account on GitHub. github.com 일단 먼저 아래.. 웹 개발 공부하기 3 - 과제 (jwt) 1. jwt 공부하기 jwt란? JSON Web Token의 약자로 이름처럼 json형식의 웹에서 사용하는 토큰입니다. 이 jwt는 주로 회원인증할 때 많이 사용되기때문에 우리가 이번주에 배운 로그인 로직 만들기에 포함시킬 수 있습니다. 즉, 세션 대신해서 사용할 수 있습니다. jwt에 대해 알아보겠습니다. jwt는 xxxxx.yyyyy.zzzzz 형태로 '.' 으로 3부분을 구분하고 앞에서부터 헤더, 페이로드, 서명부분입니다. 그리고 jwt는 json형식의 토큰답게 각 부분은 json 형식으로 구성되고 base64url으로 인코딩되어 있습니다. json을 간단히 설명하면, json은 아래와 같은 형태를 가지고, { "키": "값", : "키": "값" } 예시처럼 객체 문법을 따르는 문자형태로 존재합니.. 웹 개발 일기장 3 - 3 (쿠키 및 세션) 우리는 이때까지 로그인을 어떻게 수행하는 지 확인해봤습니다. 하지만 로그인을 성공했지만, http 프로토콜에는 특별한 특징이 있어 로그인한 상태를 유지하지 못합니다. 바로 connectionless 와 stateless 특징 때문입니다. connectionless는 클라이언트의 요청을 보내고 서버에서 응답을 보내면 연결이 끊어진다는 특징이고, stateless는 연결이 끊어지면 모든 상태정보를 잃어버리는 특징입니다. 그렇기 때문에 매 요청마다 전에 로그인한 상태 정보를 서버는 잃어버리기 때문에 클라이언트가 누구인지 알 수 없고, 우리는 매 요청마다 로그인을 하여 내가 누구인지 알려 주어야할 것입니다. 하지만, 우리는 한번 로그인을 하면 우리가 로그아웃하기 전까지 로그인상태가 유지됩니다. 그 이유가 바로 .. 웹 개발 일기장 3 - 2 (해시함수) 저번 시간에 로그인 로직을 몇 개 살펴보았는데 로그인을 구현할 때 해시함수를 사용하여 로그인을 수행할 수 있습니다. 일단, 해시함수가 무엇인지 먼저 알아보겠습니다. 해시함수란? 임의의 길이를 가진 데이터를 입력받아 고정된 길이의 값, 즉 해시값을 출력하는 일방향 함수입니다. 임의의 길이를 가진 데이터를 입력받아 고정된 길이의 값을 출력한다는 것이 무슨 뜻일까요?? 예시를 보면 a라는 데이터를 이상한 문자열로 만들어진 것이 보이시나요? 다른 문자도 한번 해보겠습니다. 이렇게 a나 안녕이라는 임의의 문자를 넣었을 때 고정된 32자로 나타내는 것입니다. 32자 16진수 표현법이므로 각 자리마다 4비트씩하여 md5 해시함수는 총 128비트로 표현하는 것입니다. 해시함수가 임의의 데이터를 고정된 길이의 값으로 표.. 웹 개발 일기장 3 - 1 (로그인 로직) 우리는 데이터베이스와 연결하여 간단한 로그인 페이지를 만들어 보았습니다. 로그인은 무엇일까요?? 우리는 아이디와 비밀번호를 입력하여 로그인을 실시합니다. 죽, 로그인은 그 사람이 맞는지 확인하는 작업으로 이때 식별과 인증 기능이 수행되어야합니다. 식별은 수 많은 데이터 중 특정 데이터를 찾는 작업입니다. 아이디가 대표적인 예시로 서버에는 수 많은 사람들의 아이디가 저장되어 있을 것입니다. 이 중 특정 아이디를 찾는 작업을 식별이라고 할 수 있습니다. 하지만 이 데이터를 요구한 사람이 본인이 맞는지 확인할 수 가 없습니다. 그래서 인증을 수행합니다. 인증은 특정 데이터의 소유자?? 본인이 맞는지 확인하는 작업입니다. 비밀번호가 대표적인 예시로 아이디와 비밀번호를 입력합니다. 수 많은 데이터 중 아이디로 특.. 이전 1 ··· 4 5 6 7 8 다음