Reporte de Bugs e Erros

Gravatar de filiperc filiperc Tópico publicado em
05/10/2009, 10:52:45

AuthComponent - Alteração de Permissões de Arquivos

Bom dia,

Estou tendo um problema sério e peço ajuda de vocês. Espero que não seja grave, mas sim uma barbeiragem minha.

Fiz uma aplicação que tem o AuthComponent. Ela funciona bem até eu logar no painel de administrador.

O site todo para de funcionar depois disso. Dando o seguinte erro:

[b]Not Acceptable[/b]

An appropriate representation of the requested resource / could not be found on this server.

Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.

Abri um chamado na DialHost, onde hospedo o site, e eles disseram que as permissões dos arquivos/pastas estavam errados. E realmente tudo voltou a funcionar...

...Até eu fazer login novamente na minha aplicação... e o erro volta..

É como se o Auth estivesse alterando as permissões do site todo quando eu faço login.

O que eu posso estar fazendo errado?

Alguém faz idéia??

Obrigado,
Filipe

Gravatar de filiperc filiperc Resposta publicada em
05/10/2009, 10:56:57

AuthComponent - Alteração de Permissões de Arquivos

Só pra complementar, localmente tudo funciona beleza!

Filipe

Gravatar de filiperc filiperc Resposta publicada em
05/10/2009, 11:13:13

AuthComponent - Alteração de Permissões de Arquivos

Esta foi a resposta da DialHost:

Filipe Ritter Cruz,

Isto deve ocorre do seu servidor interno aceitar as permissões 777 . já em nosso servidor o mesmo não é autorizado a ser utilizado. Permissões diferentes das informadas são mais inseguras.

Qualquer dúvida estamos a sua disposição.

E agora?

Gravatar de Osmar Alves Osmar Alves Resposta publicada em
05/10/2009, 11:22:41

AuthComponent - Alteração de Permissões de Arquivos

Cara isso aconteceu comigo tb... eu uso a dialhost tb.

Depois de muuuuuuuuuuuuito suor, eu decobri que é por causa do Cookies.... ai eu mudei o component pra session e funciono belezinha.

Gravatar de Osmar Alves Osmar Alves Resposta publicada em
05/10/2009, 11:23:43

AuthComponent - Alteração de Permissões de Arquivos

Parece meio estranho esse erro ser por cookies, mais pelo menos aki foi por causa dos benditos cookies..

Gravatar de filiperc filiperc Resposta publicada em
05/10/2009, 11:27:57

AuthComponent - Alteração de Permissões de Arquivos

Puxa vida! Obrigado Osmar!!

São muitas modificações a serem feitas no Auth?

Filipe

Gravatar de Osmar Alves Osmar Alves Resposta publicada em
05/10/2009, 11:41:17

AuthComponent - Alteração de Permissões de Arquivos

Não... segue do jeito que eu fiz:

<?php
/**
 *  Put description here
 *
 *  Licensed under The MIT License.
 *  Redistributions of files must retain the above copyright notice.
 *  
 *  @package Spaghetti
 *  @subpackage Spaghetti.Lib.Component.Auth
 *  @license http://www.opensource.org/licenses/mit-license.php The MIT License
 */

class AuthComponent extends Object { public $permissions = null; public $loggedIn = false; public $controller = null; public $data = array(); public $params = array(); public $userModel = "Users"; public $userScope = array(); public $loginAction = "/users/login"; public $loginRedirect = "/"; public $logoutRedirect = "/"; public $fields = array( "username" => "username", "password" => "password" ); public function initialize(&$controller) { $this->controller = $controller; $this->params = $controller->params; $this->data = $controller->data; if($this->permissions === null): $this->permissions = array( "prefix" => array(), "controller" => array("users" => true), "action" => array() ); endif; } public function authorized() { $authorized = true; if($_SESSION["user_id"] && $_SESSION["user_password"]): $data = array("id" => $_SESSION["user_id"], "password" => $_SESSION["user_password"]); $identify = $this->identify($data); if(!empty($identify)): $this->loggedIn = true; $authorized = true; endif; else: foreach($this->params as $param => $value): if($this->permissions[$param][$value] === false): $authorized = false; elseif($this->permissions[$param][$value] === true): $authorized = true; endif; endforeach; endif; return $authorized; } public function check() { if(!$this->authorized()): $this->controller->redirect($this->loginAction); return false; endif; return true; } public function allow($permissions = array()) { if($permissions == "" || $permissions == "*"): $this->permissions["prefix"][""] = true; else: foreach($permissions as $resource => $permission): $this->permissions[$resource][$permission] = true; endforeach; endif; return true; } public function deny($permissions = array()) { if($permissions == "" || $permissions == "*"): $this->permissions["prefix"][""] = false; else: foreach($permissions as $resource => $permission): $this->permissions[$resource][$permission] = false; endforeach; endif; return true; } public function hashPasswords($data = array()) { if(isset($data[$this->fields["password"]])): $data[$this->fields["password"]] = md5($data[$this->fields["password"]]); endif; return $data; } public function identify($data = array()) { $userModel = ClassRegistry::init($this->userModel); $user = $userModel->find(array_merge($this->userScope, $data)); return $user; } public function login() { if(!$this->loggedIn): if(!empty($this->data)): $user = $this->identify($this->hashPasswords($this->data)); if(empty($user)): $this->controller->set("authError", "wrongData"); return false; else: session_register('user_id'); session_register('user_password'); $_SESSION['user_id'] = $user["id"]; $_SESSION['user_password'] = $user[$this->fields["password"]]; $this->loggedIn = true; $this->controller->redirect($this->loginRedirect); return true; endif; endif; else: $this->controller->redirect($this->loginRedirect); endif; } public function logout() { session_destroy(); $this->loggedIn = false; $this->controller->redirect($this->logoutRedirect); return true; } public function user($field = null) { $user_id = $_SESSION["user_id"]; $user = $this->identify(array("id" => $user_id)); return $field === null ? $user : $user[$field]; } }

?>


esse é o auth component modificado pra session.

Ai depois eu fui no arquivo /app/webroot/index.php e adicionei esse código:

session_start();

Blz?, testa ai e ve se da certo, fala pra gente se deu certo depois...

Gravatar de filiperc filiperc Resposta publicada em
05/10/2009, 11:46:42

AuthComponent - Alteração de Permissões de Arquivos

Putz, sem palavras!

Vou testar agora, pera.

Filipe

Gravatar de filiperc filiperc Resposta publicada em
05/10/2009, 11:57:44

AuthComponent - Alteração de Permissões de Arquivos

Cara, funcionou perfeito!!!!!!!!

Muito obrigado mesmo!!

Tenho uma questão: Tudo fica com a mesma segurança de antes?

Também reparei que o arquivo /core/cookies.php que esté no github não existe no meu diretório. E mesmo fazendo o download do Spaghetti atualizado no github este arquivo não veio.

Muito obrigado novamente.

Filipe

Gravatar de Osmar Alves Osmar Alves Resposta publicada em
05/10/2009, 12:30:38

AuthComponent - Alteração de Permissões de Arquivos

A questão da segurança, axu que fica até melhor, mais não tenho certeza.

É que eu fiz isso pq tava correndo, não tinha tempo pra tempa resolve o problema dos cookies.

Se alguem souber se com session é menos seguro fala ae, ou se tiver algum jeito melhor pra faze....

Gravatar de Julio Greff Julio Greff Resposta publicada em
05/10/2009, 13:08:22

AuthComponent - Alteração de Permissões de Arquivos

Quanto ao cookie.php que está no GitHub, ele está disponível sim, mas só se você clonar o repositório ou fizer o download do master (e não na página de downloads, que só tem até a versão 0.1.2 por enquanto).

Quanto a questão de segurança, via de regra sessions são mais seguras que cookies, pois elas ficam gravadas no servidor, e não no cliente. Nesse caso em específico, não faz grande diferença, já que não há nenhum tratamento contra hijacking da sessão.

No momento estou trabalhando numa classe de Session, que até o lançamento da versão final deve tomar cuidado de algumas coisas. Pretendo terminar uma versão preliminar hoje, já para o lançamento do beta, mas sem esses tratamentos por enquanto.

Gravatar de filiperc filiperc Resposta publicada em
05/10/2009, 13:22:28

AuthComponent - Alteração de Permissões de Arquivos

Grande Julio, obrigado pelos esclarecimentos.

Obrigado principalmente ao Osmar.

Valeu Galera.

Filipe

Gravatar de Osmar Alves Osmar Alves Resposta publicada em
05/10/2009, 14:04:52

AuthComponent - Alteração de Permissões de Arquivos

blz julio, por inquanto essa maneira que eu ahcei resolve.... t+ galera...

Você deve estar logado para responder a um tópico ou adicionar um novo.
Efetue login ou Registre-se para participar das discussões.