/* Route-Critical (index, V6 §3.6.3 — erzeugt von tools/generate_critical_css.mjs) */ .collapse:not(.show){display:none}.navbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between}.navbar>.container-fluid{display:flex;flex-wrap:inherit;align-items:center;justify-content:space-between}.mydraft-svg-icon{display:inline-block;vertical-align:middle;color:currentcolor;flex-shrink:0;transition:color var(--duration-fast, 150ms) ease,stroke var(--duration-fast, 150ms) ease,fill var(--duration-fast, 150ms) ease}.mydraft-svg-icon circle,.mydraft-svg-icon line,.mydraft-svg-icon path,.mydraft-svg-icon polygon,.mydraft-svg-icon polyline,.mydraft-svg-icon rect{transition:stroke var(--duration-fast, 150ms) ease,fill var(--duration-fast, 150ms) ease}@layer components{.live-pulse-dot{width:8px;height:8px}}.min-w-0{min-width:0}@layer overrides{.live-radar-header-badge{background:rgba(239,68,68,.12);border:1px solid rgba(239,68,68,.35);color:#fca5a5;font-size:.75rem;font-weight:700;transition:.25s;cursor:pointer}}@layer overrides{.live-pulse-dot{width:8px;height:8px;background-color:var(--threat-critical,#ef4444);border-radius:50%;display:inline-block;box-shadow:rgba(239,68,68,.7) 0 0 0 0}}@layer overrides{body.light .live-radar-header-badge,html[data-bs-theme=light] .live-radar-header-badge{background:#fbd9dd;border-color:#eeb2b8;color:#8a1723!important}}.isharestuff-live-ticker{color:var(--color-text-body,#f8fafc);backdrop-filter:none;flex-wrap:wrap;row-gap:.3rem;background:var(--color-surface,rgba(15,23,42,.85))!important;border:1px solid var(--color-border,rgba(255,255,255,.12))!important;padding:.45rem .5rem!important;margin-bottom:.75rem!important}.ticker-content{mask-image:linear-gradient(to right,transparent 0px,rgb(0,0,0) 14px,rgb(0,0,0) calc(100% - 14px),transparent 100%);touch-action:pan-y;cursor:grab;user-select:none;-webkit-tap-highlight-color:transparent;order:1;width:100%;max-width:100%;flex:0 0 100%!important}.isharestuff-live-ticker .ticker-lead-group{order:2;width:100%;justify-content:space-between;margin-right:0!important}.ticker-track{display:flex;align-items:center;white-space:nowrap;will-change:transform;transform:translate3d(0,0,0);--ticker-speed:1;animation-name:isharestuffTicker;animation-timing-function:linear;animation-iteration-count:infinite;animation-duration:calc(26s / var(--ticker-speed, 1))}.ticker-link{max-width:min(78vw,340px);font-size:.82rem;display:inline-block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:baseline;transition:color .2s;color:var(--color-text-heading,#f8fafc)!important}.isharestuff-live-ticker .ticker-ctrl-btn{min-width:44px;height:44px;font-size:.78rem;-webkit-tap-highlight-color:transparent}.ticker-controls-bar{gap:.4rem}.ticker-counter{font-family:var(--bs-font-monospace, ui-monospace, monospace);font-size:.72rem;line-height:1;color:var(--color-text-secondary,#94a3b8);min-width:3.4em;text-align:center;user-select:none;white-space:nowrap;margin-left:auto}.ticker-item{font-size:.82rem}.ticker-item .ticker-date{font-size:.72rem;vertical-align:baseline}.ticker-text-group{display:inline-flex;align-items:baseline}.ticker-badge-live-btn{border:0;cursor:pointer;text-decoration:none!important}.ticker-badge{font-size:.78rem!important;min-height:44px!important;min-width:44px!important;padding:6px 12px!important;display:inline-flex!important;align-items:center!important;justify-content:center!important}@media (min-width:992px){.navbar-expand-lg{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-toggler{display:none}}@media (prefers-reduced-motion:reduce){@layer overrides{#news-popup,#news-toast-banner,.animate-pulse,.live-pulse-dot,.live-pulsing-dot,.news-item-card{animation:none;transition:none}}.ticker-track{animation:none!important}.ticker-content{cursor:default}}@media (min-width:768px){.isharestuff-live-ticker{flex-wrap:nowrap;row-gap:0;backdrop-filter:blur(12px);padding:.5rem!important;margin-bottom:1rem!important}.isharestuff-live-ticker .ticker-content{order:0;width:auto;max-width:none;flex:1 1 auto!important}.isharestuff-live-ticker .ticker-lead-group{order:0;width:auto;justify-content:flex-start;margin-right:1rem!important}.ticker-controls-bar{gap:.3rem}.isharestuff-live-ticker .ticker-ctrl-btn{min-width:30px;height:auto;font-size:inherit}.ticker-counter{font-size:.66rem;margin-left:0}.ticker-track{animation-duration:calc(40s / var(--ticker-speed, 1))}.ticker-link{max-width:340px;font-size:.85rem}.ticker-item{font-size:.85rem}.ticker-badge{font-size:inherit!important;min-height:0!important;min-width:0!important;padding:.5rem 1rem!important}}@media (max-width:359.98px){.ticker-counter{display:none}.ticker-controls-bar{gap:.3rem}.ticker-badge{padding:6px 9px!important}} 🔒 API 키 Git 히스토리에서 완전 제거: BFG + force push 가이드 | Sichere Programmierung – TSECURITY.DE Zum Hauptinhalt springen
Windows Tipps & SecurityRadiooooo: So entdecken Sie Musik aus aller Welt und jeder Zeit(19.10.2026 um 08:00 Uhr)
•
Windows Tipps & SecurityWindows 11: Update KB5127648 stört Smart App Control - BornCity(19.10.2026 um 08:03 Uhr)
•
Unix & Linux Server7 Tips to Make GitHub CLI (gh) Faster for Linux Automation(19.10.2026 um 07:47 Uhr)
•
Sichere ProgrammierungZyklus-Apps im Check: 4 von 17 wollen den Standort tracken(19.10.2026 um 07:00 Uhr)
•
Sichere ProgrammierungThe One Growth Lever Still Sitting Unused After Two Months(19.10.2026 um 08:18 Uhr)
•••
Sichere ProgrammierungKeep three percentage denominators visible in a signal cross-tab(19.10.2026 um 08:19 Uhr)
•
Sichere ProgrammierungAWS RDS MySQL kill transaction by ID (without thread_id)(19.10.2026 um 08:19 Uhr)
••
Windows Tipps & SecurityRadiooooo: So entdecken Sie Musik aus aller Welt und jeder Zeit(19.10.2026 um 08:00 Uhr)
•
Windows Tipps & SecurityWindows 11: Update KB5127648 stört Smart App Control - BornCity(19.10.2026 um 08:03 Uhr)
•
Unix & Linux Server7 Tips to Make GitHub CLI (gh) Faster for Linux Automation(19.10.2026 um 07:47 Uhr)
•
Sichere ProgrammierungZyklus-Apps im Check: 4 von 17 wollen den Standort tracken(19.10.2026 um 07:00 Uhr)
•
Sichere ProgrammierungThe One Growth Lever Still Sitting Unused After Two Months(19.10.2026 um 08:18 Uhr)
•••
Sichere ProgrammierungKeep three percentage denominators visible in a signal cross-tab(19.10.2026 um 08:19 Uhr)
•
Sichere ProgrammierungAWS RDS MySQL kill transaction by ID (without thread_id)(19.10.2026 um 08:19 Uhr)
••
Intelligence View
⚡ tsecurity.de Intelligence

API 키 Git 히스토리에서 완전 제거: BFG + force push 가이드

API 키 Git 히스토리에서 완전 제거: BFG + force push 가이드 Published on: 2026-06-06 Reading time: 5 min Tags: #security #git #devops #secrets 상황 API 키가 .env 파일로 Git 히스토리에 커밋되…

Beitrag
0
Seite
0
↗ Quelle (dev.to)
Social ReaktionenReagiere als Erste:r — dein Feedback zählt!




API 키 Git 히스토리에서 완전 제거: BFG + force push 가이드



Published on: 2026-06-06


Reading time: 5 min


Tags: #security #git #devops #secrets





상황



API 키가 .env 파일로 Git 히스토리에 커밋되었습니다.




git log --all --full-history --name-only | grep ".env"
# f300032 Remove .env from version control (security: API keys exposed)
# c9de179 Initial commit: Contest Agent - AI-powered contest automation






즉각적인 위험:




  • 누구든 git clone → git log → 과거 커밋에서 API 키 확인 가능

  • GitHub에 push된 경우 archive/search에서도 접근 가능






해결책: BFG Repo-Cleaner



git filter-branch보다 빠르고 안전합니다.






1. BFG 설치






brew install bfg









2. 히스토리에서 .env 삭제






cd your-project
bfg --delete-files ".env" --no-blob-protection .






출력:




Deleted files

Deleted 4 commits
Deleted 12 blob(s)

Cleanup:

WARNING: The 'pack' folder will be deleted...









3. Git 정리






git reflog expire --expire=now --all
git gc --prune=now --aggressive









4. Verify






git log --all --full-history --name-only | grep ".env"
# (출력 없음 = 성공)









5. Force Push






git push origin main --force-with-lease









단계별 확인



Before:




$ git log --oneline | head -5
abc1234 Remove .env from version control
def5678 Enable SSL certificate verification
ghi9012 Standardize dependencies






After:




$ git log --oneline | head -5
xyz3456 Remove duplicate service definition
uvw7890 Standardize dependencies
rst1234 Enable SSL certificate verification






→ 불필요한 커밋들이 정리되고, 히스토리 크기도 감소






git filter-branch vs BFG

































기준 git filter-branch BFG
속도 느림 (1000+ 커밋) 매우 빠름
안정성 복잡함 간단함
명확성 오류 가능성 높음 명확한 피드백
추천 ❌ ✅





API 키 로테이션 (필수!)



히스토리 정리 후에도 API 키 반드시 교체:




# 1. Anthropic
# https://console.anthropic.com/account/keys
# → 기존 키 삭제 → 새 키 생성

# 2. Supabase
# https://app.supabase.com → Settings → API
# → "Reset secret key" 클릭

# 3. Telegram
# @BotFather → /token → 봇 선택 → /revoke









모범 사례






1. .env 초기화






# .gitignore에 추가 (처음부터)
echo ".env" >> .gitignore
git add .gitignore
git commit -m "Add .env to .gitignore"









2. .env.example 제공






# .env.example
ANTHROPIC_API_KEY=your-key-here
SUPABASE_URL=your-url-here
TELEGRAM_BOT_TOKEN=your-token-here









3. CI/CD에서 시크릿 관리






# GitHub Actions
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
SUPABASE_KEY: ${{ secrets.SUPABASE_KEY }}









실제 적용 결과






Before:
- Git history에 키 노출
- 총 79개 커밋
- 히스토리 크기: 50MB

After BFG:
- .env 완전 제거
- 총 75개 커밋 (4개 정리)
- 히스토리 크기: 42MB (-16%)









실행 체크리스트



1. 즉시 (사고 대응)




  • [ ] BFG로 히스토리 정리: bfg --delete-files ".env" .

  • [ ] 로컬 정리: git reflog expire --expire=now --all && git gc --aggressive

  • [ ] 강제 푸시: git push origin main --force-with-lease



2. 1시간 내 (키 교체)




  • [ ] Anthropic API 키 로테이션

  • [ ] Supabase Secret Key 리셋

  • [ ] Telegram Bot 토큰 revoke + 재발급

  • [ ] 배포 서버 환경변수 업데이트



3. 당일 (예방)




  • [ ] .env.example 생성 (템플릿)

  • [ ] .gitignore에 .env 명시

  • [ ] 팀원/스카우터에 알림



4. 향후 (재발 방지)




  • [ ] GitHub Actions secrets 사용

  • [ ] pre-commit hook으로 .env 자동 차단

  • [ ] 월간 보안 감시






결론



API 키 노출은 보안 사고입니다. BFG로 빠르게 정리하고, 즉시 키를 교체하세요.



앞으로: .env는 첫 커밋부터 .gitignore에 넣기. 가장 간단한 방지책입니다.

Intelligence Digest — free The top security news daily · unsubscribe anytime
Community Rating & Social Proof
⭐ Leser-Wertung
–
Ø / 5.0
No reader ratings yet
Was this page helpful?
0
Jetzt Bewertung abgeben
🟢 Niedrig (1-3.9) 🟡 Mittel (4.0-6.9) 🔴 Hoch (7.0-8.9) Kritisch (9.0-10.0)

Related story clusters & sources (vector AI)

2 sources
Windows 11: Update KB5127648 stört Smart App Control - BornCity
1 more source
Similar posts
🔍 Verwandte News

Auch interessante Nachrichten API 키 Git 히스토리에서 완전 제거: BFG + force push 가이드

Thematisch verwandte Begriffe: 히스토리에서, force, push · 6 Treffer

Laden...

Loading videos ...

Laden...

Loading posts ...

Laden...

Loading videos ...

Laden...

Loading posts ...

Laden...

Loading videos ...

Laden...

Loading posts ...

Laden...

Loading videos ...

💬 Loading comments…
Pull to refresh
Nächster Beitrag