Limitando o escopo da gravação de arquivos pelo script PHP

0

Eu estou no processo de escrever um script PHP que irá adicionar blocos de endereços IP ao arquivo .htaccess . Minha preocupação é que eu não quero ter o arquivo .htaccess aberto para o usuário do servidor web para gravação geral, pois qualquer comprometimento do servidor web permitiria que eles escrevessem o que quisessem no arquivo .htaccess . Então, eu estou tentando encontrar uma maneira de limitar o script PHP para poder apenas escrever o que eu quero que seja, de alguma forma.

Estou pensando que uma maneira apropriada de fazer isso pode ser criar um script em outro local, talvez de propriedade do root, que tenha suid definido (minha partição da web não permite suid ). Eu posso então chamar o script do meu script PHP, e ele só será capaz de fazer o que a interface desse script intermediário disponibiliza para ele, o que seria pegar os parâmetros necessários para escrever o código de bloqueio do endereço IP específico para o .htaccess file, e nada mais.

Isso soa como a melhor maneira de abordá-lo? Existe alguma outra maneira que seria melhor, ou qualquer consideração que eu esteja faltando?

Meta Note : considerei o site de Segurança da Informação ou o Stack Overflow para essa pergunta. Se seria melhor em um desses por favor me avise.

    
por SuperDuperApps 15.03.2017 / 22:54

1 resposta

2

Deixe o script PHP gravar os endereços IP em uma tabela de banco de dados. Separadamente, a partir de cron , executa periodicamente um script diferente (recomendação? Python) que consulta os valores e os grava no arquivo .htaccess . Então você pode manter as permissões no arquivo .htaccess , como 0640 , root:www-user .

Nós podemos definir o bit SUID em um script; mas, por padrão, o Linux o ignora corretamente. Basta alterar as permissões para algo como 0700 , root:root no script executado em cron .

Vários trabalhos como este podem ser tratados com essa técnica, uma espécie de fila de banco de dados. Eu o usei quando uma interface da Web é um requisito de projeto para o gerenciamento do sistema. A fila em cenários como esses pode gerenciar usuários, senhas, hosts virtuais, DNS - o nome dele, na verdade.

    
por 15.03.2017 / 23:21