Jump to content


Carlos Eduardo.

Member Since 24/02/2011
Offline Last Active 10/03/2011, 18:39
-----

Topics I've Started

Json Decode

25/02/2011, 15:11

Estou com um sistema de resposta via JSON, e estou usando curl para receber as respostas e assim usar decode.
O script ao receber o JSON ele mostrar os dados que foram recebidos, segue exemplo abaixo:

{"info":{"id":"10","ts":"1"}}


Estou tentando mostrar um dado único usando:

echo '<p>Resultado: '.$json['info']['ts'].'';


Nada acontece, qual problema ? Já tentei usar explode.
Já verifiquei o arquivo que envia as informações JSON encode e esta tudo ok.


$check = curl_init ($dados_url);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$json = curl_exec ($check);

$json = json_decode($json, true);



Sou novato em JSON, agradeço se resolverem meu problema.

[ Função ] Token Session Id

24/02/2011, 23:34

Já fazem alguns dias que andei pesquisando sobre brechas mais conhecidas em um sistema em PHP, me deparei com vários resultados, e também várias soluções. E como estou com um projeto ativo, onde é necessário uma grande estrutura em termos de segurança,eu criei uma função que trabalha em conjunto com as funções de login e proteção das páginas que necessita de autenticação da página.
Vamos lá?

Objetivo:

A ideia é então adicionar um Token único, aos links ou formulários que pretendo proteger, efectuando a validação no servidor antes de aceitar o pedido.
Desta forma é possível garantir ambas as acções só podem ser iniciadas por um utilizador autenticado e não por um script malicioso numa página forjada pois cada Token é único por cada utilizador.


Posted Image


Passo 1


O sistema recebe o pedido de login do servidor descrito passo da imagem, o script de login entra em ação checa os dados informados caso sejam incorretos ele retorna pro passo , que é retornando mensagem de erro e retornando o usuário para página de login novamente. Caso os dados informados pelo usuário sejam corretos ele irá passar para o passo que é informar os dados para a função da token. No 5º passo a função pega os dados gera a token e informa pro usuário e redireciona o usuário para o painel de controle. A partir daqui outras funções entram em ação, que descreverei a baixo.


Explicação prática: Etapa 5º


O sistema consiste em criar uma token ID alfa numérica gerado por uma outra função que mistura md5 com sha1 e uma combinação de numero definida pelo dono do site.

Segue exemplo de uma token válida gerada pela função
gerar_token();

e02349b6a00532aa0ea3d9d6f9b8f9a856e425c4d4b9a5384


Depois de gerar a token a função consiste também em fazer uma insert ao banco de dados com as informações obtidas do usuário que está identificando-se na página.

insert_token();


Este é o trabalho desta função, nela é obtido informações sobre a sessão do usuário e inserido no banco de dados, informações como: Account_ID, Email, Time, IP e HTTP_USER_AGENT.
A account_id é obtida através do sistema de login, que é um sistema paralelo.
Após pegar estas informações ela insere no banco de dados todas informações e insere na máquina do usuário as cookie precisas com as informações necessárias.

Após efetuar o login a função retorna ao login a token gerada pela função.

get_token();


O sistema de login irá redirecionar o usuário para o painel de controle com uma get no link que é precisa para o sistema de token operar corretamente, o exemplo abaixo mostra o link gerado pelo sistema:

painel-controle.php?token_id=e02349b6a00532aa0ea3d9d6f9b8f9a856e425c4d4b9a5384


Explicação prática: Etapa 6º


O usuário ao acessar página painel-controle.php a onde está presente a função:

check_token();


O trabalho desta função será checar se o usuário está autenticado corretamente para que o sistema aceite todas suas solicitações. IP, Account_ID logada, cookie e time, são as propriedades que a função irá checar. A função irá checar a token_id que está presente na get do link do usuário, caso a get seja outra e não a presente no banco de dados o script retornará uma mensagem:

Posted Image


*caso o usuário não atualize a página uma pequena meta tag irá fazer o mesmo após 20 segundos da mensagem estiver ativa.

Ao atualizar a página a token verdadeira irá retornar ao get do link.

Explicação prática: Etapa 7º


O próximo passo do script é checar se a token presente na get do link é a mesma presente na cookie da máquina do usuário e no banco de dados, checando também se account cookie é a correta definida na criação da token no banco de dados, se o ip é o mesmo e a time, caso a token venha a expirar.
Um exemplo prático:

Posted Image


E como efeito da função, impedirá também que usuários acessem a mesma conta por ip's diferentes, pois o sistema só aceita uma token por account_id e apenas 1 (um) ip.

Explicação prática: Etapa 8º

Para que o sistema deixe o usuário autenticado corretamente é preciso que todas as informações dele bata com as informações que foram inseridas dele ao banco de dados no ato do login, caso contrário, em algum caso extremo a cookie do usuário venha sumir do computador dele mesmo com o login ativo, então neste caso o script irá aborta a identificação dele junto ao site, retornando assim um:

logout();


Posted Image


*mensagem de erro exibida ao expirar a sessão

Importante ressaltar que o servidor não executará nenhum pedido do usuário sem antes passar pelas funções de checagem da token e login que é sistema que opera paralelo ao sistema de token como dito antes, checando account, senha, email e outros.

Explicação prática: Etapa 9º


Caso nenhum destes erros venham a ocorrer com o usuário então a token irá funcionar perfeitamente e o usuário terá livre acesso as funções do painel de controle. Mais toda token tem um tempo de duração, que pode ser alterado. Um exemplo seja que a configuração esteja para citar 1 (uma) hora de duração para cada token criada, a partir do login. Ao usuário se logar e se passando 1 (uma) hora a time token irá expirar retornando o mesmo erro mostrado a cima, e assim desativando a token do usuário pelo campo no banco de dados: Active, alterando sua a value de 0 para 1.

O usuário ao efetuar o logout do site o script irá executar outra função:

clean_token();


Esta função desativa a token do usuário no banco de dados, alterando a value active como eu já lhes disse a cima.

Explicação prática: Etapa 10º


Caso nenhum erro venha ocorrer o servidor recebe os dados verifica e responde ao usuário a solicitação presente, como por exemplo no meu atual projeto: Criar Charatcre, Alterar Senha, Alterar Email e etc.

Usuário ao dar logout do sistema a função irá limpar todos os rastros deixado pela sessão, limpando cookie, e assim desativando a token no banco de dados.


logout();
clean_token();


Caso o usuário não dê logout desta forma ao sair da página ou fechar o browser outra função dependente da token irá executar o logout por ele, e assim efetuando as ações descrito a cima.

Fim.


È, esta é a lógica usada para a função token session ID. Com este sistema creio eu e tenho fé que as páginas contida no site estarão mais protegidas, e assim determinando que tem acesso a páginas restritas.

O que acharam ? comentem, sobre a estrutura da lógica, e possível falhas.

Obrigado pela atenção.

IPB Skin By Virteq