Güvenlik
Güvenlik Kontrol Özelliği
Repomix, dosyalarınızdaki hassas bilgileri tespit etmek için Secretlint kullanır:
- API anahtarları
- Erişim token'ları
- Kimlik bilgileri
- Özel anahtarlar
- Ortam değişkenleri
Yapılandırma
Güvenlik kontrolleri varsayılan olarak etkindir.
CLI üzerinden devre dışı bırakmak için:
repomix --no-security-checkYa da repomix.config.json dosyasında:
{
"security": {
"enableSecurityCheck": false
}
}Güvenlik Önlemleri
- İkili Dosya İşleme: İkili dosyaların içerikleri çıktıdan hariç tutulur, ancak tam depo görünümü için yolları dizin yapısında listelenir
- Git Farkındalığı:
.gitignorekalıplarına uyar - Otomatik Tespit: Yaygın güvenlik sorunlarını tarar:
- AWS kimlik bilgileri
- Veritabanı bağlantı dizeleri
- Kimlik doğrulama token'ları
- Özel anahtarlar
Uzak Depo Yapılandırma Güveni
Bir uzak depoyu --remote ile paketlediğinizde, Repomix o deponun yapılandırmasını güvenilmeyen kod olarak ele alır.
Bir yapılandırma dosyası neden koddur
Bir repomix.config.* yalnızca veri değildir:
repomix.config.ts/.js/.mjsyüklendiğinde çalıştırılır.input.processors, eşleşen dosyalar üzerinde harici komutlar çalıştırır.output.instructionFilePathve../kullanan include kalıpları, depo dışındaki dosyaları okur.
Gözden geçirilmemiş bir yapılandırmayı tanımadığınız bir depodan yüklemek, bu nedenle onun Makefile'ını çalıştırmaya veya lifecycle script'leri olan bir pakette npm install çalıştırmaya benzer.
Varsayılan: uzak yapılandırmalar asla yüklenmez
Repomix, siz açıkça istemediğiniz sürece klonlanmış bir deponun yapılandırmasını yok sayar. Global yapılandırmanız ve CLI seçenekleriniz yine de uygulanır. Aşağıdaki bayrağı hiç geçmezseniz, bu bölümdeki hiçbir şey sizi etkileyemez.
Etkinleştirme
# CLI bayrağı kullanarak
repomix --remote user/repo --remote-trust-config
# Ortam değişkeni kullanarak
REPOMIX_REMOTE_TRUST_CONFIG=true repomix --remote user/repoBu, uzak yapılandırmaya kendi yazdığınız bir yapılandırmayla aynı güveni tanır. Bunu yalnızca güvendiğiniz ve incelediğiniz depolar için kullanın.
Onay istemi
Etkileşimli bir terminalde, Repomix çalıştırılmak üzere olan yapılandırmayı gösterir ve yüklemeden önce onaylamanızı ister:
| Seçim | Etki |
|---|---|
| Evet, yalnızca bu sefer | Yalnızca bu çalıştırmaya güvenilir. |
| Evet, bu depo için tekrar sorma | Kararı hatırla (aşağıya bakın). |
| Hayır (varsayılan seçim) | Yapılandırmayı yüklemeden iptal et. |
Size gösterilen yapılandırma deponun yazarı tarafından yazıldığından, Repomix görüntünün değiştirilemeyeceğinden emin olur:
- Kontrol ve ANSI dizileri kaçışlanır, böylece bir yapılandırma terminali yeniden boyayamaz veya uyarıyı görünümden kaydıramaz.
- Çift yönlü (bidirectional) ve görünmez karakterler kaçışlanır, böylece okuduğunuz metin çalıştırılan metinle aynı olur (Trojan Source).
- Çıktı hem satır sayısı hem de bayt boyutuyla sınırlandırılır, böylece doldurulmuş (padded) bir yapılandırma uyarıyı ekran dışına itemez.
- Her yapılandırma satırının başına önek eklenir, böylece bir yapılandırma Repomix'in kendi ayraçlarını veya mesajlarını taklit edemez.
- Sembolik bağlantılar (symlink) reddedilir. Git sembolik bağlantıları korur, bu yüzden bir depo, klonun dışına işaret eden bir
repomix.config.jsongönderebilir. Repomix, yapılandırmanın klonlanan ağaç içinde normal bir dosya olmasını zorunlu kılar — aksi halde incelediğiniz baytlar çalıştırılan baytlarla aynı olmaz.
Bir kararı hatırlama
"Tekrar sorma" seçeneğini seçmek, geçici dizininizin altında ($TMPDIR/repomix/trusted-remotes/) yalnızca kullanıcı hesabınız tarafından okunup yazılabilen bir işaretleyici saklar.
İşaretleyici içeriğe sabitlenmiştir: onayladığınız yapılandırmanın bir hash'ini kaydeder. O depo daha sonra farklı bir yapılandırma gönderirse, hash artık eşleşmez ve size tekrar sorulur — direnv allow ile aynı model.
Sabitlemenin kapsamı
Hash yalnızca giriş yapılandırma dosyasını kapsar. Bir .ts / .js yapılandırması başka dosyaları import edebilir ve input.processors harici script'leri çalıştırabilir; ikisi de hash'lenmez. Zaten güvendiğiniz bir depo, giriş dosyası aynı kalırken bunları değiştirebilir. Bu yüzden çalıştırılabilir yapılandırmalar istemde bu şekilde etiketlenir — "tekrar sorma"yı yalnızca okuduğunuz dosyaya değil, depoya duyulan güven olarak ele alın.
İşaretleyiciler geçici dizinde yaşar, bu yüzden işletim sisteminiz onu temizlediğinde kararlar sona erer. Bu kasıtlıdır: "tekrar sor"a doğru sona ermek güvenli yöndür.
İstemin atlandığı durumlar
| Durum | Davranış |
|---|---|
--force geçildiğinde | Sorulmadan güvenilir. Bayrak, sonuçları kabul ettiğiniz anlamına gelir; stderr'e bir bildirim yazdırılır. |
| Etkileşimli olmayan kabuk (CI, pipe'lar) | Sorulmadan güvenilir, mevcut otomasyonu korur. stderr'e bir bildirim yazdırılır. |
| Depo zaten güvenilir | Yapılandırma değişmediği sürece sorulmadan yüklenir. |
Mutlak bir --config kullanıldığında | Klonlanan deponun kendi yapılandırması hiç yüklenmez, bu yüzden onaylanacak bir şey yoktur. |
| Klonda yapılandırma dosyası yoksa | Güvenilecek bir şey yoktur. |
--stdout altında veya stdout yeniden yönlendirildiğinde, istem gösterilemez. Repomix, yapılandırmayı sessizce güvenmek yerine yönlendirmeyle birlikte bir hata bildirir.
Öneriler
- Deponun kendi yapılandırmasına ihtiyacınız olmadıkça
--remote-trust-configbayrağını kapalı bırakın. - Yanıtlamadan önce istemdeki yapılandırmayı okuyun, özellikle
input.processorsve../yollarını. - Kontrol etmediğiniz depolar için "Evet, yalnızca bu sefer"i tercih edin.
- CI'da, istemin sizi koruyamayacağını unutmayın — paketlediğiniz revizyonu sabitleyin ve önceden inceleyin.
Güvenlik Kontrolü Sorun Bulduğunda
Örnek çıktı:
🔍 Security Check:
──────────────────
2 suspicious file(s) detected and excluded:
1. config/credentials.json
- Found AWS access key
2. .env.local
- Found database passwordEn İyi Uygulamalar
- Paylaşmadan önce çıktıyı her zaman gözden geçirin
- Hassas yollar için
.repomixignorekullanın - Güvenlik kontrollerini etkin tutun
- Hassas dosyaları depodan kaldırın
Güvenlik Açıklarını Bildirme
Bir güvenlik açığı mı buldunuz? Lütfen:
- Herkese açık bir sorun (issue) açmayın
- E-posta gönderin: koukun0120@gmail.com
- Ya da GitHub Güvenlik Danışmaları'nı kullanın
İlgili Kaynaklar
- GitHub Depo İşleme - Kendi klonlamadığınız depoları paketleyin
- Yapılandırma -
security.enableSecurityCheckile güvenlik kontrollerini yapılandırın - Komut Satırı Seçenekleri -
--no-security-checkbayrağını kullanın - Gizlilik Politikası - Repomix'in veri işleme hakkında bilgi edinin