标签: phpass

便携式(PHPass)密码哈希.我应该使用它们吗?

我正在为我的网站安装用户注册脚本(Tank Auth).

在安装指南中说,

警告:默认情况下,库会生成强大的系统特定的密码哈希值,这些哈希值不可移植.这意味着一旦创建,就无法转储用户数据库并将其导出到另一台服务器.也可以在config-file中更改此行为.

这让我处于两难境地.将来我可能想要更换服务器,但我也不想要弱密码.便携式密码是否有很大的风险?更重要的是,哈希是什么意思?是字符长度吗?

php database passwords phpass

21
推荐指数
1
解决办法
9957
查看次数

盐是否包含在phpass哈希值中,或者您是否需要对其输入进行加盐?

phpass是一种广泛使用的哈希"框架".
在将明文密码提交给PasswordHash(v0.2)之前加盐普通密码是好的做法吗?

$dynamicSalt   = $record['salt'];
$staticSalt    = 'i5ininsfj5lt4hbfduk54fjbhoxc80sdf';
$plainPassword = $_POST['password'];
$password      = $plainPassword . $dynamicSalt . $staticSalt;

$passwordHash = new PasswordHash(8, false);
$storedPassword = $passwordHash->HashPassword($password);  
Run Code Online (Sandbox Code Playgroud)

供参考phpsalt类:

# Portable PHP password hashing framework.
#
# Version 0.2 / genuine.
#
# Written by Solar Designer <solar at openwall.com> in 2004-2006 and placed in
# the public domain.
#
#
#
class PasswordHash {
    var $itoa64;
    var $iteration_count_log2;
    var $portable_hashes;
    var $random_state;

    function PasswordHash($iteration_count_log2, $portable_hashes)
    {
        $this->itoa64 = './0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';

        if …
Run Code Online (Sandbox Code Playgroud)

php security hash phpass

11
推荐指数
1
解决办法
4885
查看次数

phpass是安全密码存储的最佳解决方案?

我正在创建一个处理大量个人数据的服务,因此让密码简单地飞出来是不合适的.我一直在寻找任何可能的解决方案,引起我注意的是phpass.我在这里读过StackOverflow上的内容.

我知道有很多关于这个问题的问题,但我想澄清一下,phpass是一种存储密码的安全方式.我怀疑的原因是它不使用任何盐(至少似乎没有使用),这是我被告知的安全存储的关键.

我当前的方法只是一个sha512-hash,其中包含一个特定于用户的salt,以及另一个特定于站点的哈希.这是我的PHP代码的剪辑:

hash_hmac('sha512', $password.$account_specific, $site_specific);
Run Code Online (Sandbox Code Playgroud)

很高兴听到一些关于这个问题的专家意见.我为创建另一个已经并将永远被问及的主题的线程而道歉.提前致谢.

编辑:
我也听说过哈希密码,比方说1000次也是存储密码的好方法.这种散列方式只需要几秒钟(最大值),但是打破散列密码会花费很多年龄?

php passwords hash phpass

9
推荐指数
1
解决办法
2960
查看次数

我可以使用open_basedir访问/ dev/urandom吗?

我想在Codeigniter中使用phpass-0.3,但由于以下原因我收到以下错误open_basedir:

遇到PHP错误
严重性:警告
消息:is_readable()[function.is-readable]:open_basedir限制生效.文件(/ dev/urandom)不在允许的路径中:(/ home/phginep:/ usr/lib/php:/ usr/local/lib/php:/ tmp)
文件名:phpass-0.3/PasswordHash. php
行号:51

以下代码:

function get_random_bytes($count)
{
    $output = '';
    if (is_readable('/dev/urandom') &&    //Line Number: 51
        ($fh = @fopen('/dev/urandom', 'rb'))) {
        $output = fread($fh, $count);
        fclose($fh);
    }

    if (strlen($output) < $count) {
        $output = '';
        for ($i = 0; $i < $count; $i += 16) {
            $this->random_state =
                md5(microtime() . $this->random_state);
            $output .=
                pack('H*', md5($this->random_state));
        }
        $output = substr($output, 0, $count);
    }

    return $output;
}
Run Code Online (Sandbox Code Playgroud)

我能做些什么来解决这个问题吗?

php codeigniter phpass

9
推荐指数
3
解决办法
9587
查看次数

检查open_basedir限制是否生效

使用PHPass(http://www.openwall.com/phpass/)时收到以下警告:

open_basedir restriction in effect. File(/dev/urandom) is not within the allowed path(s)
Run Code Online (Sandbox Code Playgroud)

虽然这不是一个大问题(它会落后于其他东西),但我不想发出这个警告.PHP应用程序应该在不同的服务器上运行,一些用户可以将该路径添加到其允许的open_basedir路径,但其他用户将无法访问该配置.

我的第一个猜测是检查可读性is_readable(),但是,我仍然收到警告.

问题:如何检查某个路径或文件是否已添加到open_basedir路径?

php open-basedir phpass

8
推荐指数
1
解决办法
5173
查看次数

使用现有的MD5哈希与PHPass有任何安全隐患吗?

在我更清楚之前,我实现了一个使用md5作为哈希算法的登录系统.现在我知道的更好了,我想转向使用PHPass.我的问题是系统已经投入生产,要求所有用户更改密码将成为所有头痛的母亲.

我想出了一个简单的解决方案,但考虑到我之前的错误,我想确保我不会因为无知而犯同样严重的错误.

我的解决方案如下:

更改

  1. md5($_POST['pass'])
  2. 检查md5哈希密码对数据库值

  1. md5($_POST['pass'])
  2. 将md5哈希密码传递给 $hasher->HashPassword()
  3. 用于$hasher->CheckPassword()根据DB的值检查重新散列的密码

为了清楚起见,我只是重新编写了md5版本,因为这是我在数据库中已有的内容.它并不是一种额外的安全措施(尽管如此,那太棒了!).

php migration security phpass

7
推荐指数
1
解决办法
383
查看次数

适当的腌制和使用PHPass

我一直在使用PHPass来密码我的密码很长一段时间.我承认仍然有一些我不完全理解(或忽略)正确散列密码的东西所以今天我正在审查我能找到的所有相关信息.

回顾PHPass文档,我已经踏入了这个:

除了实际散列之外,当新密码或密码被散列时,phpass透明地生成随机盐,并且它将散列类型,salt和密码拉伸迭代计数编码到它返回的"散列编码字符串"中.当phpass对存储的哈希验证密码或密码时,它同样透明地提取并使用哈希类型标识符,盐和"哈希编码字符串"中的迭代计数.因此,您不必费心自己进行腌制和拉伸 - phpass会为您处理这些问题.

我加粗了困扰我的句子.
我总是认为盐应该有些秘密,因为攻击者不应该知道它.因此,如果正确理解,PHPass会将相同哈希中使用的盐存储起来,以便在比较密码时能够使用它并检查是否有效.
我的问题是

  1. 这样安全吗?如果散列遭到破坏,攻击者就会使用盐来散列密码...这里有我想念的东西.
  2. 我在这里真的可以免费打扰密码吗?我真的可以依靠PHPass吗?

php security phpass

6
推荐指数
1
解决办法
926
查看次数

使用普通密码检查 WordPress 散列密码

我正在构建一个外部应用程序,其用户登录凭据将从 WordPress 站点数据库表“用户”中获取

WordPress 使用 PHPass 散列,我无法验证外部应用程序的用户名和密码,因为数据库表中的密码'users'已散列

我正在尝试使用wp_check_password函数检查带有散列密码的普通密码,但我失败了,此代码未写回任何内容

<?php

$password = '965521425';
$hash = '$P$9jWFhEPMfI.KPByiNO9IyUzSTG7EZK0';

require_once('/home/nhtsoft/public_html/project/wp-includes/class-phpass.php');

function wp_check_password($password, $hash) {
    global $wp_hasher;

    if ( empty($wp_hasher) ) {
        $wp_hasher = new PasswordHash(8, true);
    }
    $check = $wp_hasher->CheckPassword($password, $hash);
    return apply_filters('check_password', $check, $password, $hash);
}    
?>
Run Code Online (Sandbox Code Playgroud)

这段代码给了我一个空页面。

如何检查此密码,以便我可以使用这些 WordPress 凭据进行外部应用程序登录?

php mysql wordpress hash phpass

6
推荐指数
1
解决办法
1万
查看次数

Codeigntier:无法加载请求的文件:Ubuntu 14.04上的helpers/phpass_helper.php

我试图在我的基本控制器中加载Phpass助手,以便哈希我的密码.但是,它似乎没有在Ubuntu 14.04上加载.我试图搜索,有些人说这可能是因为Linux区分大小写,所以我将文件从phpass_helper.php更改为Phpass_helper.php.并使用以下代码加载它:

$this->load->helper('Phpass_helper');
Run Code Online (Sandbox Code Playgroud)

但它仍然给我错误说:无法加载请求的文件:helpers/phpass_helper.php.有谁知道为什么它不起作用?任何帮助将不胜感激.谢谢.

class PasswordHash {
var $itoa64;
var $iteration_count_log2;
var $portable_hashes;
var $random_state;

function PasswordHash($iteration_count_log2, $portable_hashes)
{
    $this->itoa64 = './0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';

    if ($iteration_count_log2 < 4 || $iteration_count_log2 > 31)
        $iteration_count_log2 = 8;
    $this->iteration_count_log2 = $iteration_count_log2;

    $this->portable_hashes = $portable_hashes;

    $this->random_state = microtime();
    if (function_exists('getmypid'))
        $this->random_state .= getmypid();
}

function get_random_bytes($count)
{
    $output = '';
    if (is_readable('/dev/urandom') &&
        ($fh = @fopen('/dev/urandom', 'rb'))) {
        $output = fread($fh, $count);
        fclose($fh);
    }

    if (strlen($output) < $count) {
        $output = '';
        for ($i = 0; …
Run Code Online (Sandbox Code Playgroud)

php ubuntu codeigniter phpass

6
推荐指数
1
解决办法
1万
查看次数

如何实现phpass登录

我很难将phpass应用到我的登录程序中 - 不知道如何与我当前的代码一起实现它.我对此事有两个问题

1)我需要使用数据库中的散列密码验证用户在此行输入的散列密码:

//select all rows where the username and password match the ones submitted by the user
    $res = mysql_query("SELECT * FROM `users` WHERE `email` = '".$email."' AND `password` = '".$password."'");
Run Code Online (Sandbox Code Playgroud)

我一直在寻找一个在互联网上显示这个但却找不到的例子.我怎么能在这一点上实施phpass?

2)我的数据库中的密码字段当前是varchar(32) - 我是否需要对此进行任何调整以防止在散列新用户密码时进行分组?

这是我的全部代码供参考.

<?php
// include the hashing class  
require ("resources/phpass/PasswordHash.php"); 

// if the user has submitted the form
if(isset($_POST['submit'])){

// protect the posted value then store them to variables
$email = protect($_POST['email']);
$password = protect($_POST['password']);

// setup header
include "resources/php/header.php";

//select all rows …
Run Code Online (Sandbox Code Playgroud)

php phpass

5
推荐指数
1
解决办法
7050
查看次数