treta
pegael.gringo
- Joined
- Sep 13, 2008
- Messages
- 17
- Reaction score
- 0
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 para criação de uma web page para ATS, o WebATS. 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:
* Resposta Negativa
* Resposta Positiva
* Requesição
* Dados
O sistema recebe o pedido de login do servidor descrito 2º passo da imagem, o script de login entra em ação checa os dados informados caso sejam incorretos ele retorna pro passo 3º, 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 4º 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.
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
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.
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.
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:
O usuário ao acessar página painel-controle.php a onde está presente a função:
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:
*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.
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:
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.
*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.
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:
Esta função desativa a token do usuário no banco de dados, alterando a value active como eu já lhes disse a cima.
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.
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.
Eu irei verificar melhor a estrutura do meu code e com passar do tempo se não apresentar nenhuma falha visível irei fazer versões do code disponíveis para gesior acc e morden acc. Assim ambas ficaram mais protegidas.
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.
* Resposta Negativa
* Resposta Positiva
* Requesição
* Dados
Passo 1
O sistema recebe o pedido de login do servidor descrito 2º passo da imagem, o script de login entra em ação checa os dados informados caso sejam incorretos ele retorna pro passo 3º, 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 4º 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
PHP:
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.
PHP:
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.
PHP:
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:
PHP:
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:
*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:
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:
PHP:
logout();
*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:
PHP:
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.
PHP:
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.
Eu irei verificar melhor a estrutura do meu code e com passar do tempo se não apresentar nenhuma falha visível irei fazer versões do code disponíveis para gesior acc e morden acc. Assim ambas ficaram mais protegidas.
Last edited: