Existe uma estrutura de segurança PHP que protege números de telefone, bem como senhas?

StackOverflow https://stackoverflow.com/questions/120977

Pergunta

Eu entendo o mantra de "não rolar o seu próprio" quando se trata de estruturas de segurança local.

Para a maioria dos casos de qualquer maneira.

Eu vou estar colaborando em um site que integra mensagens de texto para o sistema.

Eu gostaria de usar uma estrutura de segurança existente, bem testado para proteger os dados dos usuários, mas eu preciso dele para também proteger um número usuários de telefone também.

Eu não gostaria de ser o responsável por uma lista de números de telefone celular os usuários se levantado e spam.

Que sugestões pode a oferta comunidade?

Foi útil?

Solução

Note que as técnicas aplicadas às senhas não são aplicáveis ??aqui. Você pode armazenar uma senha salgada e hash (embora o valor de fazê-lo pode ser contestada), mas que não funciona para números de telefone.

Se alguém rouba seu servidor, eles podem fazer qualquer coisa que o servidor pode. Isto deve incluir a recuperação do número de telefone, mas não inclui a recuperação da senha, se ele é hash bem. Assim, o número de telefone é apenas um caso particular de proteger dados confidenciais.

Se os números de telefone são verdadeiramente a apenas dados sensíveis no aplicativo, em seguida, você pode olhar para compartimentar a parte do aplicativo que envia os textos, e assimetricamente criptografar os nºs de telefone. Em um processo diferente (ou em uma máquina diferente) executar um aplicativo que tem a chave para os números de telefone decrypt. interface deste aplicativo teria talvez uma função de tomar um não criptografado ea mensagem a enviar. Manter este simples aplicativo e teste e auditar o ranho fora dele. Ou escondê-lo do mundo exterior, ou a autenticação de uso para provar a solicitação realmente veio de seu aplicativo principal, ou ambos.

Nem a db nem a parte principal do aplicativo é capaz de descodificar os números de telefone (assim, por exemplo você não pode pesquisar sobre eles), mas eles podem criptografar-los para além do banco de dados.

A técnica geral é chamado de "separação de privilégios", o acima é apenas um exemplo.

Note que os números de telefone, em geral, precisam ser preenchidos com dados aleatórios antes de criptografia (como salga um hash de senha). Caso contrário, é possível responder à pergunta "é o número de telefone criptografado X?", Sem conhecer a chave privada. Isso pode não ser um problema do ponto de vista de spammers roubar sua lista de distribuição, mas é um problema do ponto de vista de alegando que os seus números de telefone são armazenados de forma segura, uma vez que significa um ataque de força bruta torna-se viável: há apenas alguns bilhões Nos telefone, e isso pode ser possível diminuir esse baixo maciçamente para um determinado usuário.

Infelizmente este não responder diretamente sua pergunta:. Eu não sei se há um framework PHP que irá ajudar a implementar a separação de privilégios

[Edit para adicionar: de fato, ocorre-me que, sob o título de 'manter a simples aplicação privilegiada', você não pode querer usar uma estrutura em tudo. É uma espécie de depende se você acha que está erros de descanso mais ou menos prováveis, na pequena quantidade de código que você realmente precisa, que os autores quadro são não deixaram bugs no muito maior (mas mais amplamente utilizado) quantidade de código que' ve escrito. Mas isso é uma enorme simplificação excessiva.]

Outras dicas

Uma vez que você precisa para ser capaz de recuperar os números de telefone, a única coisa que você pode realmente fazer para protegê-los (para além das coisas normais que você faria se a proteger sua db) é criptografá-las. Isso significa que você precisa:

  • Certifique-se a chave não vaza quando, inadvertidamente, vazar um despejo de banco de dados.
  • Verifique se o seu sistema não prestativamente descriptografar os números de telefone quando alguém consegue SQL Inject seu sistema.

É claro que a recomendação de não rolar seus próprios ainda se aplica, use AES ou algum outro cifra bem respeitado com um comprimento de chave razoável.

Tenho o prazer de anunciar o lançamento do sistema de hole-segurança para PHP

Este projeto está para trazer para PHP o tipo de segurança que é fornecido em Java pelo Spring Security do ex-Sistema de segurança Acegi para a Primavera. Ele foi projetado para ser atraente para os usuários do Spring Security porque a filosofia é a mesma. É uma maneira discreta para aumentar a segurança para um site PHP. A configuração é feita utilizando substrato IOC / DI como utilização de segurança da mola IOC / DI.

Um navio exemplo de configuração com o quadro e pode ser usado como este:

$context = new substrate_Context(
    './path/to/hole-security/hole-security-config.php'
);

$context->execute();

$hole_Security = $context->get('hole_FilterChainProxy' );
$hole_Security->doFilter();

Apenas certifique-se de que o código de inicialização do quadro é executado antes da inicialização do MVC de sua escolha.

WebSite: http://code.google.com/p/hole-security/

Documentação: Para o momento em que você pode usar a documentação de referência do Spring Security onde é aplicada. Você pode ter uma idéia geral usando a documentação de referência Acegi segurança porque hole-segurança usam o mesmo modo de configuração, mas tenha em mente que ele é baseado em Spring Security.

Licença: É liberado sob Apache License Version 2.0.

Características: hole-segurança traz um sistema de segurança conectável onde você pode adotar a exigência de seu ambiente de segurança. Actualmente, existe um sistema de segurança muito simples, porque é no primeiro lançamento, mas com a fundação de base que traz você poderia sugerir ou solicitação de novos recursos para ser adicionado ao projeto.

Atualmente Características:

  1. Na autenticação dao memória como uma prova de conceito, você pode alternar para o seu dao ou implementação preferido que os dados do usuário nos obter de banco de dados ou onde quer que você armazená-lo. Em futuros liberar uma implementação DOP base será criado.

  2. filtros configurado para ser aplicado a padrões de URL. Url matcher caminho pode ser conectado a, atualmente fornecido com um matcher caminho estilos formiga.

  3. Gerenciador de autorização pode ser usado em seu aplicativo para decidir onde quer ou não fazer alguma coisa, sempre obter a referência do contexto substrato.

  4. Contexto de Segurança Comum acessível a partir de qualquer código de sua aplicação se hole_HttpSessionContextIntegrationFilter é aplicada. Você pode utilizar este contexto para salvar informações relacionadas com a sessão sem usar o objeto de sessão diretamente.

  5. Você pode usar uma página de login personalizado e personalizá-lo de acordo com a configuração hole_AuthenticationProcessingFilter, ou personalizar hole_AuthenticationProcessingFilter de acordo com a página de login personalizado.

  6. O codificador senha padrão é texto simples, sem codificação. lançamentos futuros terão implementações para MD5, Sha base, Base64 e outros codificação relacionado. Você pode criar seu próprio codificador senha e se configurado.

  7. Todos os objetos são carregados como necessário, se algo como um filtro não é usado por um pedido não seria carregado. Este aumentar o desempenho do aplicativo Há outros recursos relacionados que hole-segurança tem.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top