Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将用户名和密码存储在加密文件而不是数据库中_Php_Mysql_Webserver - Fatal编程技术网

Php 将用户名和密码存储在加密文件而不是数据库中

Php 将用户名和密码存储在加密文件而不是数据库中,php,mysql,webserver,Php,Mysql,Webserver,所以我知道你会说这很糟糕,但我真的不喜欢使用数据库,因为它既混乱又困难。我还认为在文件中存储用户名和密码是不好的,但是用户名和密码都将使用md5加密。我认为这还不够安全,因为我要把它公之于众。如果你能给我一些建议,告诉我如何做得更好 而且您每分钟只有两次尝试;) 以下是我的想法: 另外,如果你能给我举个例子,说明如何以及在Web服务器中存储文件?老实说,我对php不是很在行大多数数据库都可以从开放的web访问,您还必须将数据库密码存储在php文件中。因此,在大多数配置中,使用数据库没有任何安全好

所以我知道你会说这很糟糕,但我真的不喜欢使用数据库,因为它既混乱又困难。我还认为在文件中存储用户名和密码是不好的,但是用户名和密码都将使用md5加密。我认为这还不够安全,因为我要把它公之于众。如果你能给我一些建议,告诉我如何做得更好

而且您每分钟只有两次尝试;) 以下是我的想法:


另外,如果你能给我举个例子,说明如何以及在Web服务器中存储文件?老实说,我对php不是很在行

大多数数据库都可以从开放的web访问,您还必须将数据库密码存储在php文件中。因此,在大多数配置中,使用数据库没有任何安全好处。这只是一个更舒适的处理

哈希密码总是一个好主意,应该被视为理所当然。md5不是一个安全的算法。考虑使用代替。别忘了在你的哈希文件被偷的时候,插入一个盐串来防止彩虹表攻击

任何双向加密都会使您的系统完全不安全,因为您必须在服务器上保存机密以解密为纯文本,攻击者可以窃取他所需的一切


限制登录尝试当然不是一个坏主意,但是,它并不像您认为的那么重要。主要的弱点是获得对hashfile的读取权限,然后处理脱机bruteforce,最好是使用rainbow表。

以下是我的建议。不要使用md5,因为它不安全并且没有使用迭代

您确实必须拥有SSL证书,这样才能防止人们看到密码。没有证书的任何内容大致相当于用户发送原始文本密码。您基本上只是更改了他们的密码

正如zaph所指出的,最好的做法是

论客户

  • 将密码发送到web服务器(由证书为您加密)
在web服务器上

  • 储存盐()
  • 使用bcrypt或另一个同样使用salt的安全机制散列密码
  • 存储salt和散列salt密码

您需要使用密码哈希算法,该算法也需要salt和迭代,以便哈希需要大量时间,例如100ms。通常,您可以使用诸如
PDKDF2
bcrypt
script
password\u hash
等算法

密码必须在服务器上散列

在应用程序中使用HTTPS通信密码和pin服务器证书,pin非常重要,因为它可以防止MITM攻击

DB可能不是必需的,这是一个查找时间和磁盘I/O的问题。如果需要性能,您可以从一个简单的fine开始并迁移到DB。“Bob叔叔”Martin推迟了在中使用DB的时间,最终发现只需要一个平面文件解决方案


注意:基本上所有简单的散列方法,如SHA2、SHA3等,都非常快,需要多次迭代以增加计算时间。时间很重要,因此攻击者无法快速尝试哈希。每个密码需要一个随机的(不是唯一的)salt,以避免使用预先计算好的hash的rainbow表。

您知道md5是一种方法吗?如。。你不能解密它,你只能加密“猜测”并比较结果。你打算以什么方式公开MD5不是SHA512的一个是加密,它们是散列函数。#我知道这个东西#请#帮助#我#知道互联网有很多信息。#但我真的不喜欢使用数据库,因为它既混乱又困难。#。是的,这很糟糕。很高兴听到这个消息,管理数据库对我来说是件麻烦事。您能告诉我如何存储它们的基本概念吗?使用SSL保护传输。还有免费的证书提供者。强烈建议使用服务器端哈希密码。如图所示,客户端散列将毫无意义。您可以使用csv或任何其他格式来存储数据。有PHP函数来处理这些文件。为了提高安全性,您可以使用.php扩展名。请看一下管理.htaccess。使用SQL管理单个数据库表非常简单。即使是多个表的连接也不难。我鼓励您熟悉简单的数据库命令。有人能解释一下我的答案有什么问题吗?这样我就可以详细说明或澄清,以帮助您了解MD5上的OP?Nice链接。有趣的是,在某些系统上(iPhone就是其中之一),SHA256比MD5快。