WEB(33)
-
PHP - 게시판 제작 9 - 게시글 검색하기
이제 사용자가 원하는 게시글을 검색 할 수 있도록 합시다. 일단 제목 검색 기능만 후딱 구현하죠. select * from board where title like "%????%" 이번 쿼리에서는 like를 사용했습니다. like%문자%는 테이블에서 %안에 포함된 문자열이 있는 데이터들만 출력합니다. 만약에 게시물중 제목이 1.php 게시판 제작 2.php 게시판 언제끝나 3.php 공부하기 4.나는 jsp 공부할거야 라는 게시물이 있을때, select * from board where title like "%php%"; 를 실행하면 1번,2번,3번 게시물이 출력됩니다. 즉 포함된 문자열이 있을시 출력! 이제 검색을 만들어보자구요 일단 list.php 검색창을 만들어 보았습니다. 자. 이제 검색 처리를 ..
2023.05.07 -
PHP - 게시판 제작 8 - 취약점 고치기
게시판의 read 페이지를 SQL Injection 공격으로 ID 와 PASSWORD 를 알아냈습니다. 원인은 무엇일까요. 일단 안에서 만들어지는 쿼리문을 출력해봅시다. 사용자가 입력한 정보가 그대로~ 그냥 직빵으로 꽂혀서 쿼리문이 만들어 지고 있습니다. 그래서. 쿼리문의 변조가 가능하지요. 이 취약점을 해결하자면...너무 간단한 한 가지의 방법이 존재합니다. 바로 Prepared Statement를 사용해서 쿼리문을 제작하는 것 입니다. 지금 같은 경우에는, 사용자의 입력과 쿼리문의 생성이 동시에 실행이 되고 있습니다. 그러므로 사용자 입력이 쿼리문과 섞이면 언제든지 조작이 가능한 상태인거죠. Prepared Statement는 이와 달리 사용자의 입력과 쿼리문의 생성을 분리한 것 입니다. 즉, 쿼리를..
2023.05.07 -
PHP - 게시판 제작 7 - 게시판 해킹하기
안녕하세요. 이제 게시판 기능을 얼추 구현하였습니다. 하지만. 여기에는 심각한 취약점이 있습니다. read 페이지를 공격 해 볼까요? 여기서 알 수 있는점은.. bno로 게시글을 조회한다는것. 따라서 board 테이블에는 bno가 존재한다. board 테이블에는 title과 content가 있다는것을 알 수 있습니다. bno로 조회를 하는것이니까 쿼리문을 생각해봅시다. select ? from ? where bno = ? 근데, bno는 숫자 타입이니까 따옴표가 없습니다. 맞추지 않고 그냥 공격해도 됩니다. select ? from ? where bno = ? and 1 = 1 숫자와 문자를 섞어서 요청을 해 봅시다. 아무것도 뜨지 않습니다. 이제 and 1 = 1을 Injection 해 봅시다. 정상적..
2023.05.07 -
PHP - 게시판 제작 6 - 게시글 삭제
이제 게시글을 삭제합시다. 전과 똑같이 쿼리문 제작 delete from board where bno = ? 연결 후 쿼리 실행까지 합시다. 삭제는 쿼리 실행만 하면 할게 없습니다. 쓸것도 없고,.. 그냥 바로 삭제입니다. 이게 끝이죠..끝~! read 페이지에서 게시글 4번을 지워보겠습니다. 4번 게시물이 정상적으로 지워졌습니다. 하지만, 현재까지 링크를 일일히 입력해야지 수정과 삭제를 할 수 있습니다. 솔찍히 너무 불편하니까 수정,삭제 버튼을 만들어봅시다. 보통 게시글을 먼저 조회하고 수정과 삭제를 하죠. 그니까 read 페이지에 수정,삭제 버튼을 추가합시다.
2023.05.07 -
PHP - 게시판 제작 5 - 게시글 수정
수정과 삭제 모두 똑같습니다. 전혀~다를게 없고 전혀~어려울게 없습니다. 조회랑 똑같습니다. 쿼리만 약간 달라지는거에요~! 특정 게시글 조회가 select * from board where bno = ? 이라면 특정 게시글 삭제는 delete from board where bno = ? 입니다. 특정 게시글 수정은 어떨까요? 네 update board set ~~~ where bno = ? 입니다. 거의 대가리만 달라진다 이소립니다! 바로 만들어봅시다. 먼저 쿼리문을 생각해보죠. 바뀔것은 title,content,updatedate(수정시간)입니다. update from board set title = ?,content = ?,updatedate = ? where bno = ? 이제 board 디렉토리에..
2023.05.07 -
PHP - 게시판 제작 4 - 게시글 작성
안녕하세요. 저번 시간에는 게시판 리스트와 글 조회 기능을 간단히 만들어보았죠. 이번에는 글 등록 페이지를 만들어 보겠습니다. 글 등록도 생각보다 간단쓰 하죠. 일단 페이지를 만들기 전 쿼리문을 생각해봅시다. Insert into board(title,content,createdate) values(?,?,?); 이런 식으로 들어가겠네요. 이제 board/register.php를 만들어봅시다. 프론트 작업부터 해주죠! Write page form에서 title과 content를 입력받고 버튼을 누르면 자신에게 보내군요! 하지만 우리가 못보던 속성이 몇가지 있습니다. placeholder 속성은 뭘까요? 바로 실행을 시켜보시면 아시겠지만 아무런 글자를 입력하지 않았을때 출력시킬 글자를 설정하는겁니다. id..
2023.05.06