diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 000000000..8207863b1 --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,43 @@ +# 저장소 작업 지침 + +## 적용 범위 + +이 문서는 저장소 루트와 모든 하위 디렉터리에 적용한다. + +## 문서 작성 언어 + +- README, 보안 정책, 설치 안내, 개발 가이드 등 저장소 문서는 원칙적으로 한국어로 작성한다. +- 파일명, 코드 식별자, 명령어, API 명칭, 설정값과 외부 서비스의 고유 명칭은 원문을 유지한다. +- 영문 문서나 번역본이 별도로 필요한 경우에는 해당 작업에서 명시적으로 요청된 범위에 한해 추가한다. + +## 커밋 메시지 + +- 커밋 메시지는 한국어로 작성한다. +- 제목은 `<접두어>: <변경 내용>` 형식을 사용한다. +- 접두어는 아래 권장 목록에서 변경 목적에 가장 가까운 항목을 선택한다. +- 변경 대상을 포함해 무엇을 왜 변경했는지 알 수 있도록 구체적으로 작성한다. +- `수정`, `업데이트`, `작업`처럼 변경 내용을 식별하기 어려운 표현만 사용하지 않는다. +- 하나의 커밋에는 가능한 한 하나의 목적에 해당하는 변경만 포함한다. +- 제목만으로 설명이 부족하면 본문에 변경 이유, 영향 범위와 검증 방법을 추가한다. +- 관련 이슈가 있으면 커밋 본문이나 꼬리말에 이슈 번호를 기록한다. + +### 권장 접두어 + +- `feat`: 새로운 기능 추가 +- `fix`: 버그 또는 잘못된 동작 수정 +- `security`: 보안 취약점 수정이나 보안 강화 +- `docs`: 문서 추가 또는 변경 +- `refactor`: 동작 변경 없는 코드 구조 개선 +- `perf`: 성능 개선 +- `test`: 테스트 추가 또는 변경 +- `build`: 빌드 시스템이나 의존성 변경 +- `ci`: CI/CD 설정이나 자동화 변경 +- `chore`: 기능과 직접 관련 없는 유지보수 작업 +- `revert`: 이전 변경 되돌리기 + +### 작성 예시 + +- `docs: Git과 압축파일 설치 절차를 구분해 README에 안내` +- `fix: 품목 일부 취소 시 PG 취소금액 불일치 수정` +- `security: 상품 정렬값 화이트리스트 검증으로 SQL 삽입 차단` +- `refactor: 객체 캐시의 유형별 저장 키 생성 로직 분리` diff --git a/README.md b/README.md index e69de29bb..ba0467ded 100644 --- a/README.md +++ b/README.md @@ -0,0 +1,78 @@ +# 그누보드5 + +그누보드5는 PHP와 MySQL 또는 MariaDB 기반의 오픈소스 CMS입니다. 게시판과 회원 관리 기능을 제공하며 쇼핑몰 솔루션 영카트를 포함합니다. + +## 버전 확인 + +현재 소스 코드의 버전은 [`version.php`](version.php)에서 확인할 수 있습니다. + +## 다운로드 및 설치 + +### 설치 환경 + +#### 기본 요구사항 + +- PHP 5.2.17 이상 + - 최소 요구 버전은 PHP 5.2.17이며 PHP 7.2 이상을 권장합니다. +- MySQL 5.0 이상 또는 MySQL 5.0 이상의 기능을 지원하는 MariaDB +- Linux 호환 운영체제 + +#### 필수 라이브러리 + +- GD Library 2.0 이상 +- iconv + +#### 추가로 필요한 모듈 및 프로그램 + +- 글을 SNS로 복사하는 기능 사용 시 + - cURL + - JSON +- 영카트5 모바일 결제 사용 시 + - SOAP + - OpenSSL + +> SIR에서 직접 제작한 그누보드5 및 호환 프로그램은 Linux에서만 개발하고 테스트했습니다. 다른 운영체제에서의 정상 동작은 보장하지 않습니다. + +설치 환경에 관한 자세한 내용은 [그누보드5 공식 매뉴얼](https://sir.kr/manuals/g5/1)을 확인하십시오. + +### Git을 이용하는 방법 + +Git을 사용할 수 있는 서버에서는 [GitHub 저장소](https://github.com/gnuboard/gnuboard5)를 복제하여 설치할 수 있습니다. + +```bash +git clone https://github.com/gnuboard/gnuboard5.git +cd gnuboard5 +``` + +복제한 `gnuboard5` 디렉터리를 웹 서버의 서비스 경로로 사용하거나, 서비스 경로 안에 소스 전체를 배치합니다. 이후 아래의 공통 설치 절차를 진행합니다. + +### 압축파일을 이용하는 방법 + +1. 다음 중 한 곳에서 설치할 버전의 압축파일을 내려받습니다. + - [GitHub Releases](https://github.com/gnuboard/gnuboard5/releases)에서 원하는 버전을 선택하고 `Source code (zip)`을 내려받습니다. `*.patch.zip` 파일은 기존 설치본을 업데이트하기 위한 패치이므로 신규 설치에는 사용하지 않습니다. + - [SIR 그누보드5 다운로드](https://sir.kr/boards/g5_pds)에서 원하는 버전의 배포본을 내려받습니다. +2. 내려받은 압축파일을 풉니다. +3. 압축을 푼 디렉터리의 파일과 하위 디렉터리를 FTP, SFTP 등의 방법으로 웹 서버의 서비스 경로에 업로드합니다. +4. 업로드가 끝나면 아래의 공통 설치 절차를 진행합니다. + +### 공통 설치 절차 + +1. 브라우저에서 소스를 배치한 주소로 접속하여 설치 화면을 엽니다. +2. `data` 디렉터리를 만들라는 안내가 표시되면 `config.php`가 있는 디렉터리에 `data`를 만들고 웹 서버가 쓸 수 있도록 권한을 설정합니다. 공식 매뉴얼에서는 `707` 권한을 예시로 사용합니다. +3. 라이선스 내용을 확인하고 동의한 뒤 설치를 계속합니다. +4. MySQL 또는 MariaDB 접속 정보와 최고관리자 정보를 입력합니다. +5. 설치 완료 화면을 확인한 뒤 생성한 최고관리자 계정으로 로그인합니다. + +> 기존 사이트에 재설치하면 데이터가 삭제될 수 있습니다. 진행하기 전에 파일과 데이터베이스를 백업하십시오. + +## 문서 및 지원 + +- [그누보드5 공식 페이지](https://sir.kr/main/g5/) +- [그누보드5 공식 매뉴얼](https://sir.kr/manuals/g5/1) +- [그누보드5 Q&A](https://sir.kr/questions?s_tag=%EA%B7%B8%EB%88%84%EB%B3%B4%EB%93%9C5) + +보안 취약점 신고 방법은 [`SECURITY.md`](SECURITY.md)를 확인하십시오. + +## 라이선스 + +라이선스 전문과 적용 조건은 [`LICENSE.txt`](LICENSE.txt)를 확인하십시오. diff --git a/SECURITY.md b/SECURITY.md index b720b9b3d..1fc08be26 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -1,3 +1,5 @@ -# Gnuboard5 Security Policy +# 그누보드5 보안 정책 -Please ask [https://sir.kr/security/.](https://sir.kr/co_qa) +그누보드5에서 보안 취약점을 발견한 경우 악용 가능한 상세 내용을 공개 GitHub 이슈에 게시하지 마십시오. + +취약점 정보와 재현 방법은 [SIR 보안 취약점 신고 게시판](https://sir.kr/boards/co_qa)을 통해 제보해 주십시오.