Skip to content

Segurança

Bjverde edited this page Dec 11, 2018 · 4 revisions

Chamar o formulário via GET da url pode ser uma falha de segurança principalmente se o seu usuário precisa ser autenticado e autorizado. O formDin conta com uma proteção se setLoginFile foi informado no index e não tem uma sessão aberta, impedido o carregamento da tela. Mais informações em Autenticando o usuário > alterando o index.php

Chamar um formulário via url completa também não irá funcionar por dois motivos: 1 - Só no index tem a lista completa para carregas todos os módulos; 2 - Aplicações geradas com SysGen a primeira linha tem defined('APLICATIVO') or die(); Exemplo de chamada diretamente

http://localhost/curso/appexemplo_v1.0/modulos/exe_campo_ajuda.php

Um possível problema é usuário não autorizados solicitar um formulário via GET.

Resolvendo o problema do usuário não autorizado

Com diversos Perfis de acesso é preciso verificar se o usuário pode acessar o modulo. Uma sugestão é alterar todos os módulos trocando $frm->show(); pela linha abaixo

if ( Acesso::moduloAcessoPermitido($_REQUEST['modulo']) ){
    $frm->show();
}

Depois novos métodos devem ser incluídos na classe de acesso

	/***
	 * Recebe o $_REQUEST[modulo] e informa se usuario pode acessar ou não o modulo
	 * @param string $dsUrl
	 * @throws InvalidArgumentException
	 * @return boolean
	 */
	public static function moduloAcessoPermitido($dsUrl){
	    $permitido = false;
	    if(empty($dsUrl)){
	        throw new InvalidArgumentException('Erro: Modulo não informado');
	    }else{
	       $dadosMenu = self::getUserModuloAcesso();
	       $listDsUrl = ArrayHelper::getArray($dadosMenu, 'DSURL');
	       $permitido = in_array($dsUrl, $listDsUrl);
	       if( $permitido==false ){
	           $permitido = in_array('modulos/'.$dsUrl, $listDsUrl);
	       }
	    }
	    return $permitido;
	}

Próxima etapa ?

21 - Layout e CSS

Clone this wiki locally