PHP - MD5、SHA、哈希安全

2024-03-06

我是一个用 PHP 构建的新网站的开发人员,我想知道什么是最好的 用于散列的东西。我已经研究过 md5 和 sha1 但还有更安全的吗?
如果这是一个菜鸟问题,我很抱歉,但我是 PHP 安全新手,我正在努力让我的 网站尽可能安全。还有什么是盐?
Thanks,
Waseem


首先md5和sha1已经被证明容易受到碰撞攻击并且可以彩虹 轻松查看表(当他们查看您的哈希值是否与他们的常用密码数据库中的相同时)。
目前有两种足够安全的密码可供您使用。
第一个是 sha512。 sha512 是 SHA2 的子版本。 SHA2 尚未被证明 容易受到碰撞攻击,sha512 将生成 512 位哈希值。这是一个例子 如何使用sha512:

<?php
hash('sha512',$password);

另一个选项称为 bcrypt。 bcrypt 以其安全哈希而闻名。它是 可能是目前最安全的一种,也是最可定制的一种。
在开始使用 bcrypt 之前,您需要检查您的服务器是否已启用它,输入 这段代码:

<?php
if (defined("CRYPT_BLOWFISH") && CRYPT_BLOWFISH) {
    echo "CRYPT_BLOWFISH is enabled!";
}else {
echo "CRYPT_BLOWFISH is not available";
}

如果它返回它已启用,那么下一步很简单,您需要做的就是加密 密码是(请注意,要获得更多可定制性,您需要查看此如何在 PHP 中使用 bcrypt 对密码进行哈希处理? https://stackoverflow.com/questions/4795385/how-do-you-use-bcrypt-for-hashing-passwords-in-php):

crypt($password, $salt);

现在回答你的第二个问题。盐通常是添加在末尾的随机字符串 当你散列它们时,你所有的密码。使用盐意味着如果有人获取你的数据库 他们无法检查常用密码的哈希值。检查数据库称为使用彩虹表。散列时你应该始终使用盐!

以下是我对 SHA1 和 MD5 碰撞攻击漏洞的证明:
http://www.schneier.com/blog/archives/2012/10/when_will_we_se.html http://www.schneier.com/blog/archives/2012/10/when_will_we_se.html, http://eprint.iacr.org/2010/413.pdf http://eprint.iacr.org/2010/413.pdf, http://people.csail.mit.edu/yiqun/SHA1AttackProceedingVersion.pdf http://people.csail.mit.edu/yiqun/SHA1AttackProceedingVersion.pdf, http://conf.isi.qut.edu.au/auscert/proceedings/2006/gauravaram06collision.pdf http://conf.isi.qut.edu.au/auscert/proceedings/2006/gauravaram06collision.pdf and 了解 sha-1 碰撞弱点 https://stackoverflow.com/questions/1147830/understanding-sha-1-collision-weakness

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

PHP - MD5、SHA、哈希安全 的相关文章

  • 如何将对象(模型类型对象)插入到 Laravel 中 Collection 对象的特定索引号处?

    我读过戴尔 里斯的代码明亮 https daylerees com codebright 了解更多关于雄辩的信息Collection在 Laravel 中使用 还做了一些其他研究 但找不到我正在寻找的答案 我想插入一个对象 Model输入对
  • 使用 PHP 分割逗号分隔名称

    我的名字格式为姓氏 名字 在我的数据库中 第一个和最后一个字段都有不同的字段 我想使用 PHP 读取逗号之前的所有内容作为姓氏 以及逗号之后的所有内容作为名字 实现这一目标的最佳方法是什么 list Lastname Firstname e
  • 使用 CodeIgniter 加载视图文件夹外的视图

    我需要从以下范围之外加载视图 this gt load gt view 这似乎是从base application views目录 如何从外部访问视图 application 目录 我想我将不得不延长CI Loader class这是最好的
  • PHP FTP_PUT 上传到目录

    我正在自学PHP 一本名为 PHP完全参考 PHP5 2 的书 我目前正在使用第 11 章 FTP 上传 删除 makedir 等 但遇到了一些本书未涵盖的问题 根据我的教科书 这是上传到服务器的简单代码 connect ftp conne
  • 使用 PHP 创建、编辑和删除 crontab 作业?

    是否可以使用 PHP 创建 编辑和删除 crontab 作业 我知道如何列出 Apache 用户当前的 crontab 作业 output shell exec crontab l echo output 但是如何使用 PHP 添加 cro
  • 与 PHP 相比,Python 与 HTML 的“流畅”程度如何?

    我正在考虑从使用 PHP 切换到使用 Python 来开发 Web 应用程序 但我想知道 Python 是否像 PHP 一样擅长在 HTML 中穿插 本质上 我发现它使用起来非常简单 直观将 PHP 放在我想要的位置 然后可以随意安排 组织
  • 如何在PHP中完成http响应并进行进一步处理?

    就我而言 我需要向客户端回显一个标志并发送一封电子邮件 现在客户端需要等待电子邮件发送 但我想把这两个步骤分开 该怎么做呢 你可以看一下异步运行 PHP 任务 https stackoverflow com questions 858883
  • PHP正则表达式替换链接url

    我需要添加href 之前http 如果这http 不遵循href or src 以下代码部分有效 部分意味着它考虑 a href 只但不src a s i a href target blank gt 0 a str 预先感谢各位的回复 s
  • json_decode 到自定义类

    是否可以将 json 字符串解码为 stdClass 以外的对象 不是自动的 但你可以按照老式的路线来做 data json decode json true class new Whatever foreach data as key g
  • CakePHP Unfilled 单选按钮在提交时更改为不需要的值

    我有这个表单元素 form gt input ChecklistResponseGovernmentInfo driversLicenseIsOnline array type gt radio empty gt true options
  • 我应该在 Symfony 中哪里放置既不是控制器也不是模型的类?

    对于我的应用程序包 我需要一些既不是控制器也不是模型的类 例如 我想要一个scorecard具有诸如 技能 效率 美丽 等成员的类 此外 它可能具有诸如 meanScore 之类的成员方法 getters 这样的类在 Symfony 框架中
  • 如何捕获反序列化异常?

    PHP 是否可以在以下情况下捕获异常 unserialize 产生错误 一个简单的方法是 ret unserialize foo if ret null Error case 但这不是最现代的解决方案 最好的方法是像前面提到的那样有一个自定
  • 根据重复值对 PHP 数组进行排序

    我有一个包含重复值的数组 我想对数组进行排序 以便重复次数最多的值出现在行中的第一个 这是我的数组的示例 array 1 2 3 2 1 2 2 我想对该数组进行排序 以便它根据重复项的数量对自身进行排序 如下所示 array 2 1 3
  • php 包含打印 1

    我编写了以下代码 当我将 include 函数与旨在输出到页面的函数 例如 或 echo include foo php 结合使用时 它会返回包含内容 但在已包含的内容后面带有 1 echo include foo php 应该 inclu
  • PHP、PDO 和 SQLSRV 对一个 INSERT 语句执行多次

    我已经在 MySQL 和 Apache 服务器上使用 PDO 和 PHP 一段时间了 我最近的任务是将企业的旧 Web 应用程序转换为新设置 旧设置是标准 Linux Web 堆栈 Apache PHP MySQL Filezilla 新设
  • PHP 搜索部分字符串

    如何在键入时搜索部分字符串 不使用 MySQL 例如 MySQL 中的 LIKE 函数 但在搜索字符串时使用 PHP 例如 但这显然行不通 但是有没有一个函数可以搜索部分字符串 那太好了 EDIT 如果它在数组中怎么办 如果我使用 strp
  • 使用 eval 时不会受到 XSS 威胁

    我正在制作 不是现在 但我仍然对这个感到好奇 一款使用 HTML5 和 JS 的游戏 我想要的是人们可以插入自定义脚本 但要安全 function executeCustomJS code eval code bad 当然这段代码非常糟糕
  • 为什么浏览器允许onmousedown JS改变href?

    我很长时间以来都注意到 当您尝试复制链接位置或在 Facebook 上打开链接时 它会修改链接并将其传递给l php 例如 我可以被发送到 http www facebook com l php u http 3A 2F 2Fwww goo
  • 如何让php页面从html页面接收ajax post

    我有一个非常简单的表单 其中有一个名字输入字段 我捕获了表单数据 并使用标准 jQuery 发布方法通过 ajax 将其传输到 PHP 页面 但是 我根本无法从 PHP 页面获得任何在服务器端捕获数据的响应 我不确定我做错了什么或缺少什么
  • 如何清理 Runtime.exec() 中使用的用户输入?

    我需要通过命令行调用自定义脚本 这些脚本需要很少的参数并在 Linux 机器上调用 当前版本容易出现各种shell注入 如何清理用户给出的参数 参数包括登录名和路径 Unix 或 Windows 路径 用户应该能够输入任何可能的路径 该路径

随机推荐

  • 如何使用 clang-format 3.9 忽略文件或目录

    我目前正在使用 travis ci 在补丁进入 github 时检查补丁 并试图找出 clang format 3 9 是否有 因为 travis ci 目前仅支持最新的 ubuntu 14 04 在扫描时忽略整个目录或文件变化 我的 tr
  • ASP.NET Web API 的不同返回类型

    我正在尝试使用 ASP NET MVC 4 Web API 通过 HTTP 编写真正的 RESTful Web 服务 我当前面临的挑战是根据我的状态代码返回不同的返回类型 实体主体 例如 对于资源 Hammer 我有一个 NET 模型类 H
  • 在 HTML 画布上为 T 恤填充颜色并相应地更改文本颜色

    我在画布上绘制了一件 T 恤 当前正在尝试当用户在上面的菜单上选择一种颜色时填充它 此外 我希望 T 恤上的文字相应地更改 例如 如果选择黑色 则 T 恤文字颜色应为白色 这可能吗 到目前为止的代码片段 T shirt color br
  • 如何使用 python Imaging 创建新的彩色图像?

    我想创建一个新图像 背景颜色 这个工作 img Image new RGB width height red 但我想定制颜色 当我将 红色 更改为 228 150 150 时 它不起作用 你有想法这样做吗 这对我有用 请注意 颜色元组不在引
  • 如何从 numpy.ndarray 中随机选择一些非零元素?

    我已经实现了一个矩阵分解模型 比如 R U V 现在我要训练和测试这个模型 为此 给定一个稀疏矩阵 R 缺失值为零 我想首先在训练中隐藏一些非零元素 并在稍后使用这些非零元素作为测试集 如何从 numpy ndarray 中随机选择一些非零
  • 标头已发送...哪里? [复制]

    这个问题在这里已经有答案了 有人知道如何在此脚本中发送标头吗 我正在使用此脚本来验证表单 因此 它导致发送标头 因此当我在实现此脚本后尝试引导用户时 它会导致正常的 警告 无法修改标头信息 标头已发送 消息 这是脚本
  • 使用 jQuery 作为依赖项而不用 RequireJS 加载 jQuery?

    考虑以下页面 当未加载 RequireJS 时 如何使用 jQuery 作为 RequireJS 模块的依赖项 我知道jQuery 暴露了自己 https github com jquery jquery blob 861a45b8fffc
  • 如何在CSS中对齐两列文本

    我在排列一些文本时遇到一些麻烦 我需要两列 一列包含数字 一列包含文本 如下所示 1 条目一2 条目二3 条目三4 条目五5 条目六 左栏是 Georgia 右栏是 Arial 字体大小略有不同 我可以为每一行设置一个容器 div 并将数字
  • Angular 2 - 如何使用配置文件

    在 ZF2 中工作时 我们使用的配置文件可能因开发人员 生产环境和登台环境而异 它非常方便 因此我想在 Angular 2 中复制它 它在 ZF2 中的工作原理 我们有一个配置文件夹 其中的配置名为 settings local php 和
  • Django 视图内的 BeautifulSoup 导致 WSGI 超时

    由于一个奇怪的原因 当我实例化一个美丽汤Django 视图中的对象 WSGI 超时 任何帮助都是值得赞赏的 因为我把头撞在墙上几个小时 却找不到这个问题的根源 风景 def index request soup BeautifulSoup
  • 注释默认“null”值

    是否可以指定默认为 null 的注释 我想要实现的是类似可选注释属性的东西 例如 public interface Foo Config value public interface Config boolean ignoreUnknown
  • 如何启用事件以便调用 Workbook_BeforeSave

    My Workbook BeforeSave保存前未调用事件 这是我的代码 Option Explicit Private Sub Workbook BeforeSave ByVal SaveAsUI As Boolean Cancel A
  • Django 在内联表单管理中获取实例

    有一个内联表单类 class ItemColorSelectForm forms ModelForm def init self args kwargs super ItemColorSelectForm self init args kw
  • 如何通过ajax(无jquery)发送multipart/form-data表单内容?

    我试图在不重新加载页面的情况下发送一些表单 并且我试图了解底层细节 因此不使用任何 JavaScript 库 var http createRequestObject function createRequestObject var obj
  • XSD 1.1 替代测试 text() 的内容

    这是我想做的
  • 与 RabbitMQ 相比,Amazon SQS 的性能较慢

    我想在我的 Web 应用程序中集成消息队列中间层 我测试了 Rabbitmq 和 Amazon SQS 但发现 Amazon SQS 速度很慢 我在 Amazon SQS 中每秒收到 80 个请求 而在 Rabbitmq 中每秒收到 200
  • 从 ILogger 访问当前 HttpContext

    在 ASP NET Core 1 0 中 我有一个自定义实现ILoggerProvider and ILogger接口 我希望能够从以下位置访问 HttpContextLog method 看来我需要注入一个IHttpContextAcce
  • 没有事前发生的安全发布?除了决赛之外还可以吗?

    根据 JCP 16 2 2 安全发布 这个happens before保证实际上是一个比安全出版更有力的可见性和订购承诺 当 X 从 A 安全地发布到 B 时 安全发布保证了 X 状态的可见性 但不保证 A 可能接触过的其他变量的状态的可见
  • 用于变量名称的 R 循环来运行线性回归模型

    首先 我对此很陌生 所以我的方法 想法可能是错误的 我已使用 R 和 R studio 将 xlsx 数据集导入到数据框中 我希望能够循环遍历列名以获取所有具有精确 的变量10 以便运行简单的线性回归 所以这是我的代码 indx lt gr
  • PHP - MD5、SHA、哈希安全

    我是一个用 PHP 构建的新网站的开发人员 我想知道什么是最好的 用于散列的东西 我已经研究过 md5 和 sha1 但还有更安全的吗 如果这是一个菜鸟问题 我很抱歉 但我是 PHP 安全新手 我正在努力让我的 网站尽可能安全 还有什么是盐