标签: salt

PHP Sessions + Useragent with salt

在过去的几天里,它一直在我的脑海中运行,但我读了一些关于如何使PHP会话更安全的文章.几乎所有这些文章都说你需要在会​​话中使用额外的盐来保存useragent.像这样的东西:

$fingerprint = md5('SECRET-SALT'.$_SERVER['HTTP_USER_AGENT']);
Run Code Online (Sandbox Code Playgroud)

盐会使攻击者更难以劫持或任何会话.但为什么每次检查时都加盐:

md5('SECRET-SALT'.$_SERVER['HTTP_USER_AGENT']) == $_SESSION [ 'fingerprint' ]
Run Code Online (Sandbox Code Playgroud)

因此,为什么盐会使它更安全,因为攻击者仍然只需要使用者(相对来说是一小组不同的使用者)和sessionid?

可能是我忽略的小东西,但无法弄明白,让我疯狂哈哈

谢谢!

php user-agent salt session-hijacking

4
推荐指数
1
解决办法
7999
查看次数

如何使用Wordpress salt加密Wordpress中的密码?

我想用标准的Wordpress盐加密发送到数据库的密码,就像Wordpress在创建新用户时那样.我知道我可以在wp-config.php中找到我的盐.所以我不需要生成盐; 我只需要加密密码.

因此,当我创建mypassword0时,发送到数据库的是由我的Wordpress盐加密的文本字符串.

这是我的原始代码.(谢谢Yadav Chetan的帮助!)现在我只需要添加salt加密代码.

  <?php
        if(isset($_POST['submit'])){

        $query = "INSERT INTO mytable_one
          (user, pass)
          VALUES
          ('".$_POST['user']."', '".$_POST['pass']."')";

        $query = "INSERT INTO mytable_two
          (fname, lname)
          VALUES
          ('".$_POST['fname']."', '".$_POST['lname']."')";

        mysql_query($query);

         }else{
    ?>
    <div class="content">
        <form method="post">
            <div><strong>First Name:</strong><span class="errortext">*</span></div>
            <div><input id="first-name" name="fname" type="text" /></div>

            <div><strong>Last Name:</strong><span class="errortext">*</span></div>
            <div><input id="last-name" name="lname" type="text" /></div>

            <div><strong>User:</strong><span class="errortext">*</span></div>
            <div><input id="user-login" name="user" type="text" /></div>

            <div><strong>Password:</strong><span class="errortext">*</span></div>
            <div><input id="user-pass" name="pass" type="text" /></div>

            <div><input id="submit-button" value="submit" type="submit" />
        </div>          
        </form>
    <?php }?>
Run Code Online (Sandbox Code Playgroud)

更新:

RRikesh建议我将mysql_*更改为WPDB代码.所以我尝试将其更改为wpdb,我还需要将其与其他代码集成.那么你可以帮我解决这个更新的代码吗?

<?php
    if(isset($_POST['submit'])){ …
Run Code Online (Sandbox Code Playgroud)

php sql passwords wordpress salt

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

如何在Apache Shiro中使用GWT进行哈希和盐腌

在这个小教程中,我将向您展示如何构建一个负责注册和登录的GWT模块.

密码用Sha256进行哈希处理并加盐.

mysql gwt salt shiro

4
推荐指数
1
解决办法
3165
查看次数

Crypt()salt生成和密码加密,执行得很好?

这些是我用于密码加密和密码验证的一些功能.想知道这是否是处理它的好方法.我正在使用codeigniter框架.

这是'加密'的功能:

function crypt_pass( $input ){
    $salt = substr(sha1(date('r')), rand(0, 17), 22);
    $cost = 10;
    $hash = '$2y$' . $cost . '$' . $salt;

    $pw_and_salt['pw'] = crypt($input, "$hash");
    $pw_and_salt['salt'] = $salt;

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

我将密码和盐存储在我的数据库中.这是登录功能:

function login(){

    $this->db->select('salt');
    $salt = $this->db->get_where('users', array('username' => $this->input->post('username') ) )->row();



    $where = array(
        'username' => $this->input->post('username'),
        'password' => crypt( $this->input->post('password'), '$2y$10$' . $salt->salt),
    );


    $user = $this->db->get_where('users', $where)->first_row();

    if (!$user) {
        return FALSE;
    }else{
        if(!empty($user->activation)){

            return 2;

        }else if($user && empty($user->activation)){
            $this->session->set_userdata('id',$user->id);
            $this->session->set_userdata('username',$user->username);
            $this->session->set_userdata('first_name',$user->first_name); …
Run Code Online (Sandbox Code Playgroud)

php mysql crypt codeigniter salt

4
推荐指数
1
解决办法
6077
查看次数

使用salt"找不到顶级文件或外部节点数据匹配"

盐的新手,我添加第一个服务器(wx-1),它的工作原理,但是当我添加一个不同的服务器时,test.ping是可以的,但是当执行时salt 'qing' state.highstate,它失败了,错误信息是:

No Top file or external nodes data matches found
Run Code Online (Sandbox Code Playgroud)

这是我的top.sls:

base:
  'wx-1':
    - bin.nginx
    - git
    - web
    - mongo
    - redis
  'qing':
    - bin.nginx
Run Code Online (Sandbox Code Playgroud)

qing是一个新的服务器,它的配置与wx-1不同,不知道这是否正常,谢谢你的帮助:)

salt

4
推荐指数
2
解决办法
9214
查看次数

Salt/Hash for Firebase简单登录?

Firebase提供"简单登录",其中使用电子邮件/密码进行身份验证.在存储密码之前,有没有人知道firebase盐和哈希密码?我认为firebase足够了解这一点,但我只是想确定一下,因为经过一个小时的搜索后我找不到任何东西.

预期的后续行动:如果firebase实际上没有加密+哈希密码,那么如果我使用用户密码,盐水+哈希值并将其传递到firebase进行存储/检查,那么简单登录是否有效?

提前致谢!

hash salt firebase firebase-security firebasesimplelogin

4
推荐指数
1
解决办法
5021
查看次数

WildFly:Java EE应用程序中随机加密的密码

什么是使用存储在数据库中的随机盐渍密码的WildFly(8.2)方法?

是的实现org.jboss.crypto.digest.DigestCallback意味着有机会获得部分盐从数据库(在密码验证过程)?

或者我应该简单地将密码哈希并加密密码,然后再将其交给login方法HttpServletRequest

security salt java-ee-7 wildfly-8

4
推荐指数
1
解决办法
1872
查看次数

PBKDF2 中的盐 - Python

按照本教程,我只是在使用 MySQL 和 Python 进行开发时学习如何保护密码。

我的理解是用户密码存储在散列的数据库中,而盐并没有加密存储,因此我们可以获取散列的密码和盐,并使用盐重新散列输入的密码,然后比较两者。

但是,当使用 PBKDF2(通过passlib.hash.sha256_crypt()函数)时,我不能设置自己的盐,只能设置它的大小。那么如何使用相同的盐重新哈希密码,以便我可以比较两者?

python mysql salt pbkdf2 python-3.x

4
推荐指数
1
解决办法
5859
查看次数

使用C#保护用户密码-Rfc2898DeriveBytes与SHA512

我一直在阅读有关保护数据库中用户密码的信息(https://crackstation.net/hashing-security.htm)。基本概念已被理解-生成一个随机的Salt,将其附加到密码并哈希密码。

所以这就是我所做的(我没有在这里放一些可以转换为字符串的方法):

RandomNumberGenerator randomNumberGenerator = RandomNumberGenerator.Create();
byte[] rndBytes = new byte[512];
randomNumberGenerator.GetBytes(rndBytes);
string salt = ToHexString(rndBytes);

var sha512Hasher = SHA512.Create();
string hashedPwd = ToHexString(sha512Hasher.ComputeHash(GetBytes(pwd + salt)))
Run Code Online (Sandbox Code Playgroud)

根据这篇文章,这是安全的,但通过使用“键扩展”可以更加安全,据我所知,“键扩展”对哈希的执行速度较慢(使用参数),使暴力破解密码的难度加大。

所以这就是我所做的:

RandomNumberGenerator randomNumberGenerator = RandomNumberGenerator.Create();
byte[] salt = new byte[512];
randomNumberGenerator.GetBytes(salt);
Rfc2898DeriveBytes k1 = new Rfc2898DeriveBytes(user.Password, salt, 1000);
byte[] hashBytes = k1.GetBytes(512);
string hash = ToHexString(hashBytes);
Run Code Online (Sandbox Code Playgroud)

现在这是我的问题:

  1. SHA512和之间有什么区别Rfc2898DeriveBytes?哪个更安全?
  2. 我应该在迭代中增加盐分吗?会使其更安全吗?
  3. 在1000次迭代中,它运行得非常快-应该慢多少?半秒钟?一秒?这里的经验法则是什么?
  4. 在数据库上-我应该将字节数组转换为字符串并存储字符串,还是应该将字节数组存储在二进制数据字段中?

编辑(另一个问题)

  1. 如果我在重新哈希处理SHA512上迭代了1000次-它是否具有相同的安全性?

c# security passwords hash salt

4
推荐指数
1
解决办法
1323
查看次数

Bcrypt Hash 返回 TypeError(“Unicode 对象必须在散列之前编码”)和无效盐

我已经查看了与此相关的所有 StackOverflow 问题,但我似乎无法弄清楚这一点。当我对密码进行散列并对其自身进行检查时,它会使用当前代码返回 TypeError“Unicode 对象必须在散列之前进行编码”:

from scripts import tabledef
from flask import session
from sqlalchemy.orm import sessionmaker
from contextlib import contextmanager
import bcrypt

(Unrelated Python code...)

def hash_password(password):
     return bcrypt.hashpw(password.encode('utf8'), bcrypt.gensalt())


def credentials_valid(username, password):
    with session_scope() as s:
        user = s.query(tabledef.User).filter(
            tabledef.User.username.in_([username])).first()
        if user:

            return bcrypt.checkpw(password.encode('utf8'), user.password)
        else:
            return False
Run Code Online (Sandbox Code Playgroud)

当我尝试通过设置修复此错误时user.password= user.password.encode('utf8'),我收到“Invalid Salt”。

这段代码有什么问题?

更新:我通过用户的 Flask 输入存储密码:

import json
import sys
import os
import plotly
import pandas as pd
import numpy as np
import plotly.graph_objs as go


from …
Run Code Online (Sandbox Code Playgroud)

python salt bcrypt flask

4
推荐指数
1
解决办法
1773
查看次数