get_board_db() 함수의 수정 > 자유게시판

자유게시판

get_board_db() 함수의 수정 정보

get_board_db() 함수의 수정

본문

2900516395_1702801964.8483.png

`lib/get_data.lib.php` 파일에 DB에서 게시판 설정 데이터를 가져오는 `get_board_db()` 함수입니다.

 

이 함수에 `get_board_db` Hook이 있는데, 이 Hook은 항상 빈 배열이 전달됩니다.

이로인해, 사실상 `get_board_db` Hook은 아무런 의미 없는 동작을 하게 됩니다. DB에서 게시판 데이터를 받아와서 전달해줘야 이를 활용해 지지고 볶고하는데 항상 빈 배열만 주니 이 Hook이 존재하는 의미가 없습니다.

 

빈 배열을 채워서 보내면 되지 않느냐? 그러면 DB에서 데이터를 가져오지 않고 반환해버리게 됩니다. 그리고 이러한 동작은 이미 7라인의 `get_board_db_cache` Hook에서 처리하는 것이 낫죠.

 

게다가 `get_board_db()` 함수를 호출할 때 캐시를 사용하지 않는 것으로 요청하면 `get_board_db()` 함수 내부에서 캐싱된 데이터를 `get_board_db` Hook이 항상 빈 배열로 덮은 후에 다시 DB에서 가져와 채워넣기 때문에 `get_board_db` Hook에서 열심히 데이터를 추가, 삭제, 수정한 변경사항이 DB의 데이터로 다시 덮어 씌워져버리게 되어 `get_board_db` Hook이 사실이 7라인에 있는 `get_board_db_cache` Hook 보다 못한 동작을 하게 되죠.

 

이 Hook이 하는 역할이 전혀 의미가 없는 상태죠.

get_menu_db() 함수도 똑같은 문제를 가지고 있습니다.

 

 

이 문제는 이미 오래 전에 Memcache를 이용하는 플러그인을 만들어보면서 발견한 문제인데, 귀찮아서 방치했던 부분입니다.

이것 말고도 제 머릿속에 쟁여 놓은 문제들이 참 많은데... 하나씩 꺼내놓기도 힘드네요.

아마 그누보드를 오래 사용하신 분들은 이미 알고있는 문제들이 많을걸로 생각하는데, 다같이 하나씩 꺼내놓아 고쳐나가면 좋겠네요. 

 

추천
3

댓글 1개

hook 목록 https://g5guide.github.io/developers/hook-list.html 작성하다가 도저히 제대로 동작하지 않아서 코드를 수정하는 PR을 보냈습니다.

 

이 함수에 관련된 문제는 아니지만 역시 hook 목록 내용 채우다가 보안취약점도 발견했네요.

https://github.com/gnuboard/gnuboard5/issues/297

전체 195,355 |RSS
자유게시판 내용 검색

회원로그인

진행중 포인트경매

  1. 참여6 회 시작24.04.25 20:23 종료24.05.02 20:23
(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT