Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Perguntas de segurança de sites dinâmicos (PHP+MySQL)


Outros pontos para pensar:

1. Você está vulnerável ao bruteforce

Um ataque de dicionário quebraria sua senha. Como a grande maioria dos usuários tem uma senha insegura, é apenas uma questão de tempo. Use captcha ou registre entradas inválidas. Ou adicione algum atraso quando a senha estiver incorreta.

Como disse o coronel Shrapnel, uma mesa de arco-íris não é uma preocupação para você porque ela é usada quando alguém tem um monte de hashes e quer quebrá-los. O sal é usado para ganhar alguma proteção contra uma mesa de arco-íris, e esse não é o seu caso.

2. Você está enviando senhas em texto não criptografado

Se alguém farejar seu login (wifi, por exemplo), você está condenado. Existem algumas bibliotecas javascript que podem criptografar qualquer coisa usando chaves públicas. Se você não quiser usar SSL, criptografe o login/senha, envie para o servidor, descriptografe usando a chave privada e você estará mais seguro.

3. Considere usar instruções preparadas no MySQL

O uso de instruções preparadas ajuda contra injeção de SQL, pois pode ser executado com segurança mesmo com entrada maliciosa:
$dbc = new mysqli("mysql_server_ip", "mysqluser", "mysqlpass", "dbname");
$statement = $db_connection->prepare("SELECT * FROM table WHERE thing='?'");
$statement->bind_param("i", $thing);
$statement->execute();

4. Não transmita a validação do lado do cliente

Em seu formulário de login, você retransmite uma função javascript impedindo que a tecla Enter funcione. E se eu desabilitar o Javascript? Você pode usar um campo oculto (por exemplo, ), usar sua função para evitar a tecla Enter e usar uma função onSubmit() para alterar FormIsValid para 1 antes enviando o formulário. Em seu servidor, verifique FormIsValid.

5. Você está vulnerável ao sequestro de sessão

Sua sessão é salva em um cookie, por padrão chamado PHPSESSID. Se um invasor conseguir esse cookie, ele poderá enviá-lo ao seu servidor e roubar sua sessão. Para evitar isso, você pode salvar o endereço IP do usuário e o agente do usuário na sessão e comparar o valor recebido da sessão em cada solicitação. Se os valores não corresponderem, o IP do usuário pode ter sido alterado ou a sessão pode ter sido invadida.

6. Você pode estar vulnerável à fixação de sessão

Como dito acima, se alguém convencer seu administrador a acessar algum site, e este site enviar uma solicitação ao seu site com um PHPSESSID na solicitação, seu site criará a sessão, processará o login/senha e informará que as credenciais estão erradas . Nada mal até agora.

Mais tarde, seu administrador faz login no seu portal, a sessão já existe, o login e a senha correspondem e a sessão é ATUALIZADA. A variável válida agora é 1.

Assim que a variável for atualizada, o invasor terá acesso total ao seu portal, pois ele conhece o PHPSESSID, seu site não impede o sequestro de sessão, nem a fixação de sessão.

Para evitar a fixação e o seqüestro da sessão, consulte o nº 5.