Publicidade (Anuncie Aqui)

  • http://jump20.com Ramon

    Muito bom o post! Parabéns pelo blog. :D

  • http://jump20.com Ramon

    Muito bom o post! Parabéns pelo blog. :D

  • http://gtivideoaulas.com Felipe Girotti

    Parabéns Tiago, tava procurando isto a muito tempo e não achava algo assim tão claro e objetivo.

  • http://gtivideoaulas.com Felipe Girotti

    Parabéns Tiago, tava procurando isto a muito tempo e não achava algo assim tão claro e objetivo.

  • Fabiano

    Blz Thiago seguinte e como evitar que um usuario acesse um determinado ID ex:
    http://www.meusite.com.br/editar.php?id=12
    trocando o 12 por 13 e tendo acesso a outra conta que no caso ficaria assim
    http://www.meusite.com.br/produtos.php?id=13

  • Fabiano

    Blz Thiago seguinte e como evitar que um usuario acesse um determinado ID ex:
    http://www.meusite.com.br/editar.php?id=12
    trocando o 12 por 13 e tendo acesso a outra conta que no caso ficaria assim
    http://www.meusite.com.br/produtos.php?id=13

  • http://blog.thiagobelem.net/ Thiago Belem

    @Fabiano
    Isso é questão de planejamento. Faça uma verificação se o usuário tem permissão para acessar o ID em questão usando regras de permissão salvas no banco de dados.

  • http://thiagobelem.net/ Thiago Belem

    @Fabiano
    Isso é questão de planejamento. Faça uma verificação se o usuário tem permissão para acessar o ID em questão usando regras de permissão salvas no banco de dados.

  • pslucasps

    Thiago eu utilizo o file_exists, posso usar ele com tranquilidade ou também possui uma brecha de segurança? Utilizo-o da seguinte maneira:

    $pag=$_GET['pag']
    if ((file_exists($pag.’php’)))
    { include $pag.’php’ }
    else
    { echo (‘Página não encontrada’); }

    No caso se alguém tentase usar por exemplo ?pag=http://sitedumal.net/deleta-banco.php iria ser verificado antes se o arquivo com nome de: http://sitedumal.net/deleta-banco.php.php existe no próprio servidor caso nao exista ele mostra a menssagem de erro. Como estou iniciando no PHP ainda, esse foi meu método que desenvolvi mas não sei se é correto. Abraço.

  • pslucasps

    Thiago eu utilizo o file_exists, posso usar ele com tranquilidade ou também possui uma brecha de segurança? Utilizo-o da seguinte maneira:

    $pag=$_GET['pag']
    if ((file_exists($pag.’php’)))
    { include $pag.’php’ }
    else
    { echo (‘Página não encontrada’); }

    No caso se alguém tentase usar por exemplo ?pag=http://sitedumal.net/deleta-banco.php iria ser verificado antes se o arquivo com nome de: http://sitedumal.net/deleta-banco.php.php existe no próprio servidor caso nao exista ele mostra a menssagem de erro. Como estou iniciando no PHP ainda, esse foi meu método que desenvolvi mas não sei se é correto. Abraço.

  • http://blog.thiagobelem.net/ Thiago Belem

    @pslucasps
    É tão inseguro quanto um include direto… A pessoa pode tentar colocar http://sitedumal.net/deleta-banco e você já era :P

    Faz uma lista de arquivos permitidos mesmo… dá mais trabalho só que quando se trata de segurança, trabalho é um mero detalhe.

  • http://thiagobelem.net/ Thiago Belem

    @pslucasps
    É tão inseguro quanto um include direto… A pessoa pode tentar colocar http://sitedumal.net/deleta-banco e você já era :P

    Faz uma lista de arquivos permitidos mesmo… dá mais trabalho só que quando se trata de segurança, trabalho é um mero detalhe.

  • Joabe

    Thiago aqui você acha dessa forma de include? acho que é segura?

    if (IsSet($pag))
    {
    if ($pag==”PainelMembro”) include(‘PainelMembro.php’);
    if ($pag==”AlterarFoto”) include(‘AlterarFoto.php’);
    }
    else
    {
    include(‘principal.php’);
    }

  • Joabe

    Thiago aqui você acha dessa forma de include? acho que é segura?

    if (IsSet($pag))
    {
    if ($pag==”PainelMembro”) include(‘PainelMembro.php’);
    if ($pag==”AlterarFoto”) include(‘AlterarFoto.php’);
    }
    else
    {
    include(‘principal.php’);
    }

  • http://blog.thiagobelem.net/ Thiago Belem

    @Joabe
    É mais segura, mas ainda é passível de erro… Faça da forma que está explicada no artigo, é a melhor opção para o seu caso.. Não há discussão.

  • http://thiagobelem.net/ Thiago Belem

    @Joabe
    É mais segura, mas ainda é passível de erro… Faça da forma que está explicada no artigo, é a melhor opção para o seu caso.. Não há discussão.

  • Joabe

    Cara, esta apresentando o seguinte erro..

    Parse error: syntax error, unexpected ‘{‘ in /home/httpd/vhosts/geografosativos.com.br/httpdocs/2009/index.php on line 111

    acho que esta faltando fechar o ‘)’

  • Joabe

    Cara, esta apresentando o seguinte erro..

    Parse error: syntax error, unexpected ‘{‘ in /home/httpd/vhosts/geografosativos.com.br/httpdocs/2009/index.php on line 111

    acho que esta faltando fechar o ‘)’

  • http://blog.thiagobelem.net/ Thiago Belem

    @Joabe
    Já fiz a correção.. Obrigado pela dica.

  • http://thiagobelem.net/ Thiago Belem

    @Joabe
    Já fiz a correção.. Obrigado pela dica.

  • Joabe

    Vlw cara..
    você esta de parabéns..
    otimo post, me ajudou bastante!

  • Joabe

    Vlw cara..
    você esta de parabéns..
    otimo post, me ajudou bastante!

  • Joabe

    Thiago, fazendo alguns teste aqui em minha página, apresentou um outro erro aqui…

    Warning: array_search() [function.array-search]: Wrong datatype for second argument in /home/httpd/vhosts/geografosativos.com.br/httpdocs/——-/index.php on line 110

    Sabe me dizer oque seria isso?

  • Joabe

    Thiago, fazendo alguns teste aqui em minha página, apresentou um outro erro aqui…

    Warning: array_search() [function.array-search]: Wrong datatype for second argument in /home/httpd/vhosts/geografosativos.com.br/httpdocs/——-/index.php on line 110

    Sabe me dizer oque seria isso?

  • http://blog.thiagobelem.net/ Thiago Belem

    @Joabe
    O tipo de variável usado no segundo argumento do array_search não é um array.

  • http://thiagobelem.net/ Thiago Belem

    @Joabe
    O tipo de variável usado no segundo argumento do array_search não é um array.

  • http://www.pequenotux.blogspot.com Willian

    É uma pergunta idiota mas eu preciso ter a extensão do mysql instalada para usa a função mysql_real_escape_string? Eu uso PDO e gostaria de me proteger desse tipo de ataque.
    Parabéns pelo blog! Muito bom! Já está nos favoritos!
    Um abraço.

  • http://www.pequenotux.blogspot.com Willian

    É uma pergunta idiota mas eu preciso ter a extensão do mysql instalada para usa a função mysql_real_escape_string? Eu uso PDO e gostaria de me proteger desse tipo de ataque.
    Parabéns pelo blog! Muito bom! Já está nos favoritos!
    Um abraço.

  • Rafael Henrique Pimenta de Mel

    Olá eu estou usando um script assim para fazer com que meus links abrirem as páginas em uma div, está seguro? pelo que testei não dá para alguem tentar incluir um link como na parte 1, ou dá? tem alguma solução melhor ou está ta boa? Obrigado.

  • Rafael Henrique Pimenta de Melo

    Olá eu estou usando um script assim para fazer com que meus links abrirem as páginas em uma div, está seguro? pelo que testei não dá para alguem tentar incluir um link como na parte 1, ou dá? tem alguma solução melhor ou está ta boa? Obrigado.

  • http://blog.thiagobelem.net/ Thiago Belem

    @Rafael
    Não há problema não.. Assim ele fica seguro. ;)

  • http://thiagobelem.net/ Thiago Belem

    @Rafael
    Não há problema não.. Assim ele fica seguro. ;)

  • http://www.lolidesign.com Yeremi

    Thiago, no caso de formulario de login como tería que ser a forma de garantir BOA segurança:
    (Estou usando o codigo de numa outra materia sua postada aqui.)

    if ($_SERVER['REQUEST_METHOD'] == ‘POST’) {

    $usuario = (isset($_POST['usuario'])) ? $_POST['usuario'] : ”;
    $senha = (isset($_POST['senha'])) ? $_POST['senha'] : ”;

    if (validaUsuario($usuario, $senha) == true) {
    header(“Location: index.php”);
    } else {
    expulsaVisitante();
    }

    }

  • Yeremi

    Thiago, no caso de formulario de login como tería que ser a forma de garantir BOA segurança:
    (Estou usando o codigo de numa outra materia sua postada aqui.)

    if ($_SERVER['REQUEST_METHOD'] == ‘POST’) {

    $usuario = (isset($_POST['usuario'])) ? $_POST['usuario'] : ”;
    $senha = (isset($_POST['senha'])) ? $_POST['senha'] : ”;

    if (validaUsuario($usuario, $senha) == true) {
    header(“Location: index.php”);
    } else {
    expulsaVisitante();
    }

    }

  • Robson

    Olá Tiago naum sou muito experiente no assunto de php e estou desenvolvendo um site para um aamigo meu! e vi esse seu post que por acaso é muito interessa..mas vamus lá
    minnha pergunta é uam pergunta básica

    eu uso assim

    $id_conto = $_GET['id_conto'];

    eu colocaria o código qeu vc falo em cima deste ou colocaria junto tipo:

    $id_conto = (int)$_GET['id_conto'];

    ? desde já agradeço

  • Robson

    Olá Tiago naum sou muito experiente no assunto de php e estou desenvolvendo um site para um aamigo meu! e vi esse seu post que por acaso é muito interessa..mas vamus lá
    minnha pergunta é uam pergunta básica

    eu uso assim

    $id_conto = $_GET['id_conto'];

    eu colocaria o código qeu vc falo em cima deste ou colocaria junto tipo:

    $id_conto = (int)$_GET['id_conto'];

    ? desde já agradeço

  • LILI

    Thiago, excelente! Tenho uma pergunta. Como fazer para evitar que um site externo inclua um arquivo de função do meu sistema? Existe isso, é possível?

    Por exemplo, suponha que eu tenho um arquivo em includes/functions.php no meu sistema. Aí se alguem em outra url colocar include(“http://www.yxyx.com/includes/functions.php”) ele poderá utilizar o conteúdo desse arquivo contra o meu sistema?

    Obrigada!!!

  • LILI

    Thiago, excelente! Tenho uma pergunta. Como fazer para evitar que um site externo inclua um arquivo de função do meu sistema? Existe isso, é possível?

    Por exemplo, suponha que eu tenho um arquivo em includes/functions.php no meu sistema. Aí se alguem em outra url colocar include(“http://www.yxyx.com/includes/functions.php”) ele poderá utilizar o conteúdo desse arquivo contra o meu sistema?

    Obrigada!!!

  • http://blog.thiagobelem.net/ Thiago Belem

    @LILI
    Não é possível… Seria uma falha de segurança enorme.

    Há outras formas de fazer isso mas não são seguras e normalmente não são permitidas na maioria dos servidores.

  • http://blog.thiagobelem.net/ Thiago Belem

    @Robson
    Você deve substituir o $id_conto = $_GET['id_conto'] por $id_conto = (int)$_GET['id_conto'].

  • http://thiagobelem.net/ Thiago Belem

    @LILI
    Não é possível… Seria uma falha de segurança enorme.

    Há outras formas de fazer isso mas não são seguras e normalmente não são permitidas na maioria dos servidores.

  • http://thiagobelem.net/ Thiago Belem

    @Robson
    Você deve substituir o $id_conto = $_GET['id_conto'] por $id_conto = (int)$_GET['id_conto'].

  • LILI

    Obrigada! Excelente artigo e explicação! Virei fã do seu Blog

  • LILI

    Obrigada! Excelente artigo e explicação! Virei fã do seu Blog

  • Robson

    Obrigado por esclarecer minha duvida!

  • Robson

    Obrigado por esclarecer minha duvida!

  • Claudio Myst

    O Thiago achei o artigo fantástico e espero encontrar muitos outros como este aqui pois não deixarei mais de participar de seu blog.

    Depois de tantas perguntas sobre o artigo eu não gostaria de fazer mais uma, mas me desculpa é inevitável pois estou iniciando na criação de temas para o WordPress e como ainda não sei o bastante tenho me baseado em outros temas e em todos os temas vejo muitos includes de arquivos e lendo seu post me veio a dúvida, fazer includes de arquivos no tema se torna uma bracha na segurança ou só é relevante quando se trata de url?

    Outra coisa sobre as urls do WordPress é a possibilidade de trocar os links do tipo
    http://www.meusite.com.br/produtos.php?id=12
    para
    http://www.meusite.com.br/2010/01/nome-do-post

    Acredito que neste caso do WordPress não seja necessário fazer alterações mirabolantes com os links mesmo usando o padrão que é
    http://www.meusite.com.br/produtos.php?id=12 estou correto?

    obrigado pelo artigo e deixa eu ir salvando aqui seu site para eu não correr o risco de perde-lo de vista. até.

  • Claudio Myst

    O Thiago achei o artigo fantástico e espero encontrar muitos outros como este aqui pois não deixarei mais de participar de seu blog.

    Depois de tantas perguntas sobre o artigo eu não gostaria de fazer mais uma, mas me desculpa é inevitável pois estou iniciando na criação de temas para o WordPress e como ainda não sei o bastante tenho me baseado em outros temas e em todos os temas vejo muitos includes de arquivos e lendo seu post me veio a dúvida, fazer includes de arquivos no tema se torna uma bracha na segurança ou só é relevante quando se trata de url?

    Outra coisa sobre as urls do WordPress é a possibilidade de trocar os links do tipo
    http://www.meusite.com.br/produtos.php?id=12
    para
    http://www.meusite.com.br/2010/01/nome-do-post

    Acredito que neste caso do WordPress não seja necessário fazer alterações mirabolantes com os links mesmo usando o padrão que é
    http://www.meusite.com.br/produtos.php?id=12 estou correto?

    obrigado pelo artigo e deixa eu ir salvando aqui seu site para eu não correr o risco de perde-lo de vista. até.

  • http://blog.thiagobelem.net/ Thiago Belem

    @Claudio
    Quando você está usando um sistema pronto como o [e apenas o] WordPress, você não precisa se preocupar com esse parâmetro “id” na URL, o WordPress já se encarrega de protegê-lo desse tipo de ataque.

    Quanto aos includes, evite.. Mas não são uma brecha de segurança não… 99,9998% dos sites feitos em PHP (e em qualquer linguagem de programação) usam include e isso não tem chance de se tornar uma brecha de segurança… Claro, faça apenas quando for necessário e saiba o que você está fazendo.. Se em um desses arquivos houver um código “falho” seu site/blog inteiro vai estar correndo risco.

    Espero ter respondido :)

  • http://thiagobelem.net/ Thiago Belem

    @Claudio
    Quando você está usando um sistema pronto como o [e apenas o] WordPress, você não precisa se preocupar com esse parâmetro “id” na URL, o WordPress já se encarrega de protegê-lo desse tipo de ataque.

    Quanto aos includes, evite.. Mas não são uma brecha de segurança não… 99,9998% dos sites feitos em PHP (e em qualquer linguagem de programação) usam include e isso não tem chance de se tornar uma brecha de segurança… Claro, faça apenas quando for necessário e saiba o que você está fazendo.. Se em um desses arquivos houver um código “falho” seu site/blog inteiro vai estar correndo risco.

    Espero ter respondido :)

  • http://designcreationwp.wordpress.com/ Claudio Myst

    Sim Thiago vc me tirou essa dúvida e muito obrigado por responde-la.

    inclusive quero deixar meus parabéns pelos ótimos artigos do seu site e pelas respostas que sempre dá aos seus leitores.

    Abraços.

  • http://designcreationwp.wordpress.com/ Claudio Myst

    Sim Thiago vc me tirou essa dúvida e muito obrigado por responde-la.

    inclusive quero deixar meus parabéns pelos ótimos artigos do seu site e pelas respostas que sempre dá aos seus leitores.

    Abraços.

  • Jeff

    Pessoal, a falha que permite login usando

    usuario = %
    passwaord = %

    É no MySql mal configurado ou programaçao do PHP??
    O programador diz que o mysql está com essa brecha, que ele corrigiu pelo PHP, já o admin do Servidor, diz que o site permitia login usando %, por falha da programação;.
    Enfim, quem está mais errado?

  • Jeff

    Pessoal, a falha que permite login usando

    usuario = %
    passwaord = %

    É no MySql mal configurado ou programaçao do PHP??
    O programador diz que o mysql está com essa brecha, que ele corrigiu pelo PHP, já o admin do Servidor, diz que o site permitia login usando %, por falha da programação;.
    Enfim, quem está mais errado?

  • http://thiagobelem.net/ Thiago Belem

    @Jeff
    O problema esta na consulta MySQL que busca pelo usuário na hora de validar os dados… Provavelmente a consulta é mais ou menos o seguinte:
    $sql = "SELECT * FROM `usuarios` WHERE `usuario` LIKE '{$usuario}' AND `senha` LIKE '{$senha}'";
    O problema é que o LIKE tem como caractere coringa o porcento (%), por isso se a pessoa inserir % nos dois campos ele vai “bater” com qualquer usuário e qualquer senha.

    Você pode ver mais sobre o LIKE nesse post: http://blog.thiagobelem.net/mysql/2009/03/06/busca-no-mysql-usando-palavra-chave-260/

    Abraços

  • http://blog.thiagobelem.net/ Thiago Belem

    @Jeff
    O problema esta na consulta MySQL que busca pelo usuário na hora de validar os dados… Provavelmente a consulta é mais ou menos o seguinte:
    $sql = "SELECT * FROM `usuarios` WHERE `usuario` LIKE '{$usuario}' AND `senha` LIKE '{$senha}'";
    O problema é que o LIKE tem como caractere coringa o porcento (%), por isso se a pessoa inserir % nos dois campos ele vai “bater” com qualquer usuário e qualquer senha.

    Você pode ver mais sobre o LIKE nesse post: http://blog.thiagobelem.net/mysql/2009/03/06/busca-no-mysql-usando-palavra-chave-260/

    Abraços

  • Allex

    Olá Thiago, bom dia.

    Primeiramente gostaria de te parabenizar pelos excelentes posts, que contribuem bastante para nós desenvolvedores, iniciantes ou não.

    Minha dúvida é a seguinte:

    Estou desenvolvendo um shopping em php, e está integrado com o pagseguro. Não sei se vc já utilizou algum código com pagseguro, mas o pagseguro recebe as variaveis como endereço do cliente, dados da compra, valor, e tudo mais através de um post.
    O problema é que esse post vem para o browser e depois o browser do cliente envia o post para o pag seguro, ou seja as variáveis vem para o browser do cliente, os campos são hidden, mas sniffando a rede eu consigo ve-los e alterá-los. Por exemplo uma compra de 100,00 posso colocar o valor de 10,00 e pagar no pagseguro.

    Como eu passo essas variaveis através do post sem passar pelo browser do cliente? Eu estava verificando e as grandes lojas não deixam os dados virem para o browser, como submarino, americanas. Existe um post servidor / servidor ?

    Obrigado

  • Allex

    Olá Thiago, bom dia.

    Primeiramente gostaria de te parabenizar pelos excelentes posts, que contribuem bastante para nós desenvolvedores, iniciantes ou não.

    Minha dúvida é a seguinte:

    Estou desenvolvendo um shopping em php, e está integrado com o pagseguro. Não sei se vc já utilizou algum código com pagseguro, mas o pagseguro recebe as variaveis como endereço do cliente, dados da compra, valor, e tudo mais através de um post.
    O problema é que esse post vem para o browser e depois o browser do cliente envia o post para o pag seguro, ou seja as variáveis vem para o browser do cliente, os campos são hidden, mas sniffando a rede eu consigo ve-los e alterá-los. Por exemplo uma compra de 100,00 posso colocar o valor de 10,00 e pagar no pagseguro.

    Como eu passo essas variaveis através do post sem passar pelo browser do cliente? Eu estava verificando e as grandes lojas não deixam os dados virem para o browser, como submarino, americanas. Existe um post servidor / servidor ?

    Obrigado

  • http://blog.thiagobelem.net/ Thiago Belem

    @Allex
    Você pode fazer isso com cURL… Tenho um <a href="http://blog.thiagobelem.net/php/tutorial-basico-de-curl-instalacao-configuracao-e-uso/" title="Tutorial básico de cURL â

  • http://thiagobelem.net/ Thiago Belem

    @Allex
    Você pode fazer isso com cURL… Tenho um

blog comments powered by Disqus