Giriş

Bölüm 10

Gizli veriler, oturumlar ve güven: her değer betiğe ait değildir

Her yararlı değer zararsız metin gibi ele alındığında otomasyon tehlikeli hale gelir. Parolalar, özel anahtarlar, çerezler ve kimlik doğrulama durumu; yol, görsel boyutu veya tablo adıyla aynı yaşam döngüsüne sahip olmamalıdır.

Otomatikleştirmeden önce değerin sınıfını belirleyin

Yol, arşiv adı veya görsel genişliği sıradan yapılandırmadır. Parola, özel anahtar, oturum belirteci veya veritabanı kimlik bilgisi erişim sağlayabilir. İki tür değeri aynı yeniden kullanılabilir betiğe koyarsanız betiğin kendisi gizli veri olur.

Bir değeri kaydetmeden önce iki soru sorun: Bu değer bir şeyi yetki verebilir edebilir mi? Bu dosyayı başka projeye kopyalamaktan veya inceleme için paylaşmaktan rahat olur muyum? Cevap hayırsa gizli veri tarife ait değildir.

Ortamı incelemek yararlıdır; ortam bir kasa değildir

env hassas görünen isimlerdeki değerleri bilerek maskeler. Bu bir görüntüleme güvenliği özelliğidir; her ortam değişkeninin güvenli olduğunun veya beklenmedik bir isim altında gizli veri bulunmadığının kanıtı değildir.

Yalnızca ihtiyacınız olan ad alanı veya değeri inceleyin. Tüm ortam dökümlerinin ekran görüntüsü veya dışa aktarımını yaymayın; maskelenmiş terminal görünümünü gerçek sunucu yapılandırmasını yayımlama izni saymayın.

env
env server
env request

Oturum ve çerezler uygulama durumudur, karalama metni değildir

ses hiyerarşik PHP oturum verisini, coo ise görünür çerezleri ayrı bir alanda gösterir. Korumalı kimlik doğrulama ve oturum çerezi durumu normal dışa aktarma ve üzerine yazma işlemlerine kapalıdır.

Bu sınır önemlidir çünkü oturum verisi kimlik, yetkilendirme ve geçici uygulama durumu taşıyabilir. Dar kapsamda inceleyin, yalnızca size ait ad alanı’leri değiştirin ve oturum saklama alanını uzun ömürlü gizli veri saklamak için kolay bir gizlenme yeri olarak kullanmayın.

ses -l
coo
coo -a

Karma aynı baytları kanıtlayabilir; orijinali saklayamaz

hash özet ve HMAC hesaplar. Özet, “bu baytlar değişti mi?” sorusu ve arşiv/sürüm çıktı kimliği için çok uygundur.

Karma özeti şifreleme değildir. Orijinal değer küçük ve tahmin edilebilir bir kümeden geliyorsa hash onu gizli yapmaz. Özgünlük gizli bir anahtara bağlıysa HMAC, içeriğin kendisi okunamaz kalmalıysa şifreleme kullanın.

hash -s "hello terminal"
hash

Şifreleme içeriği yalnızca anahtar da korunuyorsa korur

enc doğrulamalı şifreleme yöntemleri, gizli parola istemleri ve belirli anahtar modları kullanır. Önce enc ile sunucunun desteklediklerini görün; varsayılan parola istemi parolayı görünür komut geçmişi dışında tutar.

Şifreli dosyanın yanında açık anahtar varsa koruma zayıflar. Mümkünse anahtarı ve şifreli veriyi farklı güven sınırlarında tutun, kurtarmanın nasıl çalışacağını önceden anlayın ve açık metin kaynağını silmeden önce şifre çözmeyi test edin.

enc

Dosya sistemi izinleri erişimi azaltır; kriptografinin yerini tutmaz

0600 gibi bir erişim modu, normal okuma/yazmanın yalnızca mevcut dosya sahibi için olması gerektiğini söyler. Barındırma UNIX erişim modlarını uyguluyorsa yerel anahtar dosyaları ve özel dışa aktarımlar için yararlıdır.

İzinler barındırma hesabının sahibi, yedek veya ele geçirilmiş bir PHP sürecine karşı koruma sağlamaz. mod sonrası gerçekten ne değiştiğini stat ile doğrulayın; izinleri doğru saklama ve şifreleme modeliyle birlikte kullanın.

cd lil-playground
md trust
echo "example private note" > trust/note.txt -r
mod trust/note.txt -0600
stat trust/note.txt
hash trust/note.txt

Temizlik, uninstall ve yok etmeyi birbirinden ayırın

clear yalnızca görünür geçmişi temizler. uninstall <module> bir eklenti modülünü kaldırır. kill -include isteğe bağlı arayüz katmanını, kill -install eklenti katmanını kaldırır; yalın kill terminalin tamamen kaldırıldığı sınırdır.

Bu eylemler kas hafızasında birbirine karışmamalıdır. Destructive işlem öncesi hangi katmanı kaldıracağınızı ve hangi dosyaların kalacağını adlandırın. Güvenli terminal kullanıcısı Enter’a basmadan rollback’i açıklayabilir.

Görsel temizlikclearYalnızca görünür geçmiş; dosya ve modüller kalır
Modül kaldırmauninstall <module>Bir eklenti modülü; bağımlılık kuralları geçerli
Arayüzü sıfırlakill -includePersistent/oturum CSS ve JavaScript katman
Eklentileri sıfırlakill -installInstalled eklenti katman; Core kalır
Tam kaldırmakilllil-terminal kurulumunun kendisi

Bunu betik olarak saklayın

Bunu trust-checkpoint.lil olarak kaydedin. Yalnızca örnek veri oluşturur, kısıtlayıcı dosya erişim modu uygular, üstveri kaydeder ve özet saklar. Bilerek otomatikleştirmediği şeye dikkat edin: parola girişi ve şifre çözme anahtarları betiğin dışında kalır.

#lil
@install md echo mod stat hash
cd lil-playground
md trust
echo "example private note" > trust/note.txt -r
mod trust/note.txt -0600
stat trust/note.txt
hash trust/note.txt > trust/note.sha256 -r
stat trust/note.sha256