Ir para conteúdo

POWERED BY:

Arquivado

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

gremio10

Zend_Session

Recommended Posts

Eu utilizei o Zend_Auth para login, mas não sei se é o mais seguro contra SQLInjection...

 

Então eu pesquisei sobre o Zend_Session, mas não consegui entender, alguém poderia me dar um exemplo e me tirar essa dúvida de segurança ?

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se você usar de maneira correta o Zend_Auth não tem porque se preocupar com SQL Injection, o ZF é bastante seguro não só contra SQL Injection mas como também contra outros tipos de ataque.

 

Na verdade quem é responsável pela prevenção de ataques SQL Injection é o Zend_Db_Table, a única responsabilidade do Zend_Auth é fazer a autenticação.

 

Portanto, tanto faz você usar o Zend_Session ou Zend_Auth, mas é claro que é muito mais preferível usar o Zend_Auth, pois já foi feito pra isso e já é integrado com o Zend_Db_Table e outros recursos do framework.

 

Vou postar o código da minha action Login que pertence ao meu controller Auth pra você ver como usar:

 

public function loginAction() {
	$form = new Cms_Form_Login();
	$this->view->form = $form;

	if ($this->getRequest()->isPost()) {
		if ($form->isValid($this->getRequest()->getPost())) {
			$adapter = new Zend_Auth_Adapter_DbTable(
			Zend_Db_Table_Abstract::getDefaultAdapter(),
                           	'administrators',
                           	'username',
                           	'password',
                           	'SHA1(?)'
                           	);

                           	$adapter->setIdentity($form->getValue('username'));
                           	$adapter->setCredential($form->getValue('password'));

                           	$result = Zend_Auth::getInstance()->authenticate($adapter);

                           	if (!$result->isValid()) {
                           		$this->view->errorMessage = 'Usuário e/ou senha inválidos.';
                           	} else {
                           		$storage = Zend_Auth::getInstance()->getStorage();
                           		$storage->write(
                           		$adapter->getResultRowObject(
                           		array('id', 'username', 'fullname')
                           		)
                           		);
                           		$this->_helper->redirector('index', 'index');
                           	}
		}
	}
}

 

 

Qualquer dúvida posta aí. :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Meu login hoje é assim:

 

public function indexAction()
   {   
       if( Zend_Auth::getInstance()->hasIdentity() )
       {
           $this->_redirect( "index/index" );
       }

       $dbAdapter = Zend_Db_Table::getDefaultAdapter();

       $authAdapter = new Zend_Auth_Adapter_DbTable( $dbAdapter );  

       $authAdapter->setTableName( "profissionais_login" )
                   ->setIdentityColumn( "login" )
                   ->setCredentialColumn( "password" )
                   ->setCredentialTreatment( "MD5(?)" ); 

       if( $this->getRequest()->isPost() )
       {
           $_field = $this->getRequest()->getPost();

           $authAdapter->setIdentity( $_field[ "login" ] )
                       ->setCredential( $_field[ "password" ] );

           $_auth = Zend_Auth::getInstance();
           $_result = $_auth->authenticate( $authAdapter );

           if( $_result->isValid() )
           {
               $_userInfo = $authAdapter->getResultRowObject( null, "password" );

               $_authStorage = $_auth->getStorage();
               $_authStorage->write( $_userInfo );

               $this->_redirect( "index/index" );
           }
       }

   }

 

o que eu queria fazer é assim:

quando um usuário editar uma foto, queria salvar na minha Auth o nome da imagem, para que eu não precise buscar no banco apenas um nome no banco...

 

teria como ? quando eu tentei fazer assim

 

$obj = (object)array( "name" => "123456.jpg" );
Zend_Auth::getInstance->getStorage()->write( $obj );

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo, você abriu o tópico falando sobre a possibilidade de haver ataque de SQL Injection usando o Zend_Auth e agora mudou de assunto dizendo que quer salvar o nome de uma imagem na sessão pra não precisar buscar no banco.

 

Não estou querendo te criticar, mas eu acho bom não misturar o assunto do tópico pra não haver confusão quando alguém buscar por este assunto.

 

Bem, mas respondendo a sua nova dúvida, a finalidade do Zend_Auth (como o próprio nome já diz) é autenticar um usuário no sistema. Sendo assim, se você quer salvar uma imagem na sessão para recuperar depois e, essa imagem não tem nada haver com a autenticação, então use o Zend_Session.

 

Se fosse uma imagem de perfil por exemplo, talvez fosse o caso de aproveitar para salvar junto com as credenciais de autenticação, mas como você falou de edição de fotos, não faz sentido usar o Zend_Auth pra salvar o nome da imagem.

 

Um abraço!

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.