yiipassword

Password strategies for Yii

  • 所有者: phpnode/yiipassword
  • 平台:
  • 許可證:
  • 分類:
  • 主題:
  • 喜歡:
    0
      比較:

Github星跟蹤圖

Yii Password Strategies

Password strategies are specifications for how passwords should be encoded and verified
and how complicated user supplied passwords should be. Out of the box it contains strategies
for bcrypt and multiple rounds of hash functions e.g. sha1, as well as support for legacy password
hashes like unsalted md5 and unsalted sha1. The aim is to allow multiple different password strategies to co-exist
and to upgrade users from legacy hashes to new hashes when they login.

Instalation

Install compser (following instructions from https://getcomposer.org/) then run:

composer require phpnode/yiipassword

Why do I want this?

Imagine that you have a legacy application that uses simple, unsalted md5 based password
hashing, which, in 2012 is considered completely insecure. You want to upgrade your password
hashes, but you don't have access to the plain text passwords. In this scenario you can
configure two password strategies, your old legacy one that uses md5, and your new shiney one
that uses bcrypt. Then when users login to their accounts, their password will be verified using
the legacy strategy, and if it matches, they will be seamlessly upgraded to the new bcrypt password
strategy. For example:

class User extends CActiveRecord
{
	public function behaviors()
	{
		return array(
			"PasswordBehavior" => array(
				"class" => "YiiPassword\Behavior",
				"defaultStrategyName" => "bcrypt",
				"strategies" => array(
					"bcrypt" => array(
						"class" => "YiiPassword\Strategies\Bcrypt",
						"workFactor" => 14
					),
					"legacy" => array(
						"class" => "YiiPassword\Strategies\LegacyMd5",
					)
				),
			)
		);
	}

	....
}

$user = User::model()->findByPK(1); // a user using the legacy password strategy
echo $user->password; // unsalted md5, horrible
$user->verifyPassword("password"); // verifies the password using the legacy strategy, and rehashes based on bcrypt strategy
echo $user->password; // now hashed with bcrpt

But this is also useful for modern applications, let's say you have a new webapp and you're doing The Right Thing
and using bcrypt for your password hashing. You start off with a work factor of 12, but after a few months you decide
you'd like to increase it to 15. Normally this would be quite difficult to accomplish because of all the users who've already
signed up using the less secure hashes, but with password strategies, you can simply add another bcrpyt strategy with the
desired work factor, set it to the default, and your users will be upgraded to the new strategy next time they login.

By default, YiiPassword\Behavior assumes that your model contains the following fields:

* *salt* - holds the per user salt used for hashing passwords
* *username* - holds the username
* *password* - holds the hashed password
* *passwordStrategy* - holds the name of the current password strategy for this user
* *requiresNewPassword* - a boolean field that determines whether the user should change their password or not

You can configure the field names on the behavior.

Also info: Using Bcrypt Strategy For New Application? - https://github.com/phpnode/YiiPassword/issues/10

主要指標

概覽
名稱與所有者phpnode/yiipassword
主編程語言PHP
編程語言PHP (語言數: 1)
平台
許可證
所有者活动
創建於2012-03-21 11:39:23
推送於2015-05-12 05:00:16
最后一次提交2015-05-12 08:00:16
發布數4
最新版本名稱1.0.3 (發布於 2014-06-04 14:26:28)
第一版名稱1.0.0 (發布於 2014-05-30 09:57:27)
用户参与
星數76
關注者數11
派生數28
提交數39
已啟用問題?
問題數16
打開的問題數2
拉請求數7
打開的拉請求數0
關閉的拉請求數1
项目设置
已啟用Wiki?
已存檔?
是復刻?
已鎖定?
是鏡像?
是私有?