どのようにハッシュ要素は、Zendのフレームワーク上のセキュアログインをするのでしょうか?

StackOverflow https://stackoverflow.com/questions/2453341

質問

私は

ログインフォームと同じブローコードの例を見て
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');
        }

今、私の質問、ハッシュ要素の使用のためにいただきました理由は? どのようにこのハッシュ要素セキュアログインをする?

誰もがこれらを説明できますか?

感謝

役に立ちましたか?

解決

ウィキペディアは(クロスサイトリクエストフォージェリ)のページを持っています。ただ、質問のあなたの言葉遣いにピックアップします。 のそれはそれはの確保がありません、それだけで攻撃の種類から保護します。

要するに、誰かがユーザーの知識がなくて(隠しフレームまたは画像タグのいずれか)のURLをロードするようにブラウザを取得することにより、ページを訪問することなしに、ユーザーのサーバー上の状態を変更することができます。

この場合には、ログインCSRFから保護されています。例では、カスタムGoogleアカウントに被害者を記録できることになります。彼らはこのアカウントを使用して検索するとき、あなたは自分の検索履歴へのアクセスを持つことになります。

これらのメソッドの両方の欠陥は、彼らが実際のフォームがオンになっているページにアクセスする方法がありませんです。保護は、そのため彼らは、ログインページにアクセスし、他の値と一緒に正しいハッシュを提出確保するために、ユーザーにハッシュを割り当てることです。

ログインCSRF防御するアンおそらくより良い方法はRefererヘッダーをチェックし、それが正しくないか、存在しない場合、それを拒否することである。

他のヒント

Zend_Form_Element_Hash のZend Frameworkのマニュアルます:

  

この要素は、データがフォームを生成し、ユーザー・セッションではなく、不正なスクリプトによって提出されることを保証、フォーム上のCSRF攻撃からの保護を提供します。保護は、フォームにハッシュ要素を追加し、フォームが送信されたときに、それを検証することにより達成されます。

ブルートフォーススクリプトは、単に資格情報のランダムな組み合わせを掲載することにより、トークンがなかった場合は、サイト上のパスワードを推測しようとすることができます。ハッシュがセッションに保存されているので、しかし、偽装された要求は、このようにサイトを攻撃するために難易度を上げ、同様にセッションCookieが含まれていなければならないでしょう。

ですから、ログインページには、それが呼び出されたハッシュ/トークンが含まれています。このトークンは、特定の寿命のためのセッションに保存されています。ユーザーがログインすると、トークンがログイン資格情報の一部でない場合、要求は別のサーバーから来るものと仮定して拒否されます。

も参照してくださいウィキペディアCSRF での

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top