• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Romanovs

Sugestoes precisam-se: Painel de Noticias

20 mensagens neste tópico

Ora bem,

andava ja desde a uns tempos a trabalhar neste projecto.

É um pequeno site de notícias ainda muito rudimentar

Permite:

Adicionar Noticias(Admin Set)

Adicionar Comentários(Admin Set)

Editar Notícias(Admin Set) e Membros(apenas admin/proprio)

Eliminar Notícias(Admin Set)

Contas de membros(com passe encriptada com md5()) com tres niveis diferentes: Administrador, Colaborador, Utilizador Registado

Painel de Administração onde pode controlar desde a largura das páginas ao title

Na segunda versão pretendo:

Meter sistema de mensagens privadas

Perfis(nesta versao tem o link mas ainda nao tem a pagina perfil.php)

Proteger as sessoes e meter sistema de "lembrar-me"

A primeira versão que está em baixo(versão de teste) para download ainda não está muito segura, mais tarde vou protegela contra session hijacking e afins (se perceber como funciona aquilo do SQL INJECTION)

Anyway o que eu queria pedir era que analizassem o código (está muito simples mas pronto) e me dessem comentários do que poderei fazer para melhorar a segurança e o código.

Download

Ver

Esta certo que não é tao bom como o Joomla! mas é o que se arranja  :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Dei só uma vista de olhos muito superficial, convém usares sempre as super globais e teres mais atenção na segurança.

Convém melhorares o sistema de login, e as validações que fazes para verificar se o utilizador se encontra autenticado ou não, caso contrário é fácil de quebrar a segurança do site.

Bom trabalho.

Nota: Para além do que já foi referido abaixo pelos outros membros, convém também que filtres os dados inseridos na base de dados, neste momento é possível ter utilizadores com nomes duplicados "aparentemente".

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

:)

estive a olhar para este projecto e foi um deja-vous, parece que me revi quando fiz a minha primeira aplicação em php do género.

Ora bem, deste-lhe bem, está aí código funcional, não está mal escrito e até relativamente bem organizado.

No entanto aconselhava isto:

Um pouco mais de template, usa um sistema de templates como o que vem na ultima edição na revista.

Muda a autenticação, todo e qualquer parsing, e outras pequenas tarefas para um ficheiro tipo funcoes.php ou coisa do estilo.

Para teu bem indenta o código de forma um pouco mais cuidada.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ao ver a noticia:

Warning: mysql_close(): supplied argument is not a valid MySQL-Link resource in /home/www/romanovs.awardspace.com/noticias/ver_noticia.php on line 54

Warning: mysql_select_db(): supplied argument is not a valid MySQL-Link resource in /home/www/romanovs.awardspace.com/noticias/ver_noticia.php on line 67

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

marinheiro já resolvi isso era um problema que nao reparei ao criar o ficheiro instalar.php

Já arranjei isso dos nomes de utilizadores duplicado também

Vou ver disso dos templates se compreendo como se usam

Ao login vou meter como variavel de sessao o IP e o browser do utilizador encriptado sempre dificulta o trabalho de quem tiver mas intencoes

Que mais acham que deverei mudar na autenticaçao?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Vou ver o código amanha edito esta mensagem com a minha opinião ;)

Bom, pelo que vi, achei que falta um pouco de organização do código. Além disso uma coisa que também me apercebi foi que o instalar.php tem alguns bugs, por exemplo não cria a DB automaticamente. E ao fazer logout devias destruir a sessao.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Acho que és dos meus, adoro programar mas odeio de morte criar designs... Já vi que tens feito alterações ao código, pode ser que deite o olho à próxima "release"  ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Os problemas de segurança persistem!

Qualquer utilizador pode ter acesso à área de administração.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

qualque utilizador pode aceder à area de administração???

a mim quando entro com um nivel menor que 3(administrador) diz que nao estou autorizado.

if($s_nivel==3){

/*Painel*/

} else {  echo "Não está autorizado.<br>$s_nivel";}

LuRsT

explica isso da falta de organizaçao no codigo ;) :S

ja meti o session_unset() no sair para alem do session_destroy() penso que resolve

P.S. O que acham de meter isto num ficheiro funcoes.php (como sugerido acima) para evitar session_hiacking

<?
session_start();
function seguranca()
{
$browser = md5(get_browser());
$ip = md5($_SERVER['REMOTE_ADDR']);
if ($s_browser != $browser || $s_ip !=$ip)
{
session_unset();
session_destroy();
echo "Aparentemente o seu IP ou Browser foram alterados durante a sessão.<br>";
echo "Sessão Destruída";
}

}

?>

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

romanov, coloca um user não existente no login e experimenta a entrar...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

foi o que fiz

criei uma nova conta e aparecia a mensagem de erro

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

não é criar uma nova conta... é tentar entrar sem criar a conta...

vê como aparece o erro...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

a mesma coisa claro XD

os templates sao incluidos pelo require certo?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

mas é tua intenção que a mensagem apareça algumas 200 vezes?

outra coisa, o site está lento pra caramba, como dizem os brasucas...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

a minha intencao e que aparece a todos menos ao administrador

isso do site deve ser por causa do servidor (coisas gratis) vou ver se arranjo outro

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não usas classes, aparentemente não usas funcoes, tens muitas variaveis e querys numa mesma página e além disso tens uma identação que não acho ser a mais correcta:

if ($nome && $mail && $passe1 && $passe2){
if ($nome){
   if ($mail) {
      if ($passe1) {
         if ($passe2) {
            if ($passe1==$passe2) {
-----------------------------------------//-----------------------------------------
              } else { echo "Nome de Utilizador em uso.<br>Escolha outro.<br><br><a href=\"registo.php\">Voltar</a>"; }
            } else { echo "As palavras-passe não correspondem.<br><br><a href=\"registo.php\">Voltar</a>"; }
         } else { echo "Não repetiu a palavra-passe<br><br><a href=\"registo.php\">Voltar</a>"; }
      } else { echo "Não introduziu a palavra-passe<br><br><a href=\"registo.php\">Voltar</a>"; }
   } else { echo "Não introduziu e-mail.<br><br><a href=\"registo.php\">Voltar</a>"; }
} else { echo "Não introduziu nome.<br><br><a href=\"registo.php\">Voltar</a>"; }

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

qualque utilizador pode aceder à area de administração???

a mim quando entro com um nivel menor que 3(administrador) diz que nao estou autorizado.

if($s_nivel==3){

/*Painel*/

} else {  echo "Não está autorizado.<br>$s_nivel";}

Isso não chega, como o host tem as registar globals on, basta que adiciones no url s_nivel=3, ou seja, ao fazer isso em qualquer das páginas da administração, o utilizador tem acesso de administrador.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ok, muito bem mas como disse no primeiro post:

A primeira versão que está em baixo(versão de teste) para download ainda não está muito segura, mais tarde vou protegela contra session hijacking e afins (se perceber como funciona aquilo do SQL INJECTION)

Anyway o que eu queria pedir era que analizassem o código (está muito simples mas pronto) e me dessem comentários do que poderei fazer para melhorar a segurança e o código

e não apenas que dissessem que a segurança e má,  isso já eu sei

Atras coloquei uma funcao para melhorar a segurança mas ninguem viu aparentemente vejam se esta (melhorada):

function segur_mais(){
if(isset($s_browser)){ /*Não fazia sentido incluir os que não fizeram login pois não?*/
$browser = md5(get_browser());
$ip = md5($_SERVER['REMOTE_ADDR']);
$rsec = mysql_fetch_array(mysql_query("SELECT nome, mail, nivel, passe, id FROM membro WHERE temp_brow='$browser' "));
if($ip != $_SESSION['s_ip'] || $_SESSION['s_nome'] != $rsec['nome'] || $_SESSION['s_mail'] != $rsec['mail'] ||  $_SESSION['s_nivel'] != $rsec['nivel'] || $_SESSION['s_passe'] != $rsec['passe'] || $_SESSION['s_id'] != $rsec['id'] || $_SESSION['s_browser'] != $browser){
session_unset();
session_destroy();
echo "Aparentemente o seu IP ou Browser foram alterados durante a sessão.<br>";
echo "Sessão Destruída";
}
}
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Perdoem-me a ignorância, mas de onde surgiram essas variáveis $s_nome, $s_ip, etc? Não as vejo a serem inicializadas em lado nenhum... será que são... será... não pode ser... já ninguem usa isso... mas parece...

REGISTER_GLOBALS ON??!!!  :eek:

Não sou nenhum perito em segurança, mas inicializa sempre as tuas variáveis antes de as usares! Session hijacking é a última das tuas preocupações quando tens este tipo de vulnerabilidade no código.

Espero que os comentários do pessoal aqui no fórum te estejam a ajudar a construir um site mais seguro!

Abraço e boa sorte  ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

as que começam por $s_ são variáveis de sessão definidas em entrar.php

Se eu usar p.e. $_SESSION['xxxxxxxx'] em vez de as nomear como variaveis aumenta a segurança?

Mais medidas de segurança?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora