제로보드
1. 개요
웹 프로그래머 고영수(제로, 現 라인페이 대표)가 PHP로 개발한 웹 게시판 시스템. DB는 MySQL[1] 을 사용한다.
2. 인기
2000년대 초에 개인 홈페이지 제작 열풍이 불었었고, 이때 다양한 이지보드, 세팔보드 등의 웹 게시판 시스템들이 여럿 개발되었다. 제로보드는 그 중에서도 본좌급 인기를 자랑하던 물건. 심지어 리그베다 위키가 엔젤하이로 밑에 들어가 있던 시절의 각종 게시판들도 제로보드였다. 디시인사이드도 2013년 7월까지 이걸 마개조해서 사용하다가 자체 게시판으로 갈아탔다.
또한 이 프로그램 덕분에 저가형 웹호스팅 시장은 아파치+PHP+MySQL 외의 다른 포맷이 사실상 전멸했을 정도의 인기를 끌었고, 개인 홈페이지 뿐만 아니라 기업이나 단체 홈페이지 등에서도 엄청나게 쓰면서(+더군다나 공짜이기까지 했으니) 적당한 호스팅 구해서 제로보드 깔고 스킨 다운받아서 깔고 페이지 몇 개 나모 웹에디터로 뚝딱해서 붙이면 (겉보기에는) 그럴싸해 보이는 사이트가 하나 나왔으니 너도나도 웹 사이트 제작에 뛰어들게 되고, 이런 이유로 사이트 평균 퀄리티와 단가 하락을 가져온 주범으로 지목당하기도 한다. 사실 이건 해외도 마찬가지다. 해외도 2000년대에는 저 조합을 쓰는 phpBB나 다른 포럼형 게시판이 인기를 끌었고, 그 이후에는 역시 저 조합을 쓰는 워드프레스가 인기몰이하다가 2010년대 중반부터는 워낙 서버값이 싸지다보니 그냥 가상서버 이상급을 끌어다 쓰는 경우가 많아져서 조합은 아무래도 좋게 되었다. Node.js, Ruby, NoSQL 계열이 인기 많아진 건 덤. 그래도 아파치를 제외하면 아직 정석급 자리를 차지하고 있다.
제로보드를 쓰는 홈페이지들은 대부분 페이지의 구조를 테이블로 짜고, 제로보드 게시판 설정의 헤더와 푸터에 각각 테이블 윗쪽 부분과 아래쪽 부분을 넣어주면 그럴싸한 페이지가 완성되었다. 당시에는 웹 표준 같은 개념이 없었으니 IE 이외의 환경에서 깨지건 말건 신경도 안 썼다.
3. 특징
제로보드의 형태는 댓글을 제외하면 PC통신의 게시판 형태를 거의 그대로 가져왔다. 한국은 초고속 인터넷이 다른 나라보다 빠르게 보급, 대중화되면서 인터넷의 바로 전 단계에 해당되는 PC통신이 먼저 대중화되었다. 제로보드보다 앞서 태어난 WWWBoard나 WayBoard,[2] 워니보드 등등이 PC통신의 게시판 형태를 그대로 도입했다. 이 대세를 제로보드도 그대로 따른 것이다.
이 게시판의 보급과 인기로 인해 한국의 인터넷 게시판들은 게시물을 작성하면 그 밑으로 댓글이 달리는 형태가 주류로 자리잡게 되었다. 덕분에 한국의 네티즌들이 서양의 포럼형 게시판이나 일본의 스레드 플로팅형 게시판을 처음 접하게 되면 어색함과 불편함을 많이 느끼곤 한다. 이에 대해서는 스레드#s-2 문서와 플로트#s-2 문서, 인터넷 포럼 문서를 참고하자.
3.1. 장점
간편한 스킨(게시판의 디자인) 시스템과 회원 관리 시스템 등이 높은 인기 요인. 스킨은 구조가 간편해서, 구조를 어느 정도만 파악하고 이미지 제작 능력만 있다면 누구나 자신의 홈페이지에 맞춰서 쉽게 스킨을 새로 만들 수 있었다. 회원 관리 시스템은 동시대의 다른 게시판 프로그램에 비해 기능이 강력해서 인기가 좋았다.
3.2. 단점
하지만 2002년에 출시된 4.1 버전 이후 개발자의 사정으로 계속해서 업데이트가 되지 않았었고, 이후 블로그의 인기와 이런저런 문제점들이 지적되어 인기가 떨어졌었다. 지금도 개인 홈페이지에서는 쓰는 사람들이 많지만, 웹 표준 문제도 있고 보안상 허점으로 사이트가 자주 털리는 사례가 많아 현재는 사용을 권장하지 않는다.
3.2.1. 코드 퀄리티
코드 퀄리티는 제로보드가 만들어진 당시 기준으로도 상당히 엉망이다. 중심이 되는 설계가 없고[3] , 그때그때 원하는 기능을 덕지덕지 이어붙인 형태라서 모듈화가 제대로 되어 있지 않고 사방에 전역 변수가 떡칠되어 있다. 제로보드 4가 보안에 취약하다는 악명은 보안에 취약한 코드를 만들기 쉬운 당시 PHP의 특성과 제로보드 4의 코드 퀄리티가 빚어낸 결과이다. 제로보드 4의 강점이었던 스킨 시스템도 어떤 인터페이스를 제공하는 것이 아니라 그냥 생짜 PHP 코드를 집어넣는 형태로 구현되어 있다. 유저가 제작한 스킨으로 인해 보안 문제를 일으키는 경우나 제로보드가 버전업 될 때마다 동작하던 스킨이 깨지는 경우가 비일비재했다.
더 큰 문제는 제로보드 스킨 제작으로 PHP에 입문한 사람들이 많다는 것이다. 사실상 그런 사람들에게는 제로보드 4 코드가 레퍼런스인 셈인데, 코딩 습관이 제로보드 4에 맞춰지게 된다. 이로 인해 제대로 된 강좌 없이 막히는 부분이 있으면 다른 소스에서 복사 붙여넣기 하는 개발문화가 형성되었고 이들이 프로그래머로 진출하면서 비슷한 수준의 코드를 생산하게 되는 일이 많았다.
3.2.2. 보안 문제
제로보드 4의 보안 문제는 당대 게시판 중 상당히 심각한 수준으로, 웹을 크롤링하면서 제로보드 4를 발견하면 자동으로 해킹하는 봇까지 있었을 정도이다. 특히 SQL 주입 취약점이 심각한 수준으로, 2000년대 말~ 2010년대 초반 상당수의 제로보드 4 웹사이트가 이 취약점을 이용하여 해킹당한 사례가 있으며 이 시기 수많은 서브컬처 계열 사이트가 폐쇄되거나 리뉴얼을 해야만 했다. 대표적인 사례로 뽐뿌.
제로보드의 스킨 구현 방식이 제로보드의 핵심 파일을 수정하는 방식이기에, 보안 패치가 되었다 해도 보안 패치 적용 전의 스킨을 사용시 보안 패치가 적용되지 않는 문제점이 있다. 게다가 제로보드는 2009년 이후로 개발이 중단된 상태이기 때문에, 보안 문제가 발생해도 대처하기가 어렵다.
당연히 비밀번호 암호화 방식도 케케묵은 옛날 방식이다. MySQL의 password 암호화 방식을 사용해서 암호화하는데, 문제는 DB 테이블에서 password의 자릿수가 딱 16자로 잡혀 있어서 4.1 이후 버전의 MySQL password 암호화를 저장할 수가 없게 되어 있다. 이것은 MySQL의 password 암호화가 4.0 버전까지 16자로 나왔기 때문인데, 4.1 버전에서 암호화를 바꾸면서 자릿수가 41자로 늘어났다.[4] 이 때문에 제로보드는 4.1 이후 버전의 MySQL과 호환이 안 되게 되었고, 국내 웹 호스팅의 euc-kr 호스팅의 MySQL 버전이 4.0에서 멈추게 된 문제를 제공했다. 여담이지만 그누보드는 진작에 암호화를 갈아치워 최신 버전의 MySQL과도 호환이 잘 된다.
게다가 구 버전의 PHP와 MySQL을 쓰기에 SQL 주입을 원천적으로 차단하는 Prepared statement[5] 도 쓸 수 없다. 그야말로 답이 없다.
3.2.3. 웹 표준 문제
웹 표준을 지키지 않아 모질라 파이어폭스 등의 타사 웹 브라우저 뿐만 아니라 인터넷 익스플로러 10 이상에서도 화면이 이상하게 나오거나 일부 기능이 작동하지 않는 등의 문제가 생긴다. 그 중에서 몇 가지 문제점들을 뽑자면 다음과 같다.
- 인터넷 익스플로러 이외의 웹 브라우저에서는 목록에서 카테고리 선택이 되지 않는다. 인터넷 익스플로러 11에서도 호환성 보기를 설정하지 않으면 카테고리 선택이 되지 않는다. 이 문제는 카테고리 선택을 select box로 출력되게 할 경우 발생하는데, 코드를 뜯어보면 IE가 아닐 경우 이 부분이 출력이 안 되게 아예 막아놔서 벌어지는 현상이다. 저 부분을 풀어버리면 작동이 된다.
- 일부 브라우저에서 회원가입을 진행할 수 없다. 인터넷 익스플로러 역시 10 이상에서 문제가 발생한다. 아이디를 쓰고 Check ID 버튼을 아무리 눌러도 반응이 없다. 비표준 자바스크립트 사용으로 인한 문제로 추정된다.
- 일부 브라우저에서 사용하지 않는 버튼들이 그대로 표시된다. 예를 들어서, 글을 쓸 수 없는 게시판인데도 글쓰기 버튼이 표시된다거나 하는 문제 말이다. 이 문제는 글을 쓸 수 없는 게시판의 버튼을 삭제할 때 그냥 삭제하는 것이 아니라, '
3.2.4. 폐쇄적인 라이센스 정책
제로보드는 원래 라이센스 정책이 굉장히 폐쇄적이었다. 심지어 유료 버전을 사지 않으면 스킨 상에 나타나는 저작권 문구조차 못 지우게 했다. 그러나 차기 버전이 나오면서 제로보드라는 이름을 쓰지 않는 조건 하에 수정 및 재배포가 가능해졌다. 같은 시기에 저작권 문구 역시 삭제가 가능하게 바뀌었으며, 스킨 제작자에게 허락을 받았거나 자작 스킨이라면 스킨 저작권 문구도 삭제할 수 있게 바뀌었다.
3.2.5. 플러그인 제작 문제
추가 플러그인 제작이 불편하다. 이 문제 때문에 사용자마다 제로보드의 소스가 다른 문제가 발생했다. 팁 게시판에 올라온 것을 바탕으로 수정해서 사용하던 사람이 많았기 때문. 4.1 버전 이후 업데이트가 안 되고 보안 업데이트도 어려웠던 이유 중 하나이기도 하다.
4. 현재
현재는 고영수 씨가 NHN(현 네이버)으로 직장을 옮기고,[7] 제로보드 또한 NHN에 인수되었다. 4 버전의 개발 및 배포는 완전히 중단되었다.
2009년 9월 22일 배포된 4.1 pl10 버전을 마지막으로 개발 및 배포가 중단되었다. 인터넷을 찾아보면 이 버전을 구할 수는 있지만 보안 취약점이 많으므로 사용을 권장하지 않는다. 개발 중단 이후 다른 유저들이 비공식적으로 수정한 버전이 몇개 존재하지만 이 역시 현재 시점에서는 보안 취약점이 많으므로 사용을 권장하지 않는다.
2005년경 제로보드 5를 개발했으나, 베타까지 나오고 중지되었다. 그러다 2008년, NHN의 지원을 받아 제로보드 XE라는 이름으로 후속작을 내기 시작했다. 중간에 명칭을 XpressEngine으로 바꿔 지금도 꾸준히 업데이트를 하는 중. XpressEngine은 게시판 프로그램이 아니라 사이트 자체를 제작하는 웹 빌더 프로그램이다. 제로보드 4에서 DB 데이터 이전은 가능하지만 스킨 시스템이 완전히 바뀌어서 호환성은 없다. 거의 별개의 프로그램이라고 봐도 된다.
아직까지도 제로보드 4.1로 웹사이트를 운영하는 곳이 적지 않다. 제로보드 4.1은 보안이 취약하고 더 이상 사용자 지원도 되지 않기 때문에 운영에 적지 않은 어려움이 있다. 하지만 웬만큼 규모가 큰 사이트는 그 규모 때문에 다른 프로그램으로 옮기기가 쉽지 않은 상황. PHP 5.3 버전부터 제로보드 4.1이 제대로 작동하지 않는 문제가 있어서[8] 호스팅 서버의 사양이 높은 사이트는 대부분 XpressEngine이나 그누보드로 바꿔서 운영하고 있다.
너무 오래 개발이 되지 않다 보니 최신 버전의 PHP와 MySQL에서는 쓰기 힘들다. 상술했듯이 PHP 5.4에서 PHP 4 시절의 오래된 기능의 호환을 제거하면서 작동이 되지 않게 되었다.[9] MySQL은 더 심한 것이, 이미 오래 전에 나온 4.1 버전부터 작동이 되지 않는다. 이는 MySQL의 password() 함수의 비밀번호 생성 알고리즘이 보안성을 이유로 향상되면서 호환성이 없어진 것이 원인.[10] 거기다 EUC-KR 기반이라[11] 요즘 많이 쓰는 UTF-8 환경에서는 쓰는 것도 어렵다. 배포가 중단되기 직전 UTF-8 버전이 배포된 적이 있지만 이미 그때는 XE가 개발된 이후라 쓰는 사람도 많지 않았다. 이 때문에 국내 호스팅 제공 업체의 EUC-KR 지원 호스팅은 대다수가 MySQL 버전이 4.0에 머물러 있는 것을 볼 수 있다.
현재 제로보드와 비슷하면서도 계속해서 업뎃이 되고 사용자가 활발한 게시판에는 오픈소스 프로그램인 그누보드가 있다. 그누보드가 제로보드를 대체한 탓인지 4 버전은 제로보드와 일부 단점을 공유한다(...).[12] 물론 그누보드는 버전 5로 넘어가면서 꾸준히 업데이트가 되는데다 4와 5 버전 차이가 제로보드와 XE의 차이보다 휠씬 적기 때문에 큰 문제는 되지 않는 편이다.
5. 여담
쪽지가 오면 "쪽지가 도착했습니다, 빨리 확인해 주세요."라는 여성 목소리의 알림이 들리는데, 이 목소리가 참으로 상큼하기로 유명했다. 이 목소리의 주인공은 현재 라디오 기상캐스터와 여행작가로 활동 중인 송소진 씨로, 라디오 프로 신해철의 고스트네이션 오프닝의 경고문의 주인공이기도 하다. 이 알림음은 어도비 플래시 기반으로 되어 있기 때문에 플래시 플레이어가 없으면 쪽지가 와도 알림음이 들리지 않았다. 현재는 제로보드도 완전히 버려졌고 플래시도 지원 중단을 앞두고 있어서 다 옛날얘기다...
한때 그누보드와 제로보드 기반 사이트에서 웹보드게임을 서비스 할 수 있는 프로그램이 있었으나, 관리 업체 측 사정으로 운영이 중단되었다. 참고
6. 제로보드를 사용하는 사이트
7. 관련 문서
[1] 후술하겠지만, MySQL 4.0 이하 버전에 대응하는 버전이 없는 MariaDB는 쓸 수 없다.[2] 훗날 이 보드는 그누보드에 큰 영향을 준다.[3] 사실 PHP용 프레임워크(Laravel, CodeIgniter, CakePHP 등)는 5.4버전 즈음 되어서야 본 궤도에 올랐다.[4] SHA-1(결과값이 40자다)을 두 번 돌리고 앞에 별표를 붙인다.[5] 쿼리 명령과 변수를 분리해서 기술하는 기법.[6] lib.php파일 상단에
header ("X-UA-Compatible: IE=EmulateIE9");
를 추가해주면 된다.[7] 정확히는 근무하던 회사를 NHN이 인수하면서 NHN 소속이 된 것.[8] 5.3부터 추가된 경고성 문구인 Deprecated(제거 예정)가 한몫했다.[9] 설치 페이지에서부터 엄청난 양의 '''Deprecated'''가 반겨주며 PHP 7.x에서는 MySQL함수가 모두 제거된 관계로(mysqli 또는 PDO로 변경해야 한다) '''아예 Fatal Error가 떠서''' 제로보드 4.1을 사용하려던 홈페이지 제작자를 벙찌게 만든다. 5.5 이후의 최신 PHP 버전들에서는 현재도 업데이트 중인 그누보드 4마저 이미지 불러오기 관련 Deprecated가 뜬다. 그누보드 5는 최신 버전에서 PHP 7.0 지원. 업데이트가 완료되었기 때문에 이런 문제는 없다.[10] 호환성을 위해 예전 알고리즘이 old_password()라는 함수로 남아있기 때문에 소스를 수정하면 4.1 이후 버전에서도 사용이 가능하긴 하다.[11] 외국어는 물론이고 이모지, 심지어 한글 채움 문자를 사용하지않으면 일부 '''한글'''조차 표현이 안 된다! 참고로 이모지는 MySQL 5.5(= MariaDB 5.5)에서야 지원하며 한글 채움 문자는 Mozilla Firefox만 지원한다.[12] 위에서 서술한 보안 문제, Prepared statement 미지원 등. PHP 7 지원 문제는 그누보드 5에서 업데이트로 해결되었다.[13] 위에서도 언급했지만, 보안상의 취약점으로 인해 개인정보가 유출되는 사태가 발생했다.[14] 보안상의 취약점으로 인해 게시물에 악성코드가 삽입되는 일이 자주 일어난다고 한다. 참고로 2012년 초반 디시인사이드에서 일어났던 일이다.[15] 한때 XpressEngine으로 바꾸려는 계획이 있었으나, 서버 이전으로 인해 계획이 취소되었다. 현재는 사이트가 폐쇄되었으며, 네이버 카페에 'Theme of RDM'이라는 이름으로 새로 만든 상태. 자세한 내용은 해당 문서 참고.[16] 자체적으로 꽤 많이 마개조하여 사용하고 있다.