nasıl karma eleman Zend Framework üzerinde güvenli bir giriş yapar?

2 Cevap php

i giriş formu, aynı darbe kodu için bir örnek gördüm

class Form_Login extends Zend_Form {
    //put your code here
    public function init($timeout=360){

        $this->addElement('hash', 'token', array(
             'timeout' => $timeout
        ));
        $this->setName('Login');
       $username = $this->createElement ( 'text', 'username' );
        $username->setLabel('user name:')
                ->setRequired();
                $this->addElement($username);
        $password=$this->createElement('password','password');
        $password->setLabel('password:');
        $password->setRequired();
        $this->addElement($password);
        $login=$this->createElement('submit','login');
        $login->setLabel('Login');
        $this->addElement($login);

        $this->setMethod('post');
        $this->setAction(Zend_Controller_Front::getInstance()->getBaseUrl().'/authentication/login');

    }
}

ve submitAction içinde

Aşağıda aynı bir parçası kod

if (!$form->isValid($request->getPost())) {
            if (count($form->getErrors('token')) > 0) {
                return $this->_forward('csrf-forbidden', 'error');
            }    
            $this->view->form = $form;
            return $this->render('login');
        }

now , my question, whats the reason for use of hash element? how this hash element make secure login?

Herkes bu açıklamaya yardımcı olabilir?

teşekkürler

2 Cevap

Wikipedia has a page on it (Cross Site Request Forgery). Sadece soru sizin ifadeler üzerine almak için. It doesn't make it secure, sadece saldırı bir tür karşı koruma sağlar.

Kısacası, birileri kullanıcıların bilgisi olmadan bir Url (gizli bir çerçeve ya da bir görüntü etiketi ile Ya) yüklemek için tarayıcıyı alarak sayfasını ziyaret etmek zorunda kullanıcı olmadan sunucuda durumunu değiştirebilirsiniz.

Bu durumda Giriş CSRF karşı koruyor. Bir örnek özel bir google hesabına bir kurban oturum olabilir olacaktır. Bu hesabı kullanarak arama o zaman onların arama geçmişi erişim olurdu.

Bu yöntemlerin her ikisi de kusur onlar gerçek formu üzerinde sayfasına erişmek için bir yol olması. Koruma nedenle giriş sayfasını ziyaret sağlamak ve diğer değerleriyle birlikte doğru karma göndermek için kullanıcıya bir karma atamak etmektir.

Giriş CSRF karşı savunmak için belki iyi bir yol Referer başlığını kontrol ve doğru değil ya da mevcut değilse bunu reddetmek demektir.

In açıklamasına bakın Zend Framework manual for Zend_Form_Element_Hash:

Bu eleman veri sahtekar komut dosyası tarafından formu değil oluşturulan kullanıcı oturum tarafından gönderilen sağlanması, formları CSRF saldırılarına karşı koruma sağlar. Koruma bir form için bir karma elemanı eklenmesi ve form gönderildiğinde bunu doğrulayarak elde edilir.

Bir kaba kuvvet komut sadece kimlik rastgele kombinasyonları göndererek, bir belirteç orada değildi sitede şifreleri tahmin deneyebilirsiniz. Karma Oturumunda saklanır çünkü Ama, sahte istek böylece site saldırı zorluk yükselterek yanı Session Cookie içermesi gerekir.

Yani, giriş sayfası denir karma / simge içerir. Bu belirteç belirli bir ömür için oturumun depolanır. Kullanıcı günlükleri ve belirteç oturum açma kimlik bilgileri bir parçası değilse, isteği farklı bir sunucuya geldiği varsayılır ve engellendi.

Ayrıca bkz: Wikipedia on CSRF