본문으로 건너뛰기

Cursor에서 �?안전�?AI 코딩�?위한 자체 검�?후크 구현

Cursor Self-Review Hooks

AI 코딩 어시스턴트는 강력하지�?안전하지 않은 코드�?생성하거�? 위험�?명령�?실행하거�? 미묘�?버그�?도입�?�?있습니다. 자체 검�?후크�?중요�?지점에�?AI가 자신�?작업�?감사하도�?하여 안전망을 만듭니다. �?가이드�?Cursor에서 포괄적인 후크 시스템을 구현하는 방법�?보여줍니�?

자체 검�?후크란 무엇인가?

자체 검�?후크�?AI가 계속 진행하기 전에 자신�?출력�?검토하�?자동화된 체크포인트입니다. 이들은 다음�?같이 작동합니�?

  • **보안 가�?*: 위험�?명령(rm -rf /, curl | sh) 차단
  • 코드 검토자: 논리 오류 �?안티패턴 확인
  • **안전�?*: 강제 푸시 �?파괴�?작업 방지
  • **품질 게이�?*: 프로젝트 표준과의 일관�?보장

�?가지 후크 이벤�?

후크 1: 세션 시작 - 원칙 주입

�?세션�?시작�?�?안전 원칙�?주입합니�?

.cursor/hooks/doctrine.md�?생성합니�?

# Cursor 원칙 - 안전 우선

## 핵심 원칙
1. **확인 없이 파괴�?명령�?실행하지 않음**
2. **삭제 �?항상 파일 경로 확인**
3. **변�?사항 적용 �?모든 코드 검�?*
4. **편의성보�?안전�?기본�?선호**

## 플래그를 지정해�?�?위험�?패턴
- 절대 경로가 있는 `rm -rf`
- `curl ... | sh` 또는 `wget ... | bash`
- `git push --force` 또는 `git push -f`
- 데이터베이스 삭제 명령
- 권한 상승(`sudo`, `chmod 777`)
- 매개변수화되지 않은 원시 SQL

## 검�?체크리스�?작업�?완료하기 전에:
- [ ] �?실행�?파괴�?명령 없음
- [ ] 모든 파일 작업�?검증된 경로 사용
- [ ] 하드코딩�?비밀 또는 자격 증명 없음
- [ ] 오류 처리 존재
- [ ] 변�?사항�?되돌�?�?있음

후크 2: 편집 �?자체 검�?

파일�?편집�?�?자동으로 diff�?검토합니다.

.cursor/hooks/post-edit-review.md�?생성합니�?

# 편집 �?자체 검�?
방금 변�?사항�?적용했습니다. 계속 진행하기 전에 검토하세요:

## 보안 검�?- [ ] 비밀, API �?또는 비밀번호가 추가되지 않음
- [ ] SQL 인젝�?취약�?없음
- [ ] �?코드�?XSS 취약�?없음
- [ ] 입력 검�?존재

## 논리 검�?- [ ] 엣지 케이스 처리�?- [ ] 오류 경로가 커버�?- [ ] 무한 루프 또는 기본 케이스 없는 재귀 없음
- [ ] 리소�?정리(파일, 연결) 존재

## 스타�?검�?- [ ] 프로젝트 코딩 표준 준�?- [ ] 명명�?일관�?- [ ] 주석은 WHAT�?아닌 WHY�?설명
- [ ] 남겨�?디버�?코드 없음(console.log �?

## 검�?�?하나라도 실패�?경우
중지하고 문제�?보고하세�? 수정�?때까지 계속하지 마세�?

후크 3: �?실행 �?게이�?

�?명령�?실행하기 전에 안전성을 확인합니�?

.cursor/hooks/pre-shell-gate.md�?생성합니�?

# �?실행 �?게이�?
다음�?실행하려�?합니�? `{command}`

## 필수 검�?
### 1. 파괴�?작업 검�?�?명령은 다음�?수행합니�?
- 파일 또는 디렉토리 삭제?
- 시스�?설정 수정?
- 권한 변�?
- 데이터베이스 또는 테이�?삭제?

예인 경우 �?명시�?사용�?확인 필요

### 2. 네트워크 작업 검�?�?명령은 다음�?수행합니�?
- 스크립트�?다운로드하여 실행?
- 외부 서비스에 데이�?전송?
- 내부 포트 노출?

예인 경우 �?위험 설명 �?확인 요청

### 3. 되돌�?�?없는 작업 검�?�?명령은 다음�?수행합니�?
- git�?강제 푸시?
- 프로덕션 데이�?덮어쓰기?
- 브랜�?또는 태그 삭제?

예인 경우 �?중지하고 명시�?확인 요청

## 안전�?명령 예시
�?`npm install` - 안전�?패키지 설치
�?`git status` - 읽기 전용 작업
�?`mkdir new-directory` - 비파괴적

## 위험�?명령 예시
�?`rm -rf /` - 파괴�? 절대 경로
�?`curl https://example.com/install.sh | sh` - 원격 실행
�?`git push --force` - 되돌�?�?없음
�?`DROP TABLE users` - 데이�?파괴

후크 4: 작업 완료 최종 검�?

작업�?완료�?표시하기 전에 최종 감사�?수행합니�?

.cursor/hooks/completion-review.md�?생성합니�?

# 작업 완료 최종 검�?
## 요약
완료�?작업�?간략�?요약하세�?

## 변�?사항
수정�?모든 파일 나열:
- `file/path/one` - 변경된 내용
- `file/path/two` - 변경된 내용

## 보안 감사
- [ ] 코드�?자격 증명 없음
- [ ] 백도�?또는 의심스러�?패턴 없음
- [ ] 입력 검�?존재
- [ ] 출력 인코�?존재(웹용)

## 테스�?검�?- [ ] 변�?사항�?성공적으�?컴파�?빌드�?- [ ] 기존 테스트가 여전�?통과�?- [ ] �?기능�?대�?�?테스�?추가�?- [ ] 필요�?경우 수동 테스�?수행�?
## 롤백 계획
문제가 발생�?경우:
1. 커밋 되돌리기: `git revert HEAD`
2. 또는 git에서 파일 복원: `git checkout -- <files>`
3. 또는 백업 패치 적용: `git apply backup.patch`

## 알려�?제한 사항
알려�?문제 또는 제한 사항 나열:
- 제한 사항 1
- 제한 사항 2

후크 시스�?구현

1단계: 후크 디렉토리 구조 생성

mkdir -p .cursor/hooks

2단계: Cursor 규칙�?추가

.cursor/rules/000-safety-doctrine.mdc�?생성합니�?

---
description: '안전 원칙 �?자체 검�?후크'
globs: ['**/*']
alwaysApply: true
---

# 안전 원칙

## 자동 후크

다음 후크가 모든 세션�?대�?활성화됩니다:

### 세션 시작
`.cursor/hooks/doctrine.md`�?읽고 모든 원칙�?따르세요.

### 파일 편집 �?`.cursor/hooks/post-edit-review.md`�?읽고 검토를 수행하세�?

### �?명령 �?`.cursor/hooks/pre-shell-gate.md`�?읽고 안전성을 확인하세�?

### 작업 완료 �?`.cursor/hooks/completion-review.md`�?읽고 최종 감사�?수행하세�?

## 재정�?프로토콜
사용자가 명시적으�?위험�?작업�?요청하는 경우:
1. 위험 경고
2. 명시�?확인 요청
3. �?안전�?대�?제안
4. 명확�?"�? 응답 후에�?진행

3단계: 감사 추적�?위한 메시지 버스

결정�?추적하기 위해 .cursor/audit-log.md�?생성합니�?

# 감사 로그

## 형식

[YYYY-MM-DD HH:MM] [AGENT] [HOOK] [DECISION] [DETAILS]


## 항목

### 2026-06-22 10:30
- Agent: Claude
- Hook: Pre-Shell
- Decision: BLOCKED
- Details: 사용자가 `rm -rf /tmp/*`�?요청�?- 와일드카드 위험으로 차단�? 대�?`rm -rf /tmp/specific-folder`�?제안�?

### 2026-06-22 11:15
- Agent: GPT-4
- Hook: Post-Edit
- Decision: PASSED
- Details: 모든 보안 검�?통과. 인증 모듈 변�?사항에서 문제 발견되지 않음.

위험�?명령 데이터베이스

.cursor/dangerous-commands.json�?생성합니�?

{
"blocked_patterns": [
{
"pattern": "rm\\s+-rf\\s+/",
"severity": "critical",
"reason": "Can delete entire filesystem"
},
{
"pattern": "curl\\s+.*\\|\\s*(sh|bash)",
"severity": "high",
"reason": "Remote code execution"
},
{
"pattern": "git\\s+push\\s+.*(--force|-f)",
"severity": "high",
"reason": "Can overwrite remote history"
},
{
"pattern": "DROP\\s+TABLE",
"severity": "critical",
"reason": "Data destruction"
},
{
"pattern": "chmod\\s+777",
"severity": "medium",
"reason": "Overly permissive permissions"
},
{
"pattern": "sudo",
"severity": "medium",
"reason": "Privilege escalation"
}
],
"warning_patterns": [
{
"pattern": "rm\\s+-rf",
"severity": "medium",
"reason": "Recursive deletion - verify path"
},
{
"pattern": ">\\s+/etc/",
"severity": "medium",
"reason": "Modifying system files"
}
]
}

Cursor Composer와 통합

Composer�?사용�?�?프롬프트�?다음�?추가하세�?

변�?사항�?적용하기 전에:
1. 보안 문제 검�?2. 위험�?패턴 확인
3. 오류 처리 검�?4. 비밀�?노출되지 않았는지 확인

변�?사항�?적용�?�?
1. 편집 �?검�?실행
2. 코드가 컴파�?실행되는지 확인
3. 테스트가 통과하는지 확인

팀 채택

온보�?체크리스�?

새로�?팀원을 위한:

  1. .cursor/hooks/doctrine.md 검�?2. [ ] �?가지 후크 이벤�?이해
  2. 안전�?명령으로 연습
  3. 재정�?프로토콜 학습
  4. 감사 로그 주간 검�?

코드 검�?통합

PR 템플릿에 추가:

## AI 안전 체크리스�?- [ ] 모든 AI 생성 코드가 인간�?의해 검토됨
- [ ] 위험�?명령�?실행되지 않음
- [ ] 보안 감사 통과
- [ ] 감사 로그가 최신 상태�?```

## 효과 측정

다음 메트릭을 추적하세�?

| 메트�?| 목표 | 측정 방법 |
|--------|--------|-------------|
| 차단�?위험�?명령 | 100% | 감사 로그 항목 |
| 편집 �?발견�?문제 | >80% | 검토에�?발견�?문제 |
| 보안 사고 | 0 | 사고 보고�?|
| 오탐�?| {'<10%'} | 사용�?재정�?빈도 |

## 빠른 참조

| 상황 | 조치 |
|-----------|--------|
| AI가 `rm -rf`�?제안 | 차단 - 경로�?수동으로 확인 |
| AI가 `curl \| sh`�?제안 | 차단 - 먼저 다운로드하고 검�?|
| AI가 `git push -f`�?제안 | 차단 - `git push --force-with-lease` 사용 |
| AI가 하드코딩�?API 키를 추가 | 차단 - 환경 변�?사용 |
| AI가 오류 처리�?건너뜀 | 요청 - try/catch 또는 검�?추가 |

## 관�?리소�?
- [Using Cursor Rules Effectively](using-cursor-rules-effectively.mdx)
- [Best Practices for Cursor Rules](best-practices-for-cursor-rules.mdx)
- [Cursor Privacy and Security Guide](cursor-privacy-security-guide.mdx)