tubadc 0 Denunciar post Postado Dezembro 14, 2007 Achei uma função na web não lembro onde e dei uma atualizada nas tags e tal... gostaria da ajuda de vocês para dar uma incrementada nela no sentido de tornar o mais seguro possível a inclusão de urls <?php function ant_phpinject($pagina){ //Verifica se a string passada possui algum trecho invalido //Caso tenha mostra uma mensagem de erro if(eregi("http|www|ftp|.dat|.txt|.gif|wget|from|select|update|insert|delete|where|dro table|show ables|#|\*|--|\\\\", $pagina)) { echo "Página Inválida! Estamos redirecionando você para página inicial."; echo "<meta http-equiv=\"refresh\" content=\"2; URL=index.php\">"; }else{ if(!empty($pagina)) { @include ("$pagina.php"); }else{ @include ("index.php"); //essa seria a sua página principal } } } ?> Gostaria de por exemplo fazer alguma verificação da existência do arquivo e tal... enfim... sugestões.....:) Vlw Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Dezembro 14, 2007 Voc6e pode usar file_exists() para ter certeza de que a página existe. Se não existir, redirecione para a index, ou para uma página de erro. Compartilhar este post Link para o post Compartilhar em outros sites
tubadc 0 Denunciar post Postado Dezembro 14, 2007 legal! atualizei <?php function ant_phpinject($pagina){ //Verifica se a string passada possui algum trecho invalido //Caso tenha mostra uma mensagem de erro if(eregi("http|www|ftp|.dat|.txt|.gif|wget|from|select|update|insert|delete|where|drop table|show ables|#|\*|--|\\\\", $pagina)) { echo "Página Inválida! Estamos redirecionando você para página inicial."; echo "<meta http-equiv=\"refresh\" content=\"2; URL=index.php\">"; }else{ if(!empty($pagina)) { if (file_exists("$pagina.php")) { @include ("$pagina.php"); } else { echo "Página Inexistente! Estamos redirecionando você para página inicial."; echo "<meta http-equiv=\"refresh\" content=\"2; URL=index.php\">"; } }else{ echo "Página Indefinida! Estamos redirecionando você para página inicial."; echo "<meta http-equiv=\"refresh\" content=\"2; URL=index.php\">"; } } } ?> Existe algo mais para deixar ainda mais seguro...? Obrigado desde já Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Dezembro 14, 2007 Voc6e pode melhorar a Expressão Regular: faça a validação com http://, ftp://, www.. Você também pode verificar se esses valores estão no começo da string, para que arquivos assim não sejam vloqueados: sobre_o_www.php[/b]. Você também pode verificar se as extensãoes estão no fim da string. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
tubadc 0 Denunciar post Postado Dezembro 14, 2007 desculpe minha ignorânica mas não entendi... pode me dar um exemplo...? OBrigado Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Dezembro 14, 2007 Há dois modificadores para isso: ^ -> casa a ER no início da string $ -> casa a ER no fim da string Para entender melhor, tem que estudar Expressões Regulares: http://guia-er.sourceforge.net Compartilhar este post Link para o post Compartilhar em outros sites
tubadc 0 Denunciar post Postado Dezembro 14, 2007 ficaria assim então if(eregi("^[www]|ftp://|http://|http|ftp|.dat|.txt|.gif|wget|from|select|update|insert|delete|where|drop table|show tables|#|\*|--|\\\\", $pagina)) ? Obrigado Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Dezembro 14, 2007 não. Você terá de separar, chamar eregi (prefira preg_match) mais de uma vez, para validar o início e o fim da string, com ERs diferentes. Compartilhar este post Link para o post Compartilhar em outros sites
tubadc 0 Denunciar post Postado Dezembro 14, 2007 Obrigado pela paciência mas sou ainda leigo em expressões regulares e estou tentando aprender... teria como você me mostrar na prática, como ficaria isso no if acima.... se possível claro... OBrigado mais uma vez e desculpe o incomodo ae.. Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Dezembro 14, 2007 Veja um exemplo: PHP if (preg_match("/^(http://|www.|ftp://)/i", $string) || preg_match("/(.jpg|.gif|.dat|.txt|.sql)$/i", $string)){ echo "erro"; } else { echo "ok"; } Compartilhar este post Link para o post Compartilhar em outros sites
tubadc 0 Denunciar post Postado Dezembro 17, 2007 Obrigado Beraldo... [resolvido] Compartilhar este post Link para o post Compartilhar em outros sites