Fóruns sobre PHP, JavaScript, HTML, MySQLi, jQuery, Banco de Dados, CSS


Moderador: web

 
Mais de 25 postagens
Mais de 25 postagens
Tópico Autor
Mensagens: 43
Nome: Vinicius
Descrição do site: Hospedagem de sites
Localização: santa rosa de viterbo
Contato:

Segurança em programar

23-04-2010 15:15

Já vi alguns clientes terem sites desfigurados e invadidos por falhas bobas de segurança que poderiam ter sido evitadas se os programadores dos mesmos tivessem alguns cuidados, como os que vou destacar abaixo:

1) Evite o SQL Injection: se o seu site trabalha com MySQL ou PostgreSQL, sugiro limpar o código que chega da página antes de enviar qualquer comando SQL, trocando aspas simples ( ) por duas aspas simples ( ). O MySQL interpreta duas aspas simples como sendo uma aspa simples e você não corre o risco de ter um comando SQL não desejado em sua base de dados.

Em PHP, a substituição pode ser feita com o seguinte comando:

$ComandoSQL = str_replace( \ , \ \ , $ComandoSQL);

Em Perl:
$ComandoSQL =~ s/\ /\ \ /isg;

Existe outra maneira de se proteger deste problema, trocando por \ (com uma barra antes):

Em PHP:
$ComandoSQL = str_replace( \ , \\\ , $ComandoSQL);

Em Perl:
$ComandoSQL =~ s/\ /\\\ /isg;

Para verificar se o seu site é vulnerável, no sistema de login dele experimente colocar a seguinte string no username E senha:
or
Ou:
and

Ou:
or 1+1=2 or

Existem outras strings mais complexas para testar sites que funcionam com SQL Server, mas que não vem ao caso.

2) Senhas de MySQL e FTP. Em hipótese alguma utilize a mesma senha para o seu banco de dados e o seu FTP. Digamos que por algum motivo alguém teve acesso ao código fonte do seu site... já pensou no estrago que dá para fazer? Se o seu provedor permite, utilize senhas diferentes para o seu banco de dados, o seu FTP e se possível, uma terceira senah diferente para o painel de controle do seu provedor de hospedagem. Não guarde estas senhas no seu computador. Decore-as. Se possível, em último caso, anote em um papel e guarde no fundo do baú para o caso de você voltar das férias e esquecê-las :)

3) Arquivos de inclusão com senhas e conexões MySQL: se o seu provedor permite, coloque um arquivo de inclusão com senhas e variáveis abaixo do diretório web. Por exemplo, digamos que a página index web do seu site fique em /home/dominio.net/public_html/index.php. Coloque um arquivo include.php em /home/dominio.net/public_html/. Assim, este arquivo não ficará visível por Web.

Se o seu provedor não permite isto, em hipótese alguma utilize a extensão .inc para o mesmo (exemplo: "include.inc"), pois ele torna-se um arquivo texto e pode ser visualizado em qualquer navegador. Para evitar este furão de sergurança, altere o nome para include.php, ou, qualquercoisa.php (sendo um arquivo .php, ele será executado. Como ele só tem definições de variáveis, aparecerá uma página em branco ao invés de aparecer as suas senhas e variáveis do seu site).

4) Permissões de pastas: Exija do seu provedor de hospedagem que ele feche as permissões dos clientes dele com a diretiva "open_basedir" do PHP, fazendo com que os outros sites que compartilham o mesmo servidor não tenham acesso ao seu site por métodos include ou fopen. Com a diretiva open_basedir configurada, cada site fica restrito à sua própria área, sem poder "interagir" com outros sites.

Se possível, solicite ao seu provedor para fechar a sua pasta home de modo que outros clientes dele não tenham acesso à ela nem por SSH, o que é muito comum de vermos em pequenas e médias empresas de hospedagem, onde sites importantes e grandes são escancarados para serem invadidos.

5) CUIDADO ao utilizar scripts prontos de Fórum, Enquetes, Buscas, etc: por serem scripts prontos e abertos (qualquer pessoa possui acesso ao código fonte), o número de pessoas que conhecem o código é maior e por conseqüência, a chance de um bug de segurança ser descoberto e utilizado contra você é muito maior.

Prefira sempre programar o seu próprio sistema, tomando cuidados com brechas, mas, se você precisa utilizar um script pronto ou não deseja programar o seu próprio sistema, fique atento à atualizações. Elas normalmente vêm com mais recursos e correções de bugs importantes.

6) Se o seu site roda "Perl" com servidor web Apache, sugira ao seu provedor de hospedagem para que ele rode os scripts .cgi e .pl com o recurso SUEXEC do Apache, que faz com que os scripts em .cgi e .pl rodem com o nome do usuário deles ao invés de rodarem como \ nobody\ , o que abre brechas de segurança sem precedentes.

Finalizando o artigo, com a disseminação de vírus e programas de backdoor, cuide tudo o que você recebe, desde e-mails à programas de estranhos, ou downloads. Você também corre o risco de ter os comandos que você digita sendo logados e enviados para o FTP de uma pessoa com más intenções. Aos céticos, informo que isto existe, já tive a "oportunidade" de presenciar este acontecimento com um cliente nosso. Minha dica: instale o SpyBot - Search & Destroy. Foi o melhor SpyBot que encontramos em 2 semanas de pesquisa na Web. Além de remover os backdoors que você tem instalado hoje, ele previne novas instalações, como uma "Vacina".
0
 
Mais de 100 postagens
Mais de 100 postagens
Mensagens: 102
Nome: Erivelton Ferreira
Descrição do site: A melhor web rádio da internet (Radio Killer)
Sexo: Masculino
Localização: Apuiarés - CE
Contato:

Segurança em programar

26-07-2011 14:57

Dicas muito boas, está de parabens pelo artigo !
0
www.radiokiller.com.br
 
Mais de 75 postagens
Mais de 75 postagens
Mensagens: 91
Sexo: Masculino

Segurança em programar

10-12-2013 21:08

É isso ae com atenção e mucho cuidado!
0

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado