문제

나는 보았다 예로 로그인 형태로 같은 날려드

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');

    }
}

에 submitAction

일부 코드가 동일

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');
        }

지금,나의 질문에 무슨 이유로 사용하기 위해 해시의를 받으려면 어떻게 해야 합니까?는 방법을 이 해시 요소는 안전한 로그인을 하나요?

사람을 설명할 수 있습니까?

감사

도움이 되었습니까?

해결책

Wikipedia 페이지에 그것을(크로스 사이트 요청의 위조).다만 픽업하에 표현의 문제입니다. It doesn't make It 보안,그것은 그냥 보호에 대한 유형의 공격합니다.

즉,누군가는 상태를 변경할 수 있습 서버에서 필요 없이 사용자가 페이지를 방문하여 브라우저는 Url 을 로드(중에 숨겨진 프레임이나 이미지 태그)을 이용자의 동의 없이 지식입니다.

이 경우에는 그에 대한 보호 로그인 CSRF.예 될 수 있는 로그를 피해자로 사용자 정의 google 계정이다.다음할 때 사용하여 검색이 계정에 액세스 할 수있을 것을 그들의 역사를 검색 할 수 있습니다.

결함에서 이러한 두 가지 방법입니다 그들은 아무 방법이 페이지에 액세스하려면 실제적인 양식이다.의 보호를 따라서 할당 해시 사용자에게도 그들은 방문의 로그인 페이지 제출하여 올바른 해쉬와 함께 다른 값입니다.

틀림없이 더 나은 방법에 대해 로그인 CSRF 을 확인하는 것입 Referer 헤더와 그것을 거절하지 않은 경우 올바른 또는 존재하지 않습니다.

다른 팁

설명의 설명을 참조하십시오 zend_form_element_hash 용 Zend Framework 매뉴얼:

이 요소는 양식에 대한 CSRF 공격으로부터 보호를 제공하여 Rogue 스크립트가 아닌 양식을 생성 한 사용자 세션에서 데이터를 제출하도록합니다. 보호는 양식에 해시 요소를 추가하고 양식이 제출 될 때 확인하여 달성됩니다.

Brute Force 스크립트는 자격 증명의 임의의 조합을 게시하여 토큰이 없으면 사이트에서 암호를 추측하려고 시도 할 수 있습니다. 그러나 해시가 세션에 저장되기 때문에 스푸핑 된 요청에는 세션 쿠키도 포함되어 있어야하므로 사이트를 공격하기가 어려워집니다.

따라서 로그인 페이지에는 호출되면 해시/토큰이 포함되어 있습니다. 이 토큰은 세션에 특정 수명 동안 저장됩니다. 사용자가 로그인하고 토큰이 로그인 자격 증명의 일부가 아닌 경우, 요청은 다른 서버에서 나오고 거부 된 것으로 가정합니다.

또한 참조하십시오 CSRF의 Wikipedia

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top