我正在编写一个单元测试,说明应该使用 bcrypt 对用户密码进行散列。要断言这一点,我需要能够检查字符串是否看起来像 bcrypt 哈希。
我找不到一个函数来告诉我在字符串上使用了什么散列算法,除了正则表达式之类的方法之外,还有其他方法可以做到吗?
简短:我无法使用 my.domain.ch 名称从外部(运行 MAC 的本地计算机)登录我的 docker-registry(托管在服务器中心的 ubuntu-vm (14.04LTS) 上)。
我可以使用“docker login http://localhost:5000 ”从运行注册表的ubuntu-machine(vm-2)成功登录
这是我的设置:
vm-1:Ubuntu 14.04 上的 nginx/1.10.1 充当反向代理(此处未安装 docker):
upstream registry {
server vm-2:5000 fail_timeout=5s;
}
server {
listen 80;
server_name my.domain.ch; # server_name ;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name my.domain.ch; # server_name ;
charset utf-8;
keepalive_timeout 5;
add_header Docker-Distribution-Api-Version registry/2.0 always;
ssl_certificate /etc/nginx/ssl/cert.pem;
ssl_certificate_key /etc/nginx/ssl/key.pem;
ssl_ecdh_curve secp521r1;
ssl_protocols TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCMSHA384:ECDHE-ECDSA-AES256-SHA384:EC$
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header …Run Code Online (Sandbox Code Playgroud) 我正在学习 Nodejs 背景下的传递哈希,我想知道你会推荐什么盐级别。默认级别是 10,我想知道这对于少于 10 个用户的基本应用程序来说是否足够好。
我知道这个问题已经被问过几次了(比如这里,这里或那里,甚至在Github上,但没有一个答案真正对我有用......
我正在尝试使用 Mongoose 和 Passport 为 NodeJS 应用程序开发身份验证,并使用 Bcrypt-NodeJS 来哈希用户的密码。
在我决定重构用户架构并使用 bcrypt 的异步方法之前,一切都正常运行。创建新用户时哈希仍然有效,但我现在无法根据存储在 MongoDB 中的哈希来验证密码。
bcrypt.compare()总是返回false无论密码正确与否,无论密码是什么(我尝试了几个字符串)。为了保持清晰,一些字段已被删除,但我保留了相关部分。
var userSchema = mongoose.Schema({
// Local authentication
password: {
hash: {
type: String,
select: false
},
modified: {
type: Date,
default: Date.now
}
},
// User data
profile: {
email: {
type: String,
required: true,
unique: true
}
},
// Dates
lastSignedIn: { …Run Code Online (Sandbox Code Playgroud) I was trying to implement a functionality where a user can reset a password. I have tried the below code and while I am not getting any error, its not updating the password. The password is the same ie the old password.
my User model file is as follows:-
const mongoose = require('mongoose');
var passportLocalMongoose = require("passport-local-mongoose");
const LoginUserSchema = new mongoose.Schema({
name: {
type: String,
required: true
},
email: {
type: String,
unique: true,
required: true
},
password: { …Run Code Online (Sandbox Code Playgroud) 我正在尝试按照此处提供的指南实现" 记住我 "功能:基于表单的网站身份验证的权威指南,此处:http://fishbowl.pastiche.org/2004/01/19/persistent_login_cookie_best_practice/
看来,"cookie令牌"应该在存储在数据库中时进行哈希处理(如果攻击者可以访问数据库,则未使用的令牌看起来像普通的登录/密码,允许登录网站).
寻找一个好的哈希算法,我发现这个推荐的技术使用bcrypt:https://stackoverflow.com/a/6337021/488666
我已经尝试过,发现随着建议的轮数(15)导致处理时间非常慢(在2,3或者英特尔2核E500 + 4 GB RAM上验证2,3s)
我知道哈希算法应该相对缓慢阻碍攻击者,但在这个层面上,它阻碍了用户使用网站:)
你认为减少轮数(例如7,将处理时间减少到10ms + 10ms)就足够了吗?
在rails中使用has_secure密码时,如何在创建密码摘要时更改BCrypt使用的默认成本因素?
我想这样做是因为所使用的默认成本因数-10-显然有点低(本文建议至少将其设置为12)。
我的一个项目是将bcrypt模块用于散列秘密.少数人抱怨由于它的依赖性而难以安装.我曾尝试在Windows Server上安装它,它不是在公园散步.
人们要求我使用纯Javascript drop-in替换,例如dcodeIO/bcrypt.js和shaneGirish/bcrypt-nodejs.但我真的不知道使用它们的安全隐患.它们一样可靠吗?
我在一家提供软件服务的初创公司工作,最近我们制定了加密安全标准。对于散列,设定的标准是我们应该使用 SHA-512 或 SHA-256。
对于Java,我们正在考虑使用Spring的Bcrypt或Argon2。实际上阅读他们的文档,如果他们的底层算法使用 SHA-512 或 SHA-256 或其他东西,找不到任何信息?
或者这些都是过时的哈希算法,我们应该使用其他算法吗?
谁可以帮我这个事?
我存储密码,如果您是开发人员,那么以实际上最好的方式存储密码很容易。所以我想知道,2021年哪个最好?对我来说,调整我的代码以使其成为最好的代码很容易。
是的- 我研究并阅读了 Stack Overflow 和其他网站上的许多文章,所有这些文章都提供了最好的建议,并且我已经遵循了它,所以这个问题不会重复其他线程。
我目前所做的事情的高级概述:
这是我从读过的所有文章和主题中“学到”的智慧。
但是,就在最近,有人告诉我,实际上上述内容在 2021 年应该被认为是不安全的。虽然这个人有很好的资格,但我仍然对在对话中进行任何安全更改保持警惕,而且我不是安全专家,所以我之前想我做出改变然后我必须测试它。
而且,我想不出比 Stack Overflow 更好的地方了,我知道如果它值得的话,它会立即被切成碎片!我不是安全专家,但我问这个问题听起来很可信。
所以我带着一些惶恐的样子问,并跟随一些我相信的白痴,以下......是的,我问这个不是其他人。请找出我所提出的逻辑,然后我向您展示......哎呀!:
Users您的数据库表已被泄露,那么您存储的 SALT 也已被泄露(从我所读到的内容来看,这是普遍接受的)因此,使用bcrypt 或类似工具生成随机 SALT更加安全,因为工具已经发展到了这一点。盐实际上不再有任何区别,正如基本上所预期的那样。
问题 1: 以上情况是否属实? (我个人完全不知道)
显然,推荐的 2021 年解决方案如下:
bcrypt ×10
hash ×4
node.js ×4
mongoose ×2
passwords ×2
php ×2
security ×2
argon2-ffi ×1
cookies ×1
encryption ×1
javascript ×1
nginx ×1
passport.js ×1
phpunit ×1
remember-me ×1
ubuntu-14.04 ×1