웹 개발 (20) 썸네일형 리스트형 웹 개발 공부 일기장 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 (로그인 로직) 우리는 데이터베이스와 연결하여 간단한 로그인 페이지를 만들어 보았습니다. 로그인은 무엇일까요?? 우리는 아이디와 비밀번호를 입력하여 로그인을 실시합니다. 죽, 로그인은 그 사람이 맞는지 확인하는 작업으로 이때 식별과 인증 기능이 수행되어야합니다. 식별은 수 많은 데이터 중 특정 데이터를 찾는 작업입니다. 아이디가 대표적인 예시로 서버에는 수 많은 사람들의 아이디가 저장되어 있을 것입니다. 이 중 특정 아이디를 찾는 작업을 식별이라고 할 수 있습니다. 하지만 이 데이터를 요구한 사람이 본인이 맞는지 확인할 수 가 없습니다. 그래서 인증을 수행합니다. 인증은 특정 데이터의 소유자?? 본인이 맞는지 확인하는 작업입니다. 비밀번호가 대표적인 예시로 아이디와 비밀번호를 입력합니다. 수 많은 데이터 중 아이디로 특.. 웹 개발 공부 일기장 2 - 과제 (로그인 페이지 With DB) 이번엔 저번 시간에 못한 과제 3을 해보겠습니다. 3. 1주차에 만든 로그인 페이지를 DB와 연동하기 기본적인 login.php 의 html 코드는 변함이 없고 php 코드를 따로 login_func.php 파일에 저장하여 post 요청 시 require_once 함수로 불러왔습니다. 그럼 login_func.php 코드를 보겠습니다. database.php와 session.php 를 가져왔습니다. database 파일을 전 시간에 설명하였지만 간단하게 다시 설명하면 localhost에 있는 데이터베이스에 연결하는 코드가 database에 있어 우리는 $db_conn 변수로 데이터베이스에 연결할 수 있습니다. 제가 로그인 페이지를 데이터베이스와 연결하여 구현한 방법은?? 1. 아이디와 비밀번호를 입력받은.. 웹 개발 공부 일기장 2 - 과제 (회원가입 페이지) 저번 시간에 있었던 과제에 대해 알아보겠습니다. 1. 학생이름과 점수가 들어있는 DB에서, GET 방식으로 name을 건네주면 점수를 출력하는 페이지 만들기 이제 코드가 많아지고 파일이 복잡해지기 때문에 vi 로 계속 만들기 힘들 것 같아 vs code 로 만든 후 sftp를 사용하여 서버와 파일을 공유하였습니다. - ftp 는 파일 전송 프로토콜로 서로 다른 시스템에서 파일을 전송할 수 있습니다. (저의 컴퓨터와 가상 머신에 올린 서버 사이에서 공유) 먼저 form 태그를 사용하여 get방식으로 요청을 보내는 파일을 만들었습니다. 이제 입력란에 이름을 입력하면!! name에 입력한 이름 값이 들어가 해당페이지를 다시 요청하게 됩니다. 이제 php 코드 부분을 보시면 먼저 데이터베이스 연결을 해줍니다. .. 이전 1 2 3 다음