前段时间我加入了新项目.它正在开发很长一段时间.让我感到惊讶的是,所有用户的密码都以非加密形式存储.
我向管理层解释了这方面的巨大安全漏洞 - 看起来他们同意这一点,并希望使项目更安全.团队成员也同意.
我们在系统中有大约20K用户.
实际上,使这项工作非常紧张 - 将非加密密码迁移到加密形式.如果出现问题,可能导致项目灾难.
我该如何降低这种压力?备份?单元测试(整合测试)?
考虑使用指令中的Salt参数的ASP.NET MVC应用程序[ValidateAntiForgeryToken].
该场景使得该应用程序将被许多客户使用.Salt在编译时知道它是非常可取的.
当前的策略是在web.config中找到Salt值.
[ValidateAntiForgeryToken(Salt = Config.AppSalt)]
//Config.AppSalt is a static property that reads the web.config.
Run Code Online (Sandbox Code Playgroud)
这导致编译时异常,表明Salt在编译时必须是const.
属性参数必须是属性参数类型的常量表达式,typeof表达式或数组创建表达式
如何修改应用程序以允许运行时加载,Salt以便不必为每个客户重新安装和重新编译应用程序?
考虑到Salt不会经常改变,如果有的话,从而消除了使表格无效的可能性
现在我在数据库(用户表)中有一个"salt"列和一个"password"列,varchar(64)和sha-256哈希值作为值.
您是否认为在密码验证期间消除盐列并使用用户的电子邮件地址生成盐是一个好主意?这样可以节省数据库中的一些空间.
我正在使用以明文形式存储密码的遗留应用程序.我已将应用程序移植到spring 3 mvc + security.我还成功地使用sha256 +基于用户名的盐来获得Spring安全性处理认证和授权.这一切都很好,但作为部署的一部分,我将需要迁移现有数据库以使用新密码模式.我不确定Spring安全性如何使用salt进行密码散列,因此我无法编写可用于将旧明文密码迁移到新sha256 + salt模式的sql脚本.是否有任何文档或资源可用于解决这个问题?
这是我的问题:根据您的经验,为进行散列的 PHP 文件中存储的每个散列使用一个盐是否更安全,还是为每个散列对象使用不同的盐并将其与该对象一起存储在数据库中更好?
我刚读了一篇文章.它说:
所以我不是说盐是没有目的的,我说他们不会阻止字典或暴力攻击(他们没有).
如果您有一个带有散列密码和salt的数据库转储,只有在您知道crypt算法的情况下才能启动暴力破解.如果您使用开源,则可能会出现问题.但是如果你稍微改变算法,那就不是问题了,直到有人知道它.我对吗?
以下代码以任何方式返回相同的加密密码.为什么以及如何阻止这种情况.
$pwd = 'shits8888';
$salt = '50153fc193af9';
echo crypt($pwd,$salt)
Run Code Online (Sandbox Code Playgroud)
显然有些东西丢失了,因为这会返回相同的东西
$pwd = 'shits8888hjhfgnsdkjf8744884';
$salt = '50153fc193af9';
echo crypt($pwd,$salt)
Run Code Online (Sandbox Code Playgroud) 我一直在研究保护 API 以在 android/iphone 应用程序或网站应用程序中使用的技术。
我找到了一种我喜欢的技术,但不确定它是否好或有什么问题(除了是一个非常漫长的过程)。
处理(最初
是用户端):首先通过散列用户密码来创建盐。
然后通过散列请求的 url(通过查询字符串在末尾附加用户名)和盐来创建签名。
最后通过散列用户名和签名来创建令牌。
令牌在标头内传递到服务器(每次)。
第一个请求:
第一个请求必须针对验证端点,并包含 device_id 作为查询字符串。
在服务器上完成相同的处理(如上),如果令牌与用户发送的令牌匹配,则 device_id 存储在数据库中并分配给该用户名以供将来参考(设备 ID 可在请求的 url 中找到)并用于此后验证用户名/设备。
所有后续请求:
处理必须在用户端和服务器端进行,现在每个请求的令牌都不同(随着请求的 url 更改)。
没有包含代码,因为它尚未编写。
我的Salting和SHA-512哈希密码的实现是否正确/安全?
我知道我应该在盐渍密码上迭代算法几次.除此之外,我应该实施什么才能使其安全或者这足够了?
public static String[] SHA512(String password)
{
//Generates the salt
SecureRandom saltRandomizer = new SecureRandom();
byte[] salt = new byte[64]; //The same size as the output of SHA-512 (512 bits = 64 bytes)
saltRandomizer.nextBytes(salt);
String encodedSalt = Base64.encodeToString(salt, Base64.DEFAULT);
//Prepends the salt to the password
String saltedPassword = encodedSalt + password;
//Hashed the salted password using SHA-512
MessageDigest digester;
byte[] digest = null;
try {
digester = MessageDigest.getInstance("SHA-512");
digester.reset();
digester.update(saltedPassword.getBytes());
digest = digester.digest();
} catch (NoSuchAlgorithmException e) {
System.out.println("No …Run Code Online (Sandbox Code Playgroud) 我忘记了我的wordpress管理员密码,但我能够进入我的数据库并拥有哈希密码,并且我还有来自我的wp-config.php文件的盐密钥.
有谁知道如何从上面的细节中获取我的密码.
我尝试忘记密码的事情,但我从来没有收到电子邮件重置密码.
salt ×10
hash ×3
passwords ×3
php ×3
encryption ×2
java ×2
security ×2
api ×1
asp.net-mvc ×1
brute-force ×1
crypt ×1
cryptography ×1
csrf ×1
mysql ×1
rest ×1
saltedhash ×1
sha512 ×1
spring ×1
token ×1
wordpress ×1