Olá usuário , seja muito bem vindo ao nosso fórum !

Se esta visitando nosso fórum e de alguma forma nós te ajudamos com algum tutorial, download, espero que colabore com a gente se registrado no fórum que não leva mais que 1 minuto.

Outras formas de colaborar com o nosso fórum:

-> Se logando apos o registro.
-> Entrando diariamente.
-> Postando novos conteúdos no fórum como tutoriais, downloads, piadas, memes, notícias, vídeos, etc..
-> Leia nossas regras e participe de nossas promoções.

Até mais , aguardo seu registro e sua colaboração com o fórum.
Olá usuário , seja muito bem vindo ao nosso fórum !

Se esta visitando nosso fórum e de alguma forma nós te ajudamos com algum tutorial, download, espero que colabore com a gente se registrado no fórum que não leva mais que 1 minuto.

Outras formas de colaborar com o nosso fórum:

-> Se logando apos o registro.
-> Entrando diariamente.
-> Postando novos conteúdos no fórum como tutoriais, downloads, piadas, memes, notícias, vídeos, etc..
-> Leia nossas regras e participe de nossas promoções.

Até mais , aguardo seu registro e sua colaboração com o fórum.

Você não está conectado. Conecte-se ou registre-se

[Tutorial] PHP - As principais falhas cometidas

4 participantes

Ir para baixo  Mensagem [Página 1 de 1]

!skipper

!skipper
RBFounder

RBFounder

Não prometo deixar o seu sistema tão protegido quanto o [Tens de ter uma conta e sessão iniciada para poderes visualizar este link] mas, sem dúvida, você vai evitar que muita gente faça um estrago considerável no seu site...

Se você se identificar com algumas dessas medidas não saia correndo e se jogue da ponte… Faça os devidos ajustes e tudo ficará bem.

Cuidados com a URL – Parte I
Uma falha muito comum são aqueles hp que, tentando usar um sistema “legal”, acabam abusando da sorte… São sites que incluem o conteúdo (via include()) baseado em uma variável do método $_GET. Exemplo:
Código:
<?php
  // Verifica se a variável $_GET['pagina'] existe
  if (isset($_GET['pagina'])) {
      // Pega o valor da variável $_GET['pagina']
      $arquivo = $_GET['pagina'];
  } else {
      // Se não existir variável, define um valor padrão
      $arquivo = 'home.php';
  }
  include ($arquivo); // Inclui o arquivo
?>

E na URL do site ficaria:
[Tens de ter uma conta e sessão iniciada para poderes visualizar este link]

Com isso o “invasor” pode, por exemplo, colocar um caminho de um script externo no lugar da variável:
[Tens de ter uma conta e sessão iniciada para poderes visualizar este link]

O seu site incluiria o arquivo normalmente e executaria tudo que existe dentro dele… O resto você já pode imaginar.

Evitar que isso aconteça é extremamente simples: é só criar um array contendo os nomes dos arquivos que poderão ser incluídos, dessa forma:
Código:
<?php
  // Define uma lista com os arquivos que poderão ser chamados na URL
  $permitidos = array('home.php', 'comunidade.php', 'home.php', 'staff.php');

  // Verifica se a variável $_GET['pagina'] existe E se ela faz parte da lista de arquivos permitidos
  if (isset($_GET['pagina']) AND (array_search($_GET['pagina'], $permitidos) !== false)) {
      // Pega o valor da variável $_GET['pagina']
      $arquivo = $_GET['pagina'];
  } else {
      // Se não existir variável $_GET ou ela não estiver na lista de permissões, define um valor padrão
      $arquivo = 'home.php';
  }
  include ($arquivo); // Inclui o arquivo
?>
Viu? Adicionamos uma única linha e mais uma condição e está tudo resolvido. Com isso, se o atacante colocar lá o site dele na URL do seu site o PHP vai identificar que a variável $_GET['pagina'] existe mas não está no array $permitidos, então ele vai incluir o arquivo home.php

Demorei para arrumar os Bug´s do código , espero que tenham gostado :)

Créditos : sasuky ( postar )

http://www.thunderzone.co.cc

FernandoHunts

FernandoHunts
RBConhecido

RBConhecido

@onn topic



Parabens

https://twitter.com/

Raphael0

Raphael0
RBVisitante

RBVisitante

Realmente, há esse método de proteção, mas eu prefiro usar este aqui também (ou sozinho):

Código:

<?php
function filter($value) {
        return mysql_real_escape_string(addslashes(htmlentities($value)));
}

$page = filter($_GET['page']);

// seu seletor (ou não) aqui
?>

É claro que teria que estar em conexão com o banco e essa função não estaria declarada em um arquivo qualquer, mas deu pra entender eu acho.

https://twitter.com/

Ygor

Ygor
RBVisitante

RBVisitante

Também prefiro assim:
Código:
<?php
function filter($value) {
        return mysql_real_escape_string(addslashes(htmlentities($value)));
}

$page = filter($_GET['page']);

// seu seletor (ou não) aqui
?>

https://twitter.com/

Conteúdo patrocinado



Ir para o topo  Mensagem [Página 1 de 1]

Permissões neste sub-fórum
Não podes responder a tópicos