일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- N0Named
- Python
- SuNiNaTas
- Database
- 사칙연산
- xcz.kr
- 정렬
- Forensics
- Text
- C
- Network
- cryptography
- misc
- 문자열
- php
- Web
- writeup
- 백준
- 수학
- MySQL
- CTF
- Digital Forensics
- HackCTF
- 그리디 알고리즘
- 인코그니토
- wargame
- Web Hacking
- 구현
- 써니나타스
- Incognito
- Today
- Total
목록Programming/PHP & MySQL (18)
보안을 그리다, 훈이
이번 포스팅에서는 CRUD 중 게시글을 삭제하는 기능인 Delete에 대해 다루려고 한다. 이제 기본적인 기능은 대부분 다 구현한 것 같다ㅜㅜ 얼른 포스팅하고 놀아야지ㅣㅣㅣㅣㅣㅣㅣㅣㅣㅣㅣㅣㅣㅣㅣㅣㅣㅣㅣㅣㅣㅣ 당연하지만 delete.php에 게시글 삭제 기능이 구현되어 있다. 게시글 삭제는 사용자가 입력한 것들이 한 번에 삭제되기 때문에 매우 중요하고 위험한 작업일 수 있다. 따라서, 사용자로 행동을 한 번 더 검증하기로 했고, read.php 하단의 삭제 버튼에 confirm() 함수를 사용해 소스코드를 개선했다. [read.php 개선 소스코드] 님 반갑습니다. 로그아웃 로그인 작성자 조회수 목록 마찬가지로 세션을 통해 권한을 통제하며, 게시자가 아닌 기타 회원 및 비회원이 접근하면 권한이 없다는 al..
이번에는 User Interface가 가져야 할 기능 네가지 CRUD 중 Update 기능을 주제로 구현했다. 게시글을 작성한 회원은 게시글 하단의 수정 버튼을 통해 modify.php에 접근하여 수정할 수 있으며, 기타 회원 및 비회원이 URL로 접근시에는 '권한이 없습니다.'라는 alert 창을 띄우고 메인화면인 index.php로 돌아가도록 했다. [modify.php 소스코드] 게시글 수정하기 작성자 제목
앞서 회원가입, 로그인, 로그아웃 기능을 모두 구현하고 보니, 본 게시판은 회원전용 게시판으로서의 대대적인 수정이 필요했다. (과장 좀 했는데 끝내고보니 별거 아닌듯ㅎ) 먼저 살펴볼 페이지는 글을 작성하고 게시하는 write.php / write_action.php이다. 기존의 UI를 보면 제목, 내용과 함께 작성자, 비밀번호를 작성하도록 되어있는데, 이제는 게시글을 읽는 것 외에는 완전히 회원전용 게시판이므로 사용자의 세션을 통해 모든 것을 관리하게 된다. 따라서 작성자, 비밀번호 입력란을 삭제하고, 마찬가지로 db_board 데이터베이스 내 board 테이블의 비밀번호 컬럼 또한 삭제해주었다. 작성자는 자동으로 세션 아이디값을 넣어두게끔 처리했다. [write.php 개선 소스코드] 게시글 작성하기 ..
이번에는 세션 종료를 위한 logout_action.php를 구현해보았다. index.php의 상단 우측에 위치한 로그아웃 버튼을 통해 접근할 수 있다. [logout_action.php 소스코드] 다른 기능에 비해 비교적 간단하다. 마찬가지로 세션을 시작해준 후, 세션을 파괴하기 위해 session_destroy() 함수를 사용한다. session_destroy() 함수의 출력값은 bool이며, 세션 파괴에 성공하면 True를, 실패하면 False를 반환한다. 출력된 bool 값을 $result 변수에 담고, 만약 세션 파괴가 성공했다면 history.back() 함수를 사용하여 이전 페이지인 index.php로 복귀한다. [logout_action.php 결과] 불필요한 동작을 제거하기 위해 aler..
게시판 회원가입 기능을 위해 register.php와 register_action.php를 구현했다. register.php는 login.php의 회원가입 버튼을 통해 접근할 수 있으며, 간단하게 아이디와 비밀번호 입력만으로 가입할 수 있게 했다. [register.php 소스코드] 회원가입 I D PW 마찬가지로 ID와 PW를 POST 방식으로 register_action.php에 넘긴다. [register.php 결과] [register_action.php 소스코드]
이번에는 대부분의 웹사이트에서 기본적으로 사용되는 로그인 서비스를 구현해보았다. 로그인을 통해 사용자를 식별하고 개별적으로 권한을 부여할 수 있기 때문에 게시판 관리의 효율성이 증진된다고 생각한다. 본 게시판에서는 회원에게만 글을 작성할 수 있는 권한을 부여하려고 한다. 먼저 사용자로 하여금 로그인 페이지인 login.php에 접근할 수 있도록 하기 위해 index.php 상단에 로그인 버튼을 제공한다. ㅇㅇㅇㅇ [index.php 수정 및 추가 소스코드] 님 반갑습니다. 로그아웃 로그인 위 소스코드를 index.php의 body 태그 내 상단부분에 작성하였다. 세션 관리를 위해 session_start() 함수로 시작하고 세션이 존재하면 상단 좌측에 '[userid]님 반갑습니다.', 우측에 로그아웃 ..
게시판의 존재 목적 CRUD 중 이전 포스팅 때 구현한 Create에 이어 이번 포스팅에서는 Read에 대해 다뤄볼 것이다. 게시판에 업로드된 글을 읽을 수 있도록 read.php를 구현했다. [read.php 소스코드] 작성자 조회수 목록
이번에는 게시판의 존재 목적인 CRUD 중 필자가 가장 중요하다고 생각하는 Create에 대해 다뤄볼 것이다. (물론 Read도 중요하다ㅎㅎ) 글을 작성하기 위한 form인 write.php를 구현한 후, 작성한 글을 게시판에 업로드하는 action을 취해줄 write_action.php도 구현하였다. [write.php 소스코드] 게시글 작성하기 작성자 제목 내용 비밀번호 write.php는 index.php의 [글쓰기] 버튼을 통해 불러오며, write.php에는 작성자, 제목, 내용, 비밀번호를 입력할 수 있다. 보안상 중요한 글쓰기 기능이므로 method는 GET 방식이 아닌 POST 방식을 사용한다. [write.php 결과] [write_action.php 소스코드]
게시판의 목차를 보여주는 index.php부터 구현하였다. [index.php 소스코드] 게시판 번호 제목 작성자 날짜 조회수 글쓰기 index.php는 게시판 메인 화면이며 글 번호, 제목, 작성자, 날짜, 조회수를 역순으로 출력했다. 게시판이므로 GET 방식이 아닌 POST 방식으로 구현했다. [GET 방식과 POST 방식의 차이] 1. 서로 인코딩 방식이 다르다. 2. GET 방식은 전송속도가 빠른 반면, POST 방식은 보다 느리다. 3. history.back() 사용시 GET 방식은 이전 데이터를 보여주지만, POST 방식은 새로 요청한다. 4. GET 방식은 글자수 제한이 있지만 POST 방식은 글자수 제한이 없다. 5. GET 방식은 URL에 데이터가 출력되므로 보안에 취약하지만, POST..
앞서 공부한 PHP와 MySQL을 다뤄보며 복습도 할겸, 차후 진행할 Web Hacking 실습을 위한 게시판을 구현하기로 했는데.. 4월 25일, 정보처리기사 실기 시험이 있어 일정이 좀 늦춰진 감이 있다. 정처기 개편 이후 문제 난이도가 높아져 합격률이 현저히 떨어진 탓에 시간을 좀 더 할애한 부분도 없지 않다만 가채점 결과는 합격! 출퇴근때마다 가방에 넣어다니느라 정들었던 시나공 대신 이제는 노트북만 들고 다닐 수 있어 좋다 :) 지금부터 개발할 게시판은 보안이라곤 1도 고안하지 않은 매우 취약한 웹앱이다. 추후 웹 취약점에 대해 실습을 통해 공부하며 게시판의 보안성을 향상해 나갈 예정이다. + 게시판의 기본적인 구조(틀)은 Bootstrap과 블로그를 참고하여 구현하도록 하겠다. [게시판 DB 요..