Ir para conteúdo

POWERED BY:

Arquivado

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

Jack Oliveira

Permitir acesso por nível por URL das Páginas

Recommended Posts

Ola @Omar~ e @Motta

 

fiz um sistema de permissao por paginas

no caso em meu banco de dados tenho mais de 20 paginas no admin

eu tenho os seguinte nivel de acessos

WebMaster - Nivel (1) 

Administrador - Nivel (2)

Editor - (3)

 

E o código fiz da seguinte forma no function.php


// Verifica se o usuário tem permissão para acessar o módulo
    function VerificaPermissao($URL){
        $IDUsuario = DadosSession('id');

        $Query = DBRead('usuarios','permissao',"WHERE id = '{$IDUsuario}'"); foreach ($Query as $usuarios) {
            $ModulosPermitidos = $usuarios['permissao'];
            if (empty($ModulosPermitidos)) {
                return true;
            } elseif (!empty($ModulosPermitidos)) {
                if (strpos($ModulosPermitidos, $URL) !== TRUE) {
                    return true;
                } else {
                    return false;
                }
            }
        }
    }

ele funciona de boa ao dar permissao 

porem se um cara muito legal ele ter acesso por ex meusite.com/admin/post.php

se ele ir e trocar o post.php

por 

meusite.com/admin/album.php  ele consegue acessar a pagina que não é pra ele acessar.

 

 

Alguem ai poderia me dar uma ajuda ai de como resolver...

Compartilhar este post


Link para o post
Compartilhar em outros sites

É muito simples, basta fazer um verificação em cada página(ou arquivo "depende a arquitetura") se aquele usuário tem permissão de acesso.

 

Só uma coisa diria a você que mudasse....

Criar uma tabela só de permissão; digamos então que essa seria a tabela:

CREATE TABLE `permitir` (
    `id` int(9) NOT NULL AUTO_INCREMENT,
    `usuario_id` int(9) NOT NULL AUTO_INCREMENT COMMENT 'adicionamos aqui o id do usuario que pode acessar a página',
    `pagina` varchar(200) DEFAULT NULL COMMENT 'adicionamos aqui a informação da página que ele pode acessar',
    PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

Então nossa query fica muito prática

SELECT * FROM permitir WHERE usuario_id = '{$ID_DO_USUARIO}' AND pagina = '{$URL}'

Então é só verificar isso a cada página ou arquivo que o usuário acessar.

Se não há retorno da query é porque aquele id do usuário não está registrado na tabela ou seu id não condiz com a página que ele acessou junto ao valor da tabela na coluna "pagina".

 

Citar

Uma ressalva:

Sessões/cookies podem ser fraudados, logo a consulta do usuário pelo lado do servidor assim como fez é uma medida de segurança bem drástica, mas necessário em alguns casos extremos.

No entanto a verificação por ID não é a ideal, se por sua vez além do próprio usuário ter acesso ao seu ID, ou seja se todo mundo pode saber qual o ID do administrador por exemplo, basta uma pessoa falsificar isso e terá acesso administrativo.

Outro caso é que normalmente o "ID 1" é o administrador.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 10/12/2019 at 15:40, Omar~ disse:

É muito simples, basta fazer um verificação em cada página(ou arquivo "depende a arquitetura") se aquele usuário tem permissão de acesso.

 

Só uma coisa diria a você que mudasse....

Criar uma tabela só de permissão; digamos então que essa seria a tabela:


CREATE TABLE `permitir` (
    `id` int(9) NOT NULL AUTO_INCREMENT,
    `usuario_id` int(9) NOT NULL AUTO_INCREMENT COMMENT 'adicionamos aqui o id do usuario que pode acessar a página',
    `pagina` varchar(200) DEFAULT NULL COMMENT 'adicionamos aqui a informação da página que ele pode acessar',
    PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

Então nossa query fica muito prática


SELECT * FROM permitir WHERE usuario_id = '{$ID_DO_USUARIO}' AND pagina = '{$URL}'

Então é só verificar isso a cada página ou arquivo que o usuário acessar.

Se não há retorno da query é porque aquele id do usuário não está registrado na tabela ou seu id não condiz com a página que ele acessou junto ao valor da tabela na coluna "pagina".

 

 

Ola @Omar~ bom dia perdoa a demora aqui

poderia me dar uma ajuda nesta parte que tu disse aqui em questão de segurança como posso proteger o administrador??

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.