Introdução

Parte 10

Segredos, sessões e confiança: nem todo valor pertence a um script

Automação fica perigosa quando todo valor útil é tratado como texto inofensivo. Senhas, chaves privadas, cookies e estado de autenticação precisam de um ciclo de vida diferente de caminhos, tamanhos de imagem ou nomes de tabela.

Classifique o valor antes de automatizá-lo

Um caminho, nome de arquivo compactado ou largura de imagem é configuração comum. Uma senha, chave privada, token de sessão ou credencial de banco de dados pode conceder acesso. Colocar os dois tipos no mesmo script reutilizável transforma o próprio script em segredo.

Antes de salvar um valor, faça duas perguntas: ele pode autorizar alguma coisa? Eu ficaria confortável copiando este arquivo para outro projeto ou compartilhando-o para revisão? Se não, mantenha o segredo fora da receita.

Inspecionar o ambiente é útil, mas o ambiente não é um cofre

env mascara de propósito valores cujos nomes parecem sensíveis. Isso é proteção de apresentação, não prova de que toda variável de ambiente seja segura ou de que não exista segredo com um nome inesperado.

Inspecione apenas o espaço de nomes ou valor de que precisa. Evite capturas de tela e exportações de dumps completos do ambiente e nunca trate uma tela mascarada do terminal como permissão para publicar a configuração real do servidor.

env
env server
env request

Sessões e cookies são estado da aplicação, não texto de rascunho

ses mostra dados hierárquicos da sessão PHP e coo mostra cookies visíveis em uma superfície deliberadamente separada. Estado protegido de autenticação/cookie de sessão é bloqueado nos caminhos comuns de exportação e sobrescrita.

Esse limite importa porque dados de sessão pode carregar identidade, autorização e estado temporário. Inspecione de forma estreita, altere só espaço de nomess que você controla e não use armazenamento de sessão como esconderijo conveniente para segredos de longa duração.

ses -l
coo
coo -a

Um hash pode provar igualdade; não pode esconder o original

hash calcula resumos criptográficos e HMAC. Um resumo criptográfico é excelente para responder “estes bytes mudaram?” e para registrar a identidade de um arquivo compactado ou artefato de versão publicada.

O cálculo de hash não é criptografia. Se o valor original vem de um conjunto pequeno e adivinhável, um hash não o torna confidencial. Use HMAC quando a autenticidade depender de uma chave secreta e criptografia quando o conteúdo em si precisar ficar ilegível.

hash -s "hello terminal"
hash

Criptografia só protege o conteúdo enquanto a chave também estiver protegida

enc usa cifras autenticadas, pedidos de senha ocultos e modos de chave exata. Comece com enc para ver o que o servidor suporta; o prompt padrão mantém a senha fora do histórico visível.

Um arquivo criptografado ao lado de sua chave exposta quase não está protegido. Separe chave e dados criptografados em limites de confiança diferentes quando possível, entenda antes como será a recuperação e teste a descriptografia antes de apagar o texto em claro.

enc

Permissões do sistema de arquivos reduzem acesso; não substituem criptografia

Um modo de acesso como 0600 diz que o proprietário atual deveria ser o único leitor/escritor comum. É útil para arquivos de chave locais e exportações privados quando a hospedagem respeita modos UNIX.

Permissões não protegem contra o dono da conta de hospedagem, cópias de segurança ou um processo PHP comprometido. Depois de mod, use stat para verificar o que realmente mudou e combine permissões com o modelo correto de armazenamento e criptografia.

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

Diferencie limpeza, uninstall e destruição

clear limpa apenas o histórico visível. uninstall <module> remove um módulo de extensão. kill -include remove a camada opcional de interface, kill -install a camada de extensões e kill sem opções é o limite da remoção completa do terminal.

Essas ações não devem se misturar na memória muscular. Antes de uma operação destrutiva, nomeie a camada que pretende remover e os arquivos que devem permanecer. Um usuário seguro consegue explicar o rollback antes de pressionar Enter.

Limpeza visualclearApenas o histórico visível; arquivos e módulos permanecem
Remover módulouninstall <module>Um módulo de extensão; regras de dependência se aplicam
Redefinir a interfacekill -includeCamada CSS/JavaScript persistente ou de sessão
Redefinir as extensõeskill -installCamada de extensões instalada; Core permanece
Remoção completakillA própria instalação do lil-terminal

Guarde isto como script

Salve isto como trust-checkpoint.lil. Ele cria apenas dados de exemplo, aplica um modo de acesso do arquivo restritivo, registra metadados e guarda um resumo criptográfico. Repare no que ele deliberadamente não automatiza: entrada de senha e chaves de descriptografia ficam fora do script.

#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