본문 바로가기

전체 글

(81)
[php/mysql] 게시판 리스트 구현하기 (메인 페이지) 페이징 처리는 하지 않고 게시글만 역순으로 출력되게 하였다. [index.php] 게시판 님, 환영합니다. 글쓰기 [index.css] .btn { border: none; background-color: lightgray; border-radius: 5px; height: 25px; color: black; } .column { margin-bottom: 300px; } .search { text-align: center; margin-bottom: 30px; } table { /* border-top: 1px solid #444444; */ border-collapse: collapse; width: 1200px; margin-bottom: 30px; } tr { border-bottom: 1px s..
XSS(Cross Site Scripting) 공격이란? (종류, 방어기법, 공격 시나리오) 1. XSS 공격이란? XSS 공격은 사용자 브라우저에 전달되는 데이터에 악성 스크립트를 포함시킨 뒤, 사용자 브라우저에 실행되면서 해킹하는 공격이다. SQL Injection과 함께 웹 취약점 중 가장 기초적인 취약점으로 알려져 있으며 공격 패턴이 다양하고 변화도 다양하게 이루어지기 때문에 파급효과가 무궁무진하다. 웹 취약점 진단의 기준이 되는 주요정보통신기반시설 기술적 취약점 분석 가이드에서도 크로스사이트 스크립팅을 찾아볼 수 있다. 2. XSS 공격 유형 1) Reflected XSS Reflected XSS는 스크립트가 포함된 공격용 악성 URL을 만든 뒤, 사용자가 해당 URL을 클릭했을 때 정보를 획득하는 공격이다. URL이 길면 클라이언트가 의구심을 가질 수 있기 때문에 URL 단축을 이용해..
모의해킹의 꽃 Burp Suite (버프슈트)와 proxy에 대해 알아보자 1. Proxy 서버란? 클라이언트와 서버가 중간에 거쳐 가는 서버 프록시를 사용하지 않는 경우 클라이언트의 요청 브라우저 -> 서버 프록시를 사용하는 경우 클라이언트의 요청 브라우저 -> 프록시 -> 서버 응답도 마찬가지로 프록시 서버를 거쳐간다. 위 과정과 방향만 반대로 거쳐간다. 2. Burp Suite burp suite를 부르는 방식은 버프슈트, 버프 스위트, 버프 스윗 등 다양한데 나는 보통 버프슈트라고 부른다. 버프슈트는 프록시 서버를 제공하고, 모의해킹에 사용되는 다양한 기능들을 제공하기 때문에 모의해킹에 필수적이다. 아마 모의해킹을 공부 한다면 알 수 밖에 없을 것이다. 아직은 나도 공부를 하고 있는 과정이기 때문에 공부하며 익힌 기능들을 정리해본다. Proxy : web browser와..
[php / mysql] 세션(session)을 이용한 로그인 / 로그아웃 구현 2023.11.13 - [모의해킹 스터디/과제] - [2주차] [php / mysql] 로그인 / 회원가입 페이지 만들기 [2주차] [php / mysql] 로그인 / 회원가입 페이지 만들기 2주차 과제 회원가입 페이지 만들기 (기능 구현) 로그인 페이지 ( DB 연동하기) 1주차 과제가 아무리 봐도 마음에 안들어서 코드를 거의 다 바꿨다. 그냥 새로 시작했다고 해도 무방하당ㅎ 회원가 studysteadily.tistory.com 위 글에서 구현한 로그인 관련 코드에 세션을 추가하였다. (세션의 의미와 장단점은 아래 글에서 확인할 수 있다.) 2023.11.14 - [모의해킹 스터디/수업 정리] - 쿠키 vs 세션 vs 토큰(JWT) | 서버가 로그인 상태를 유지하는 방법 [login_proc.php] ..
[3주차] [php / mysql] 4가지 로그인 과정 구현 3주차 과제 식별 / 인증 동시 식별 / 인증 분리 식별 / 인증 동시 (+ 비밀번호 HASH) 식별 / 인증 분리 (+ 비밀번호 HASH) 로그인에 대해 작성된 아래 글의 로그인 로직을 좀 더 자세히 구현할 것이다. 로그인은 식별과 인증으로 나뉜다 로그인이란? 시스템에 자기 자신을 증명하는 것 로그인 과정은 크게 식별과 인증으로 나뉜다. > 식별 시스템 내 수많은 사용자 중에서 특정한 사용자를 찾아내는 작업 사용자가 로그인할 때 식 studysteadily.tistory.com 로그인 로직은 2주차에 구현해놓은 login_proc.php을 수정하여 작성했다. [2주차] 로그인 / 회원가입 페이지 만들기 | php, mysql 2주차 과제 회원가입 페이지 만들기 (기능 구현) 로그인 페이지 ( DB 연동..
쿠키 vs 세션 vs 토큰(JWT) | 서버가 로그인 상태를 유지하는 방법 우리가 웹사이트에 로그인을 하면 카페나 블로그로 이동해도 로그인 상태는 유지되어 있다. 다른 페이지로 이동하더라도 로그인이 풀리지 않아 굳이 다시 인증할 필요가 없다는 것이다. 그렇다면 서버는 어떻게 새로운 요청을 해도 인증 상태를 유지하는걸까? 우선 웹 표준 프로토콜인 HTTP의 특징을 알아보자. HTTP의 특징: Stateless: 서버는 클라이언트의 상태를 저장하지 않는다. 따라서 이전에 클라이언트가 어떤 요청을 보냈는지 기억하지 못한다. Connectionless: 서버는 하나의 요청에 하나의 응답을 보내고 연결을 끊는다. 두가지 특징을 통해 서버는 비용과 부담을 줄일 수 있다. 하지만 서버는 클라이언트의 상태를 저장하지 않기 때문에 사용자가 로그인을 통해 인증을 거쳐도, 이후 요청에 대해서는 인..
[php / mysql] 로그인 / 회원가입 페이지 만들기 2주차 과제 회원가입 페이지 만들기 (기능 구현) 로그인 페이지 ( DB 연동하기) 메인 폴더 안에 member 폴더를 생성해서 코드를 작성했다. (CSS 파일은 메인 폴더 안에 CSS 폴더 생성해서 저장) 회원 정보를 저장할 memeber 테이블 로그인 페이지 login.php Login // 경고문 출력 // 경고문 출력 회원가입 자바스크립트로 아이디나 비밀번호 입력폼이 공백일 때 입력하라는 경고문을 출력하고, 커서가 가도록 하였다. style.css 회원가입 화면이랑 같이 쓰는 파일이라 정리가 좀 안돼있어 보기 어렵다 (...나도 헷갈림) /* style.css */ * { padding: 0; margin: 0; } a { text-decoration: none; color: #000; } /* ..
로그인은 식별과 인증으로 나뉜다 로그인이란? 시스템에 자기 자신을 증명하는 것 로그인 과정은 크게 식별과 인증으로 나뉜다. > 식별 시스템 내 수많은 사용자 중에서 특정한 사용자를 찾아내는 작업 사용자가 로그인할 때 식별정보를 입력하면 서버는 DB에 일치하는 식별정보가 존재하는지 확인한다. 하지만 만약 중복된 식별정보가 존재한다면? 서버는 특정한 사용자를 가려낼 수 없으므로 식별이 불가능하다. 따라서 식별정보는 중복될 수 없다는 특징이 있다. 시스템에 로그인할 때 흔히 사용하는 ID, Email이 대표적인 식별정보이다. 이러한 식별정보는 DB에 PK로 저장되기 때문에 실제로 중복체크를 우회해서 회원가입을 시도해도 DB 자체에서 거부되어 회원가입이 불가능하다. > 인증 식별된 사용자가 본인이 맞는지 확인하는 작업 시스템은 사용자에게 식별..