gremio10 14 Denunciar post Postado Setembro 26, 2011 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
Leozitho 81 Denunciar post Postado Setembro 27, 2011 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
gremio10 14 Denunciar post Postado Setembro 27, 2011 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
Leozitho 81 Denunciar post Postado Setembro 27, 2011 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