Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bem pessoal, muitas pessoas / programadores iniciantes, costumam fazer um arquivo de configuração com o banco de dados, e deixa-los expostos a acesso direto em um diretório e/ou na raiz do site.
Para evitar o acesso direto a tal arquivo, deve se fazer o seguinte:
$pagina="pagina.php"; //aqui colocariamos o nome da pagina.
if(basename($_SERVER["PHP_SELF"])=='$pagina'){
die("<script>alert('Sem permição de acesso !')</script>\n<script>window.location=('index.php')</script>");http://www.site.com.br/pagina.php
imprime no navegador a mensagem de acesso restrito e em seguida a pessoa é redirecionada para a página inicial.
2º Método:
if (eregi("pagina.php", $_SERVER['SCRIPT_NAME'])){
die ("<script>alert('Sem permição de acesso !')</script>");
}Espero que ajude, isso é para aqueles que estão começando agora, e não tem noção de segurança. http://forum.imasters.com.br/public/style_emoticons/default/natal_noel.gif>
Boa dica! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif
Três observações:
1. Em vez de definir o nome do arquivo em cada um deles, pode-se usar a constante __FILE__. Use basename() também. Isso facilita e, se precisar alterar o nome de um arquivo, não é necessário editar o valor da variável. ;)
2. Se o suporte a JavaScript estiver desabilitado, a página ficará em barnco. Seria interessante redirecionar, com header(), para uma página de erro, ou mesmo para a index.
3. No PHP 6, algumsas funções aliases serão extintas. Receio que die() seja uma delas, mas é uma suposição minha; nada confirmado. Seria interessante mudar para exit().
http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif
Opa !...
Claro Beraldo !, estás correto !
Ai o pessoal, juntamente com as suas dicas, vão adaptando ai as suas necessidades !
Abraço. http://forum.imasters.com.br/public/style_emoticons/default/natal_happy.gif
Cara sou novo no ramo...
Tem como explicar melhor como eu aplico esse comando...
Vou explicar um pouquinho...
Mexo com Servidor de MuOnline... Mas prefiro fazer meu própio site, muitos pegam na net , mas vem com varios bugs (causados de propósito).
Tenho que preoteger o maximo minhas páginas pois se não pelas paginas eles acabam deletando o banco de dados...
Perguntas;;
minhas páginas aparecem em um inframe... tem como fazer um jeito que elas só abram no infra,me preincipal...
exemplo:
www.site.com.br/index.php > aki vai aparecer tudo do site...
www.site.com.br/cadastro.php > vaia aparecer a pagina cadastro fora do inframe... como evitar isso ?
Outra:
eu as dividi.. tipo:
tem a pasta do site "www", dentro desta pasta tem a pagina principal, a da configuração.. + uma pasta inclui e uma modulos...
o corpo do site fica em modulos.. e em inclui fica as css, arquivos para proteger o site etc... como colocarum link na pagian principal que não pecise de colocar assim :
exemplo:
incio >(vamos supor que seja um link ai coloco para redirecionar para: modules/cadastro.php) tem como colocar logo tipo
inicio >(sei la vamos supor index.php?de=cadastro) isso foi só um exemplo não sei como funciona direito esse sistema...
Vlra e um abraço..
Olá Negociante pra sua sorte também crio sites para servidores de MUOnline, e te digo que é melhor fazer mesmo pois, já detectei várias falhas orríveis em sites ue tem prontos por feitos com gambiarras.
Enquanto a proteger suas páginas você deve incluir isso no início de seu documento:
if (eregi("pagina.php", $_SERVER['SCRIPT_NAME'])){
die ("<script>alert('Sem permição de acesso !')</script>");
}porém ninguém conseguirá abrir sua página.
quanto aos iframes, diria que tem como fazer isso com JS (JavaScript), e não sei como fazer ainda.
enquanto ao seu menu, não á problemas em le ficar assim, mais de qualquer forma pra você mudar para aquele estilo vai te dar muito trabalho, é melhor deixar como está.
Poxa cara que legal...
Muito obrigado mesmo.....
Como sou fraquinho no assunto ainda vou ter várias dúvidas direto..rsrsrsr
Se estiver ao teu alcanse e poder me ajudar seria uma boa...
não costumo deixar o msn porque bom mesmo é postar no forum para tirar dúvidas de outras pessoas tbm...
mas se quizer adicionar fica a tua escolha
reenan_18@hotmail.com
if (eregi("dad.php", $_SERVER['SCRIPT_NAME'])){
die ("<script>alert('Sem permição de acesso !')</script>\n<script>window.location=('index.php')</script>");
}
Ficou show
vlw e Abraços..
No meu site está desta forma, e mesmo assim, afirmam que continuam invadindo, pode ser verdade?
CODE
<?PHP
if (eregi("includes/clean_var.php", $_SERVER['SCRIPT_NAME'])) { die ("Access Denied!"); }
function clean_var($var=NULL) {
$newvar = @preg_replace('/[^a-zA-Z0-9\_\-\.]/', '', $var);
if (@preg_match('/[^a-zA-Z0-9\_\-\.]/', $var)) { }
return $newvar;
}
?>
Se tiver algo errado, poderiam me ajudar a corrigir para eu ter total segurança nas minhas ´páginas?
Tu deve colocar esse script na própria página que se quer protejer colega.
Tu deve colocar esse script na própria página que se quer protejer colega.
Usando esquema de include...
Não pode utilizar include da forma que está ai, pois ele teria que ter uma página para cada include que ele tivesse que dar, o melhor a fazer é uma função pra passar o nome da página para o script que bloqueará a mesma, então ficaria assim:
bloquear.php
<?php
function trancar_pagina($nome){
if (eregi("$nome", $_SERVER['SCRIPT_NAME'])){
die ("<script>alert('Sem permição de acesso !')</script>");
}
}
?>
página a ser protegida:
index.php
<?php
require('bloquear.php');
trancar_pagina('index.php');
?>
...Abraços.Sim, ela será uma function que será chamada com um include na pág onde você quer a proteção.
Valew
Pessoal, sou novato e tenho uma dúvida, eu queria saber como faz para restringir as paginas para que apenas os usuários cadastrados tenham acesso, por exemplo, irei disponibilizar os dados das apólices de seguros de uma empresa na internet, mas apenas o cliente tem acesso as suas informações..
Pessoal, sou novato e tenho uma dúvida, eu queria saber como faz para restringir as paginas para que apenas os usuários cadastrados tenham acesso, por exemplo, irei disponibilizar os dados das apólices de seguros de uma empresa na internet, mas apenas o cliente tem acesso as suas informações..
Faça um sistema de login
Há diversos artigos e scripts prontos sobre isso
outra forma legal tb de fazer isso eh usando define()
=D
Obrigado pessoal, vou tentar.
Há uma forma mais simples, se você tiver colocado este arquivo em um diretório exclusivo para conexão com banco de dados, basta proteger este diretorio. Um página no seu site que esteja em pasta diferente desta conseguira acessar o arquivo sem precisar autenticação. Utilizo isso com thumb e funciona!
Hum.. muito bom...
Tem um site de uma empresa grande que eu estava pra comprar um produto e deu um erro, aqueles de conexao.
Resolvi ver o caminho e me aparece o arquivo conexao.inc.... com senha, ip do phpmyadmin, usuario. tudo!
Acessei, tava la, abrindo tudo certinho... Entao informei por email ao webmaster... Acho que ele precisa acessar mais o imasters. hehe
Abs
>
Hum.. muito bom...
Tem um site de uma empresa grande que eu estava pra comprar um produto e deu um erro, aqueles de conexao.
Resolvi ver o caminho e me aparece o arquivo conexao.inc.... com senha, ip do phpmyadmin, usuario. tudo!
Acessei, tava la, abrindo tudo certinho... Entao informei por email ao webmaster... Acho que ele precisa acessar mais o imasters. hehe
Abs
Exatamente... hehe
não se deve usar mais arquivos INC para gravar dados do mysql para conexão, pois fica visível e acessível via URL.
se quiser explicitar o INC, crie o arquivo *.inc.php. Assim não há como acessá-lo diretamente pela URL, já que o servidor interpretará como PHP
Isso ai Beraldo.
Opa.. galera.. então ficaria:
<?php
$pagina = __FILE__; //constante para pegar o nome do arquivo
//echo $pagina; // C:\Apache2.2\htdocs\teste.php
$p = explode('\\', $pagina); // por causa do que foi retornado
$arq = $p[count($p)-1]; //pegando a última posição do array, que é então o nome do arquivo
if( basename($_SERVER["PHP_SELF"]) == $arq )
{
exit( Header('Location: index.php') );
}
?>
Não deve aparecer oque está aqui ? ainda não mandei pra um host, mas localmente funcionou..Fala pessoal tudo bem?
De fato a segurança é as vezes negligenciada ou até mesmo esquecida por parte de pessoas que na verdade não conhecem muito bem ou passam despercebidas pela mente fervendo de variáveis e etc.
Como já tinha me deparado com o problema do aceso direto aos arquivos que contém as configurações e informações do banco, procurei e achei este tópico.
Mas (...tinha que ser principiante né! rsrsrs) tentei dos 3 jeitos explicados aqui como segue:
1° com o seguinte código:
$pagina="conexao.php"; //o nome da minha página que contem os dados de conexao.
if(basename($_SERVER["PHP_SELF"])=='$pagina'){
die("<script>alert('Sem permissao de acesso !')</script>\n<script>window.location=('index.html')</script>");2° com o seguinte código:
if (eregi("conexao.php", $_SERVER['SCRIPT_NAME'])){
die ("<script>alert('Sem permissao de acesso !')</script>");
}Resultado: Tanto no acesso via browser quanto via formulário.html resulta em uma página com uns caracteres estranhos.
3° com o seguinte código:
$pagina = __FILE__;
$p = explode('\\', $pagina);
$arq = $p[count($p)-1];
if( basename($_SERVER["PHP_SELF"]) == $arq )
{
exit( Header('Location: index.html') );
}Resultado: Nenhum, consigo acessar direta e indiretamente!
Ou seja, alguém pode jogar uma bóia para esse humilde náufrago?
muito simples fazer isto, coloque uma variável qualquer no index.php com o valor TRUE e depois em todas as páginas secundárias verifique se a variável = true, se não for utilize o die(); ou exit para sair do script...
index.php
>
$PRINCIPAL = true;
// continua index
>
if ($principal != true)
{
die();
}
// continuação da pag sec.
E como eu faria pessoal pra proteger um diretório, pq se eu tenho um dir com vários aquivos php, se não tiver um index na pasta, os mesmo são listados e podem ser baixados facilmente, como eu poderia bloquear o acesso a esse diretório sem ficar colocando index em cada um que eu precise bloquear?
Já tentei usando o .htaccess mas ele bloquei até se você precisar do arquivo em outros páginas.
Att
Luis Carlos
.htaccess é recursivo. Ele afeta o direório atual e todos os sub-diretórios. Acho a melhor orpção.
VocÊ pode usar uma destas opções no .htaccess:
IndexIgnore *
ou
Options -Indexes
Outra forma é retirar a permissão de leitura do diretório (chmod via FTP ou em linha de comando - via ssh)
Valeu Beraldo! vou testar aqui!
Att
Luis Carlos
Boa dica! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif
Três observações:
1. Em vez de definir o nome do arquivo em cada um deles, pode-se usar a constante __FILE__. Use basename() também. Isso facilita e, se precisar alterar o nome de um arquivo, não é necessário editar o valor da variável. ;)
2. Se o suporte a JavaScript estiver desabilitado, a página ficará em barnco. Seria interessante redirecionar, com header(), para uma página de erro, ou mesmo para a index.
3. No PHP 6, algumsas funções aliases serão extintas. Receio que die() seja uma delas, mas é uma suposição minha; nada confirmado. Seria interessante mudar para exit().
http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif