Jump to content
AndréJs

Segurança

Recommended Posts

Olá eu comecei a estudar PHP Faz pouco tempo è queria receber dicas de como deixar um site mais seguro com PHP ou até com outra linguagem de programação. 

 

Share this post


Link to post
Share on other sites

Seja bem vindo desde já.

Eu geralmente uso PDO para tratar minhas query, mas mesmo usando

eu gosto de tratar o que é enviado via preg_replace, addslashes e etc.

E vale lembrar que é necessário validar também se os dados enviados

pelo input não é um ataque de xss.

 

Share this post


Link to post
Share on other sites

Segurança em 'sites' é uma coisa muito ampla.

Entra tratamento de querys como o @jamesbond falou para prevenção de SQL-Injection

 

 

XKCD - Exploits of a Mom (The Bobby Tables Comic)

 

Entrada de arquivos (já imaginou o cara envia um .php em um form/file onde deveria receber apenas um .png?)

 

A regra de ouro é pensar que o usuário sempre pode ser maldoso, e nunca confiar no mesmo.

 

O php já tem diversas funções para sanitização de Strings/Int/float/date:

Da uma olhada nos FILTER_*, pouca gente conhece elas.

http://php.net/manual/en/filter.filters.sanitize.php

 

 

Você pode fazer a 'engenharia reversa' tmb, pesquisar 'maneiras de atacar um site php' e tentar entender como funciona cada uma das técnicas fazendo a prevenção da mesma.(buscar em ingles nesse momento a % de resultados relevantes aumentam drasticamente hehe)

 

 

O Heming fez um post/aula excelente sobre segurança em cima de md5 :
https://forum.imasters.com.br/profile/159859-gabriel-heming/

 

Pensar em cenários de falha, se o banco cair/ocorrer um erro de syntax por exemplo vai exibir alguma informação sensível ou vai simplesmente exibir uma tela padrão HTTP/500?

 

Lembrando que 'segurança'  também é muito influenciada pelo servidor, de nada adianta sua aplicação(php) estar 100% blindada e o banco com senha de admin/admin, ou o ssh com senha 123, exemplos bestas mas que acredite... 
 

Vale o click:

https://secure.php.net/manual/pt_BR/security.php

  • +1 1

Share this post


Link to post
Share on other sites

Sobre SQL injection, o site mais completo que eu conheço é o https://phpdelusions.net/

 

Sobre criptografia,  leia os artigos de Scott Arciszewski e os que ele linkar. Ele tem muito material e adiciona várias ótimas referências.

 

Pesquise, também, sobre:

  • Cross-site request forgery (CSRF);
  • Cross-site scripting (XSS);
  • Error messages;
  • File upload e include/require breach (vulnerabilidades);
  • Session storage (local e criptografia);
  • Database (separado do servidor PHP).

Não pense na segurança como uma solução definitiva. Pense como camadas adicionadas ao seu sistema que aumentarão a segurança. Entretanto, a segurança vem de encontro a performance. Ou seja, quanto mais segurança, menos performance seu sistema possuirá.

  • +1 3

Share this post


Link to post
Share on other sites

quanto a envio de arquivos acredito eu que uma forma de saber se é imagem mesmo é testando se width+height>0. eu falo isso porque em testes já me aconteceu do php confundir o tipo de arquivo dependendo a extensão que ele tiver tipo se eu pegasse um php e botasse uma extensão .jpg o php validava como imagem jpg invés de php mesmo usando todas as formas de verificação de arquivo que eu conhecia mas passando altura e largura de imagem já vai dar zero se não for imagem.

  • -1 1

Share this post


Link to post
Share on other sites
4 horas atrás, marsolim disse:

quanto a envio de arquivos acredito eu que uma forma de saber se é imagem mesmo é testando se width+height>0. eu falo isso porque em testes já me aconteceu do php confundir o tipo de arquivo dependendo a extensão que ele tiver tipo se eu pegasse um php e botasse uma extensão .jpg o php validava como imagem jpg invés de php mesmo usando todas as formas de verificação de arquivo que eu conhecia mas passando altura e largura de imagem já vai dar zero se não for imagem.

Isso depende muito da forma em que você irá validar o arquivo enviado.

Se você por apenas um strpos checando se existe png no arquivo de fato será simples burlar o seu sistema...

Share this post


Link to post
Share on other sites

stropos pra validar tipo de arquivo? nunca fiz verificando string não huahuahuahua eu falo das validações de tipo de arquivo mesmo tipo $_FILES['nome_arquivo']['type']mime_content_type e tals que retornam o tipo tal e qual como image/gifimage/pngtext/plain e tals. já aconteceu disso me falhar não sei se por problemas no server ou o que. aí usei getimagesize() pra somar width+height. claro que pode ter imagem de zero pixels mas não imagino um uso pra elas e portanto se der zero não sobe de qualquer forma huehuehuehue

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By tatysouzac
      Minha view:
      <div>                            
                                          <form method="post" action="http://localhost/integradorcode/index.php/welcome/validar">
                                          EMAIL: <input type="text" name="email"  /> <br><br>
                                          SENHA:  <input type="password" name="senha"/> <br><br><br><br>
                                          <input class="myButton" type="submit" value="Entrar"/> <br><br>
                                          </form>
                                          <a href="Cadastro.php" class="myButton">Cadastrar</a><br><br>
                                          <a href="#" class="myButton">Esqueceu sua senha?</a>
               </div>
       
       
       
      Controller:
       
          public function validar(){
              //var_dump($_POST);
              $this->load->model("Cadastro_model");
              $result = $this->Cadastro_model->validar($_POST["email"],md5($_POST["senha"]));
              var_dump($result);
          }
       
       
      Model:
       
          function validar($email, $senha){
              return $this->db->query("SELECT * FROM `cadastro_clientes` WHERE email_cliente = '{$email}'  AND senha_cliente = '{$senha}' AND status = 1 LIMIT 1")->result_array();
          }
       
       
      Não da nenhuma mensagem de erro mas coloco senha e login certos do meu bd e o return não retorna nada array 0 
    • By terra
      Olá,
       Tenho esse codigo
       
      e gostaria de chamar  bairro = dados.address.suburb; aqui nesse função 
       
       
      Agradeço qualquer ajuda
    • By ricardonews
      olá pessoal, eu não estou conseguindo fazer o redirecionamento apos o cadastro para index, eu estou perdido entre os ifs e else, eu acho que só pode ser isso,  quando eu coloco meu código trava, e não faz nada. vou postar o print.

    • By Fábio Capello
      Oi pessoal tudo bem?sou novo no fórum estou desenvolvendo um sistema web preciso de ajuda meu dificuldade e para por segurança na páginas php.quando um usuário logado quer mudar de navegador ele cópia link e colou em outro navegador ele terá acesso mas quero que ele direcione para página de login 
    • By Dinho Nunes LC
      <div align="center" id="subtitulo"> Canais Abertos </div> <div class="ui cards"> <div class="card"> <div class="content"> <a href="globo.html" style="display: block; color: black"> <div align="center"> <div> <img class="ui tiny image" id="imagem_card_casa" src="assets/images/Rede_Globo_2014.png"> <div align="center" id = "nome_time_fora"> <b>Globo RJ</b> </div> </div> Onde "globo.html" seria substituído pelo link que esta em uma tabela do banco de dados.
       
      Já fiz a conexão. E tenho a base de dados pronta.
       
      Motivo pelo qual estou buscando ajuda:
       
      Faço manualmente a mudança de cada link (são mais de 300) diariamente para evitar copias de terceiros. Sendo assim poderia usar um CRUD para facilitar a troca dos links direto no banco de dados.
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.