使用随机盐改进密码散列

2024-04-15

我正在创建一个网站,并尝试决定如何加密用户密码以将其存储在 SQL 数据库中。

我意识到使用简单的 md5(密码)是非常不安全的。我正在考虑使用 sha512(password.salt),并且我一直在研究生成有用盐的最佳方法。 我读过很多文章,指出盐应该尽可能随机,以向散列添加熵,这看起来是个好主意。但:

  • 您需要将随机盐与哈希值一起存储
  • 鉴于攻击者以某种方式访问​​了您的散列密码(并试图将散列反转为纯文本),这意味着他可能转储了您的数据库,然后也访问了您的随机盐

数据库中哈希旁边的奇怪值是盐,这不是很明显吗?如果攻击者可以访问盐和哈希值,那么如何更安全?

有人在该领域有专业知识吗?谢谢!


攻击者是“允许”了解盐 - 您的安全性设计必须确保即使了解盐,它仍然是安全的。

盐有什么作用?

Salt 使用预先计算的“彩虹表”帮助防御暴力攻击。
对于攻击者来说,盐使得暴力破解的成本更高(在时间/内存方面)。
计算这样一张表的成本很高,并且通常仅在可用于多个攻击/密码时才进行。
如果您对所有密码使用相同的盐,攻击者可以预先计算这样的表,然后将您的密码暴力破解为明文......
只要您为每个要存储散列的密码生成一个新的(最好的加密强度)随机盐,就没有问题。

如果您想进一步加强安全性
您可以多次计算哈希值(哈希哈希值等) - 这不会花费您太多钱,但它会使暴力攻击/计算“彩虹表”更加昂贵......请不要发明自己- 有经过验证的标准方法可以做到这一点,请参见示例http://en.wikipedia.org/wiki/PBKDF2 http://en.wikipedia.org/wiki/PBKDF2 and http://www.itnewb.com/tutorial/Encrypting-Passwords-with-PHP-for-Storage-Using-the-RSA-PBKDF2-Standard http://www.itnewb.com/tutorial/Encrypting-Passwords-with-PHP-for-Storage-Using-the-RSA-PBKDF2-Standard

NOTE:

如今使用这样的机制强制的因为“CPU 时间”(可用于彩虹表/暴力破解等攻击)变得越来越广泛(例如,亚马逊的云服务跻身全球最快超级计算机前 50 名,任何人都可以使用相对较小的金额)!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用随机盐改进密码散列 的相关文章

  • Laravel 异常队列最大尝试次数超出

    我创建了一个应用程序来向多个用户发送电子邮件 但在处理大量收件人时遇到问题 该错误出现在failed jobs table Illuminate Queue MaxAttemptsExceededException App Jobs ESe
  • WSDL PHP 函数返回 null,而其他函数返回预期结果

    Summary 在这里 我将列出我解决此问题所采取的所有步骤 以供其他人参考 1 PHP 很愚蠢地 监听 函数的输入消息来定义它应该使用哪个函数 因此 为每个函数提供不同的输入消息 即使它使用相同的类型或元素 您可能认为这对您来说是一项艰巨
  • PHP - 从动态添加的 html 表格行获取输入

    我在这里设置了以下小提琴Fiddle https jsfiddle net fqugd7vL 7 如您所见 我可以通过单击 添加行 按钮来添加输入 添加的所有输入都有唯一的 ID 和名称 问题是 我不能只做类似的事情 actionInput
  • 如何在自动完成表单的脚本中获取 json 文件的多个值

    拜托 我是 php 初学者 我想使用像这样的 json 编码的数组 http stegonia fr autocomplete index2 php http stegonia fr autocomplete index2 php 您可以看
  • Laravel 检查集合是否为空

    我的 Laravel 网络应用程序中有这个 foreach mentors as mentor foreach mentor gt intern as intern tr class table row link td intern gt
  • 使用 MySQL 的 CURDATE() 或 PHP 的 date() 更快?

    使用mysql查询是不是更快 SELECT CURDATE as today 或 PHP 语句 curdate date Y m d 同样的答案是否适用于使用date VS MySQL 的NOW and CURTIME 如果您只是执行查询以
  • 使用 Sequelize (NodeJS) 代替 * 指定特定字段

    好吧 我在 NodeJS 中有一个项目 我正在其中使用 Sequelize 来实现 MySQL ORM 这件事工作得非常好 但是我试图弄清楚是否有一种方法可以指定在查询的基础上返回哪些字段 或者是否有一种方法可以在某处执行 query 例如
  • 不能简单地使用 PostgreSQL 表名(“关系不存在”)

    我正在尝试运行以下 PHP 脚本来执行简单的数据库查询 db host localhost db name showfinder username user password password dbconn pg connect host
  • Zoopla 沙箱出现 cURL http 标头错误

    我正在为房地产经纪人开发代码 以通过他们的数据源将房产上传到 Zoopla 我在将所需的配置文件添加到所需的 http 标头时遇到问题 文档中唯一的示例是来自 Linux 的测试 echo branch reference test cur
  • 用于全文搜索和 2 亿多条记录的数据库

    我即将创建一个包含至少 2 亿个条目的庞大数据库 数据库需要可使用全文进行搜索 并且速度应该很快 我的数据库从许多不同的数据源获取数据 我需要定期导入新的或更新的数据 将我的所有数据存储在像 mysql 这样的关系数据库中 然后创建一个 n
  • Laravel 4 Blade @include 变量

    我试图做include使用 Laravel Blade 但问题是它无法传递变量 这是我的示例代码 file include blade php
  • MySQL Tinybit(1) 通过视图的列

    我有一个连接 2 个表的视图 其中一个表具有表示布尔值的tinyint 1 类型的列 该表在连接时并不总是有条目 因此当行丢失时视图需要采用 0 false 值 我希望视图公开 TINYINT 1 类型且 NOT NULL 类型的列 因为它
  • Magento - 无法重新索引产品价格 - 外键约束失败

    我最近刚刚将我的 magento 商店从 1 4 2 升级到 1 7 0 2 升级进行得很顺利 但是当我尝试在升级后重新索引数据时 产品价格失败了 我尝试过使用php shell indexer php reindexall来自 SSH 它
  • 同源政策目的可疑

    正如我所读到的 同源策略是防止源自 邪恶 域 A 的脚本向 良好 域 B 发出请求 换句话说 跨站点请求伪造 玩了一下我了解到的Access Control Allow Origin标头和CORS据我了解 它允许从好域 B 指定服务器 域
  • 如何使用Python3.4在tornado中进行异步mysql操作?

    我现在使用Python3 4 我想在Tornado中使用异步mysql客户端 我已经发现torndb https github com bdarnell torndb但在阅读其源代码后 我认为它无法进行异步mysql操作 因为它只是封装了M
  • MySQL - 查找接近的匹配项

    MySQL 有没有办法在文本字段中找到紧密匹配的内容 说找到 email protected cdn cgi l email protection当搜索时 email protected cdn cgi l email protection
  • laravel 模型保存后、保存前等回调

    Laravel 中是否有回调 例如 afterSave beforeSave etc 我进行了搜索 但一无所获 如果没有这样的事情 实施它的最佳方法是什么 Thanks 实现保存前后回调以扩展的最佳方法save 功能 这是一个简单的例子 c
  • php laravel Blade 模板不渲染

    我正在尝试使用 Laravel 和 twitter bootstrap 设置一个基本页面 我安装了 Laravel 并获得了通用的 你在这里 或 w e 图像 这样看起来很闪亮 对于 twitter bootstrap 我在 public
  • 如何在没有 DROP 数据库权限的情况下从命令行删除所有 MySQL 表? [复制]

    这个问题在这里已经有答案了 如何使用命令提示符删除 Windows MySQL 中的所有表 我想这样做的原因是我们的用户有权访问数据库删除 但无权重新创建数据库本身 因此我们必须手动删除表 有没有办法一次删除所有表 请记住 大多数表都与外键
  • 如何配置 nginx 重写规则以使 CakePHP 在 CentOS 上运行?

    大家好 请帮帮我 我正在尝试在运行 Nginx 和 Fact CGI 的 Centos 服务器上设置 cakephp 环境 我已经在服务器上运行了一个 WordPress 站点和一个 phpmyadmin 站点 因此我已经正确配置了 PHP

随机推荐

  • 在 OR 上下文中使用多个 Laravel 作用域

    我有一个订阅模型 其中包含start date and end date我的 Laravel 应用程序中的属性 我创建了两个查询范围 scopeActive 和scopeFuture 分别 来查找活动订阅和未来订阅 我想知道如何在 OR 上
  • 在Win7 64位上安装Qwt

    我在网上搜索但没有找到适合我的问题的解决方案 Problem Qwt 安装失败nmake step 我做了什么 安装了Qt 5 1 适用于 Windows 64 位的 Qt 5 1 1 VS 2012 525 MB 信息 来自qt 网站 h
  • 保存后从 Django 表单获取模型 ID

    view py someForm SomeForm request POST someForm customSave request user forms py class SomeForm ModelForm class Meta mod
  • 将文本替换为带有 chrome 扩展的链接

    我正在尝试用链接替换网页上的文本 当我尝试这样做时 它只是用标签替换文本 而不是链接 例如 此代码将用以下内容替换 河流 a href http www cnn com asdf a 这是我到目前为止所拥有的 function handle
  • Python:“导入 posix”问题

    如果我导入os模块 我可以运行以下命令来推断 os py 的位置 gt gt gt import os gt gt gt print os file usr lib python2 6 os pyc 但是 当我导入时posix 它不具有 f
  • codeigniter 链接到另一个页面

    我是 codeigniter 框架的新手 我的 href 链接有问题 在我的主页中 我有一些菜单 可以转到不同的页面 例如 在正常的 php 中 如果我想进入 销售书籍 页面 那么我只需将 sellBook php 放在 href 链接中
  • 在 ASP.net 页面中嵌入 SVG

    我想将 svg 直接嵌入到我的 ASP net MVC 视图中 以便输出如下所示
  • 与 BLE 设备交互的 Android 应用程序无法在 Chromebook 上运行

    我有一个与自定义 BLE 设备交互的 Android 应用程序 此应用程序在 Android 版本 4 4 至 6 0 的设备上按预期运行 现在我想通过 Chromebook 上的 Google Playstore Chrome 的应用运行
  • Grails 编辑 Flash 删除消息

    你好 我是 Grails 的新人 我已经实现了一个删除操作 删除了收件箱中的邮件 但现在我想更改闪现消息 以在删除多条邮件时显示 2 条邮件已删除 而不是 邮件 4 已删除 邮件 5 已删除 请协助 以下是我的删除操作 def 删除 def
  • 简单的 Bash if-else

    好吧 由于某种原因我无法让它工作 if etc mysql my cfn exist then goto end else bash install sh end exit 检查不存在并运行install sh如果属实 e etc mysq
  • div 中的 contentEditable javascript 插入符位置

    我有一个contentEditable div 假设用户单击一个按钮 将 HTML 插入可编辑区域 因此 他们单击一个按钮 以下内容将添加到innerHTML of the contentEditable div div div div d
  • 使用批处理文件或 .NET 代码更改 Web.config 中的值

    我的计算机上有一个 web config 文件 我需要在文件中更改和添加很多内容 我实际上正在使用我的 SharePoint web config 文件 我可以用批处理文件来执行此操作吗 如果可以 我该怎么做 或者我如何使用 VB NET
  • 如何使用多个类从 QDialog 获取值

    我目前正在 Nuke 11 的一个面板中工作 该面板打开一个 QDialog 我想知道当我关闭 QDialog 时如何从它获取一个值到我的主类中 QDialog 属于不同的类 这是一个显示我的问题的简化示例 import nuke from
  • 如何将 ResultSet 转换为 Object[] 并检索数据

    我有一个List
  • 如何使用和应用 JavaScript 装饰器?

    我试图了解如何在一段非常简单的代码中使用装饰器 这样我就可以将这个概念应用到我更大的项目中 从 Addy Osmani 的文章中得到启发here https medium com google developers exploring es
  • 网站所有者错误:网站密钥无效

    我创建了一个 reCAPTCHA 密钥并禁用Verify the origin of reCAPTCHA solutions 但我仍然遇到错误ERROR for site owner Invalid site key 我该如何解决 同样在这
  • Hartl 教程中的 bundle exec rspec spec/requests/static_pages_spec.rb 不起作用

    我正在按照 Michael Hartl 的 ruby on Rails 教程来测试示例应用程序 3 2 1 测试驱动开发 但在输入后出现以下错误bundle exec rspec spec requests static pages spe
  • Sublime Text 3 - 特定于语言的 Goto 定义键盘快捷键

    如何根据我正在使用的语言设置 Goto Definition 工作 例如 在 Python 中 我想使用 PythonIDE 的 go to 定义 keys ctrl d command python goto definition 而且
  • 如何减小 Android 上的 expo/react-native 应用程序的大小

    我正在通过使用 React Native 和 Expo 来开发一个小型词典应用程序 当我编译为 Apk 文件时 大小可达 30mb 安装到设备上后 大小可达 80mb 这是正常的吗 有什么方法可以减小应用程序的大小吗 感谢你们 对于使用 e
  • 使用随机盐改进密码散列

    我正在创建一个网站 并尝试决定如何加密用户密码以将其存储在 SQL 数据库中 我意识到使用简单的 md5 密码 是非常不安全的 我正在考虑使用 sha512 password salt 并且我一直在研究生成有用盐的最佳方法 我读过很多文章