Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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
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á
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
desculpe minha ignorânica mas não entendi... pode me dar um exemplo...?
OBrigado
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:
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
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.
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..
Veja um exemplo:
PHP
if (preg_match("/^(http://|www.|ftp://)/i", $string) || preg_match("/(.jpg|.gif|.dat|.txt|.sql)$/i", $string)){
[echo](http://br.php.net/echo) "erro";
}
else
{
[echo](http://br.php.net/echo) "ok";
}Obrigado Beraldo...
[resolvido]
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.