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

Banco de dados PHP/SQL consultando boas práticas e segurança


A resposta de Javier que tem o link owasp é um bom começo.

Há mais algumas coisas que você pode fazer mais:

  1. Com relação aos ataques de injeção de SQL, você pode escrever uma função que removerá instruções SQL comuns da entrada como "DROP" ou "DELETE * WHERE", assim:

    *$sqlarray =array( " DROP ","ou 1=1","união select","SELECT * FROM","select host","criar tabela","FROM users","users WHERE");*

    Em seguida, escreva a função que verificará sua entrada nesse array. Certifique-se de que qualquer coisa dentro do $sqlarray não seja uma entrada comum de seus usuários. (Não se esqueça de usar strtolower nisso, obrigado lou).

  2. Não tenho certeza se o memcache funciona com o PHP 4, mas você pode colocar em prática alguma proteção contra spam com o memcache, permitindo apenas um certo acesso remoto IP à página process.php X quantidade de vezes no período de tempo Y.

  3. Privilégios são importantes. Se você precisar apenas de privilégios de inserção (digamos, processamento de pedidos), você deve fazer login no banco de dados na página de processo de pedidos com um usuário que tenha apenas privilégios de inserção e talvez de seleção. Isso significa que, mesmo que uma injeção de SQL tenha passado, eles só poderiam executar consultas INSERT / SELECT e não excluir ou reestruturar.

  4. Coloque arquivos de processamento php importantes em um diretório como /include. Em seguida, desabilite o acesso de todos os IPs a esse diretório /include.

  5. Coloque um MD5 salgado com o agente do usuário + remoteip + seu salt na sessão do usuário e faça com que ele verifique em cada carregamento de página se o MD5 correto está em seu cookie.

  6. Não permitir determinados cabeçalhos (http://www.owasp.org/index.php/Testing_for_HTTP_Methods_and_XST ). Não permitir PUT(Se você não precisar de uploads de arquivos)/TRACE/CONNECT/DELETE headers.