每当我输入config.stretches = 20时config/initializers/devise.rb,服务器就会超时加密请求.
重新开始时间可以承受15次延伸,然后随着我提高伸展值而迅速增加,并且在19时变得完全无法使用.我不太了解这个值可能造成的性能影响,但它当然不应该是指数级的,是我的经验.显然我不需要为除authlogic兼容性之外的任何东西提高此值,但无论如何它似乎都是错误的.
我通过全新安装的https://github.com/plataformatec/devise_example/验证了这一点.
在Ubuntu 11.04,任何3.0.x rails版本,3.1.0.beta1,设计1.3.1和1.3.4,mysql,pg,sqlite驱动程序上都会出现此行为.这适用brcypt于sha1加密器以及加密器.
我被聘请在新的PHP 5.3服务器上使用Laravel 4重建一个在CodeIgniter 1.7.3(在PHP 4.2服务器上)上构建的活跃应用程序.
该系统有大约500个用户,其密码使用salted SHA-1哈希进行加密.我想使用bcrypt来提高应用程序的安全性以及与Laravel 4的身份验证系统集成.
您如何建议迁移这些用户密码?
在rails中使用has_secure密码时,如何在创建密码摘要时更改BCrypt使用的默认成本因素?
我想这样做是因为所使用的默认成本因数-10-显然有点低(本文建议至少将其设置为12)。
我的一个项目是将bcrypt模块用于散列秘密.少数人抱怨由于它的依赖性而难以安装.我曾尝试在Windows Server上安装它,它不是在公园散步.
人们要求我使用纯Javascript drop-in替换,例如dcodeIO/bcrypt.js和shaneGirish/bcrypt-nodejs.但我真的不知道使用它们的安全隐患.它们一样可靠吗?
我正在创建一个用户登录。我可以让用户注册,当用户注册时,他的密码在保存到数据库之前被加密。
当同一用户尝试登录时,我收到“无效密码”。
这是因为它将用户输入与数据库中的加密密码进行比较。例如,如果密码是 1234,那么在数据库中它被保存为“$2a$104$0301”。当用户尝试登录时,将用户输入“1234”与“2a$104$0301”进行比较。我该如何解决?
这是我的登录代码:
var LocalStrategy = require('passport-local').Strategy;
var User = require('../Models/users.js');
var bcrypt = require('bcrypt-nodejs');
module.exports = function(passport){
passport.use('login', new LocalStrategy({
passReqToCallback : true
},
function(req, username, password, done){
User.findOne({'username' : username},
function(err, user){
if(err)
return done(err);
if(!user){
console.log('User Not Found with username: '+username);
return done(null, false,
req.flash('message', 'User Not Found.'));
}
if (!isValidPassword(user, password)){
console.log('Invalid Password');
return done (null, false,
req.flash('message', 'Invalid Password'));
}
return done(null, user);
}
);
})
);
var isValidPassword = function(user, password){
var …Run Code Online (Sandbox Code Playgroud) 所以 Bcrypt 对密码的长度确实有限制。我已经阅读了很多关于此的内容。我不明白的一件事是大多数网站如何绕过这个。
我注意到的大多数网站都没有最大密码长度。也许我对此完全错误,但这正是我所注意到的。Bcrypt 似乎是此类事物中最受欢迎的库之一。
那么,所有这些网站是否只是不提醒用户,而 Bcrypt 正在将密码削减到最大字符限制而不提醒用户呢?或者他们正在使用一些特殊技术来允许更长的密码?
我只是想弄清楚如何最好地实现这一点。我希望没有最大字符数限制。但与此同时,我想直接告诉用户,如果 Bcrypt 正在削减密码,用户应该知道这一点。
对于如何在实践中处理这种限制有什么建议吗?
我是一家公司的开发人员,该公司的应用程序是用PHP和MySQL构建的.我们有大约300个用户使用bcrypt对其密码进行哈希处理并存储在users表中的用户.我们希望使用Angular和Firebase重建应用程序.
我的问题是,如何通过Firebase迁移这些用户并使用Firebase Auth.迁移配置文件信息很容易,但我想确保用户在登录新应用程序时仍然可以使用相同的电子邮件/密码.
以下是我想到的一些方法.在我看来,所有这些都很可怕.
A)创建一个使用bcrypt的自定义身份验证系统,然后只复制哈希值.这不是我想要的,因为我不想维护自定义身份验证解决方案.
B)每次用户登录旧系统时,从登录字段中获取密码,以明文形式存储,然后使用电子邮件/密码在Firebase中手动创建每个用户.在我们切换到新应用程序之前,这将要求100%的用户登录.这不太可能.这显然也是对隐私的侵犯.我敢肯定它违反了某种法律或标准.但它有效,这是最后的选择.
C)每次用户登录旧系统时,请以明文形式将电子邮件/密码发送到脚本,该脚本使用相同的用户/电子邮件自动创建新的Firebase用户.在我们切换到新应用程序之前,这将要求100%的用户登录.这不太可能.它比选项B更难建立.
这些选项都不是很好看.他们都有缺点.有更好的选择吗?如果不是,在B和C之间,哪个是最合法/合乎道德的?选项B诱惑我,因为它非常简单,但我不想破坏任何法律或失去我公司客户的信任.
在将密码存储在 SQLite3 表中之前,我试图让我的 Python 应用程序加密密码。我在 Flask VirtualEnvironment 上安装了 bcrypt。但是,每当我运行脚本时,都会出现错误:
File "./run.py", line 2, in <module>
from app import app
File "/home/test/app/__init__.py", line 12, in <module>
from app import views
File "/home/test/app/views.py", line 8, in <module>
from flask_bcrypt import Bcrypt
File "/home/test/flask/local/lib/python2.7/site-packages/flask_bcrypt.py", line 27, in <module>
raise e
ImportError: No module named bcrypt
Run Code Online (Sandbox Code Playgroud)
views.py 上的第 8 行如下所示:
from flask_bcrypt import Bcrypt
Run Code Online (Sandbox Code Playgroud)
我可能做错了什么?
我有一个 Spring boot 2.0.1 服务,我向其中添加了使用 BCrypt 进行哈希处理的基本身份验证。但这项服务在添加基本身份验证之前平均需要 400 毫秒,现在需要 1 秒以上。我正在使用用户详细信息服务,它在哈希映射中查找发送的用户名并返回用户详细信息。我尝试将 BCrypt 轮数减少到 4,但这并没有产生太大影响。
早些时候,我启用了无状态身份验证,后来将其禁用,但性能仍然很差。该服务托管在 Docker 容器中。
以下是我的安全配置。
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class SecurityConfig extends WebSecurityConfigurerAdapter {
private UserDetailsService userDetailsService;
@Autowired
public SecurityConfig(UserDetailsServiceImpl service) {
this.userDetailsService = service;
}
@Bean
public PasswordEncoder passwordEncoder() {
Map encoders = new HashMap<>();
encoders.put(BCRYPT_ID, new BCryptPasswordEncoder(BCRYPT_ROUNDS));
return new DelegatingPasswordEncoder(BCRYPT_ID,encoders);
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http.cors()
.and()
.csrf().disable()
.httpBasic();
}
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(userDetailsService)
.passwordEncoder(passwordEncoder()); …Run Code Online (Sandbox Code Playgroud) java spring-security bcrypt basic-authentication spring-boot
当我尝试使用bcrypt.compare登录用户来比较密码时,此错误消息显示在我的终端中.
dyld: lazy symbol binding failed: Symbol not found: __ZN4node19GetCurrentEventLoopEPN2v87IsolateE
Referenced from: /pathTo/node_modules/bcrypt/lib/binding/bcrypt_lib.node
Expected in: flat namespace
dyld: Symbol not found: __ZN4node19GetCurrentEventLoopEPN2v87IsolateE
Referenced from: /pathTo/node_modules/bcrypt/lib/binding/bcrypt_lib.node
Expected in: flat namespace
Run Code Online (Sandbox Code Playgroud)
我正在使用node.js和express.