Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Alex Cota

Segurança no site

Recommended Posts

estou aki de novo, encomodando vcs,

 

seguinte, descobri uma falha no meu site, eu fiz a area de login com o MX Kollection, so q eu percebi q se eu digitar assim localhost/lj/admin/index2.php, ele entra no painel sem precisar logar, ja tentei colocar um .htacess mas ta dado erro 500.

 

agradeço a vcs pela ajuda ai

Compartilhar este post


Link para o post
Compartilhar em outros sites

Alex, antes de colocar qualquer código, como está sua estrutura de diretórios ?

 

Por exemplo:

/

/index.php

/admin

/admin/index2.php

/admin/outroarquivo.php

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Alex, para barrar acesso a paginas restritas, você deve obrigar o usuario a fazer o login. por exemplo se o usuario digitar na url localhost/lj/admin/index2.php sem ele ter passado pelo login você redirecinaria ele para a pg de login.

na pagina do painel de controle você configura as sessoes

 

//nas primeiras linhas do php verifique a session
session_start();
if(!$_SESSION["logado"]){ // se nao passou pelo login
   header("location:login.php"); // redireciona para o login
}

e na pagina de login, após validar nome e senha você coloca a session tbm

 $_SESSION["logado"] = true;
 // nao esqueca de iniciar a sessao na primeira linha do codigo (session_start)

com isso, apos o usuario efetuar o login, ele "ganha" uma sessao de logado, dai ele tem permissao para usar o painel, caso alguem tente acessar o painel sem efetuar o login ele sera redirecionado para o login.

Compartilhar este post


Link para o post
Compartilhar em outros sites

no momento eu to rodando local e ta assim lj/admin/index.php o painel administrativo

 

E o que é essa index2.php que você citou no primeiro post ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

quando loga se vai para index2, sera q e pq estou rodando localmente q esta entrando nas outras paginas

 

esse codigo e do login do MX K ollection

// Load the common classes
require_once('../includes/common/KT_common.php');

// Require the MXI classes
require_once ('../includes/mxi/MXI.php');

// Load the tNG classes
require_once('../includes/tng/tNG.inc.php');

// Load the KT_back class
require_once('../includes/nxt/KT_back.php');

// Make a transaction dispatcher instance
$tNGs = new tNG_dispatcher("../");

Compartilhar este post


Link para o post
Compartilhar em outros sites

outro problema tbem e o envio de email por php

 

 

Warning: mail() [function.mail]: "sendmail_from" not set in php.ini or custom "From:" header missing in C:\wamp\www\lojacmp\enviar_contato.php on line 37

 

Warning: mail() [function.mail]: "sendmail_from" not set in php.ini or custom "From:" header missing in C:\wamp\www\lojacmp\enviar_contato.php on line 44

Mensagens Recebidas com Sucesso

 

<?php 

/* Enviar E-mail com Resposta Automática
* Desenvolvido por: Gabriel Pinheiro
* Data: 04/12/2007
*/


// Recebendo os dados passados pela página "form_contato.php"

$recebenome = $_POST['nome'];
$recebemail = $_POST['email'];
$recebetelefone = $_POST['telefone'];
$recebeassunto = $_POST['assunto'];
$recebemsg  = $_POST['mensagem'];

// Definindo os cabeçalhos do e-mail
$headers = "Content-type:text/html; charset=iso-8859-1";

// Vamos definir agora o destinatário do email, ou seja, VOCÊ ou SEU CLIENTE

$para = "comercio_mp@hotmail.com";

// Definindo o aspecto da mensagem

$mensagem   = "<h3>De:</h3> ";
$mensagem  .= $recebenome . $recebemail;
$mensagem  .= "<h3>Assunto:</h3>";
$mensagem  .= $recebeassunto;
$mensagem  .= "<h3>Mensagem</h3>";
$mensagem  .= "<p>";
$mensagem  .= $recebetelefone . $recebemsg;
$mensagem  .= "</p>";

// Enviando a mensagem para o destinatário

$envia =  mail($para,"E-mail do Site",$mensagem,$headers);
  
// Envia um e-mail para o remetente, agradecendo a visita no site, e dizendo que em breve o e-mail será respondido.

$mensagem2  = "<p>Olá <strong>" . $recebenome . "</strong>. Agradeçemos sua visita e a oportunidade de recebermos o seu contato. Em até 48 horas você receberá no e-mail fornecido a resposta para sua questão.</p>";
$mensagem2 .= "<p>Observação - Não é necessário responder esta mensagem.</p>";

$envia =  mail($recebemail,"Sua mensagem foi recebida!",$mensagem2,$headers);


// Exibe na tela a mensagem de sucesso, e depois redireciona devolta para a página de contato.
  
echo "Mensagens Recebidas com Sucesso!";
echo "<meta http-equiv='refresh' content='2;URL=faleconosco.php'>";


?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara. pra poder funcionar o envio de email localmente, você precisaria instalar na sua maquina um servidor de email, sem esse servidor você nao vai conseguir testar os envios e emails, se você não quiser instalar esse servidor, a solução seria "upar" seus arquivos para um servidor remoto tipo locaweb, uol etc...

procure no baixaki por servidores de email...

 

abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara não conheço essa classe MX Kollection, mas da forma tradicional, é como o jpraminelli disse.

 

Eu, normalmente, em minhas aplicações, tenho um arquivo que chama auth.php que verifica a autenticação do usuário, e também a sua sessão atual.

 

Então quando o usuário faz o login, antes de ir para index.php, ele vai para auth.php. Se for autenticado, ele redireciona para index.php.

 

Daí todas as páginas do site, inclui o auth.php em primeiro lugar, que faz a verificação se a sessão do usuário está ok, se não estiver ok ele redireciona para login.php.

 

Desta forma, quando o usuário visitar o painel (ex.: http://www.meuquerid...panel/index.php), antes de tudo o auth.php verificará se o cidadão já está com sessão, se não ele joga para o login.php.

 

Complico um pouquinho para entender, né??? :P

 

Deixe-me explicar de uma forma mais simples:

 

  • 1. Usuário tenta acessar http://www.meuquerid...panel/index.php, que por sua vez possui incluso o auth.php em primeiro lugar para verificar a sessão, se ele estiver com sessão ok, nada faz e o usuário continuará navegando normalmente pelo painel, caso contrário, o auth.php redirecionará ele para a página login.php.
  • 2. Na página login.php, unica coisa que tem é o formulário que na ação do submit as informações serão enviadas para auth.php que fará toda a papelada de autenticação, e se autenticar redireciona para index.php, caso contrário, volta para login.php para o cara tentar se logar novamente.
  • 3. Ao usuário tentar acessar http://www.meuquerid...l/cadastrar.php o mesmo processo do primeiro item se repetirá.
Essa é a lógica que eu utilizo...

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu, normalmente, em minhas aplicações, tenho um arquivo que chama auth.php que verifica a autenticação do usuário, e também a sua sessão atual.

 

Ola lucasmartins.com.br,

você poderia postar o código dessa sua página auth.php???

 

Agradecido pela atenção...

Boa noite a todos!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola lucasmartins.com.br,

você poderia postar o código dessa sua página auth.php???

 

Agradecido pela atenção...

Boa noite a todos!!

 

Certo, acabei de comentar todo o código para vocês entenderem cada etapa do arquivo... mas não sei se é o melhor jeito... eu fiz e tá dando certo aqui... abraços...

 

obs: as consultas são feitas no módulo Model... não posso ficar colocando aqui pra vcs...

 

<?php
session_start(); // inicia sessão

if ($_GET['g'] == "auth") { // Verifica se a solicitação vem pelo form de login

isset($_SESSION['ref']) ? $_SESSION['ref'] = $_SESSION['ref'] : $_SESSION['ref'] = "index.php"; // Verifica se existe uma página "referer"

// inclui arquivos de configuração, auto carregamento e o módulo de controle de administradores respectivamente.
require('includes/configs.inc.php');
require('includes/autoload.php');
require('modules/servlet/AdminsController.php');

$administrador = $administradorController->Autenticar($_POST['usuario'], md5($_POST['passw'])); // Cria o administrador

if ($administrador) { // Verifica se existe o administrador ou não
	$_SESSION['autentica'] = $administrador; // Coloca a array em uma session

	if ($_POST['lembrar']) { // Verifica se o usuário deseja gravar as informações para não ter que se logar novamente na proxima sessão
		setcookie("adm_".$config['nome']."[user]",$_POST['usuario'], time()+3600*24*15);
		setcookie("adm_".$config['nome']."[passw]",md5($_POST['passw']), time()+3600*24*15);
	}

	header('Location: '.$_SESSION['ref']); // Redireciona para a página que o usuário tentava acessar
} else { // Se não existe...
	header('Location: login.php?e=1'); // Redireciona para login.php informando o erro
}

} else { // Se a solicitação não vir pelo form de login... mas sim de uma tentativa de acesso de uma página restrita...

if ($_SESSION['autentica'] == NULL || !isset($_SESSION['autentica'])) { // Se não existe a sessão autentica ou é nula...

	require('includes/configs.inc.php'); // inclui um arquivo q contém as configurações do site

	if (isset($_COOKIE['adm_'.$config['nome'].''])) { // Verifica se este usuário possui o cookie com um usuário válido...

		// inclui arquivos de auto carregamento e módulo de controle do administrador
		require_once('includes/autoload.php'); 
		require_once('modules/servlet/AdminsController.php');

		// cria o administrador
		$administrador = $administradorController->Autenticar($_COOKIE['adm_'.$config['nome']]['user'], $_COOKIE['adm_'.$config['nome']]['passw']);

		if ($administrador) {
			$_SESSION['autentica'] = $administrador; // guarda na sessão
			header('Location: index.php'); // redireciona para a primeira página do sistema
		} else {
			header('Location: login.php');
		}

	} else { // Se não possui o cookie

		if (substr(basename($_SERVER['PHP_SELF']), 0, 5) != "login") { // se está página não for a página login, redireciona para a página login.php
			$_SESSION['ref'] = $_SERVER['REQUEST_URI'];
			header('Location: login.php?a=1');
		}

	}

}

/*


*/
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Certo, acabei de comentar todo o código para vocês entenderem cada etapa do arquivo... mas não sei se é o melhor jeito... eu fiz e tá dando certo aqui... abraços...

 

Agradeço por ter postado o código...

Vou dar uma olhada nele.. Mas pelo que olhei, realmente é complexo... Não sei se poderia ajudar ou deixar com mais dúvidas ainda, rsrsrrsrs

Mas depende muito do nível de conhecimento da pessoa.

 

Mais uma vez, obrigado por ter postado e desculpem me meter no tópico!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não analisei o script inteiro, mas o ternário poderia ser feito assim:

$_SESSION['ref'] = ( isset($_SESSION['ref']) )? $_SESSION['ref'] : 'index.php'; // Verifica se existe uma página "referer"

Compartilhar este post


Link para o post
Compartilhar em outros sites

so o seguinte como faço pra usar uma senha com criptografia????

eu coloco no mx pra criptografia e como coloco no banco /??

 

Basta colocar a linha de codigo abaixo na hora de criar o usuário.

 

= mysql_query("INSERT INTO `login`( `nome`, `senha`) VALUES ('$nome',md5('$senha'))") or die(mysql_error());

Falou!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não analisei o script inteiro, mas o ternário poderia ser feito assim:

$_SESSION['ref'] = ( isset($_SESSION['ref']) )? $_SESSION['ref'] : 'index.php'; // Verifica se existe uma página "referer"

Fala Grande William...

 

Pois é, sempre tenho dúvida como deixar o ternário... é que eu sempre imagino o seguinte: Condição -> Operação...

 

Então sempre começo pela condição (exemplo: isset($_SESSION['ref']) ?) e depois a operação... mas não sei bem qual é a melhor prática aí...

 

E se você puder análisar o código todo melhor ainda ^^ ... 2 cabeças análisam melhor q 1...

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.