일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- SuNiNaTas
- Web Hacking
- cryptography
- HackCTF
- misc
- 인코그니토
- 사칙연산
- 백준
- 구현
- Incognito
- MySQL
- php
- N0Named
- Database
- 그리디 알고리즘
- 수학
- xcz.kr
- Network
- Web
- writeup
- wargame
- Text
- Digital Forensics
- 써니나타스
- 정렬
- CTF
- 문자열
- C
- Forensics
- Python
- Today
- Total
목록MySQL (20)
보안을 그리다, 훈이
이전에 포스팅한 [Web Hacking] SQL Injection 취약점을 토대로 실습을 진행해보았다. [SQL Injection 실습] - Error based SQL Injection 논리적 에러를 이용한 SQL Injection 기법으로, 입력값에 대한 검증이 없을 시 참값과 주석을 활용하여 세션을 탈취할 수 있다. //입력된 아이디가 DB에 존재하는지 검사 $query = "select * from member where id='$id'"; $result = $connect->query($query); 앞서 제작한 게시판 웹페이지 중 [login_action.php] 페이지의 일부 소스코드를 가져왔다. 사용자가 입력한 아이디가 DB의 id 컬럼에 존재하면 그 값에 대한 전체 속성값을 가져오는 쿼리..
[SQL Injection 개념] 웹 사이트의 보안상 허점을 이용해 특정 SQL 쿼리문을 전송하여 공격자가 원하는 데이터베이스의 중요한 정보를 가져오는 해킹 기법을 말한다. 대부분 클라이언트가 입력한 데이터를 제대로 필터링하지 못하는 경우에 발생한다. 공격의 쉬운 난이도에 비해 피해가 상당하기 때문에 보안 위협 1순위로 불릴만큼 중요한 기법이며, 실제로 OWASP Top 10 중 첫 번째(2017년 기준, 2021년 현재 세 번째)로 등재되어 있다 . [SQL Injection 종류] - Error based SQL Injection - 논리적 에러를 이용한 SQL Injection [로그인 쿼리문] SELECT * FROM member WHERE id = 'hooneee' AND password = '..
이번 포스팅에서는 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 소스코드]