小编Abh*_*hek的帖子

存储大量用户数据的最佳方式

我将用户的文件存储在自己的名称目录中

/username/file01.jpg
/username/file02.mp4
/username/file03.mp3
Run Code Online (Sandbox Code Playgroud)

但是如果有更多用户来上传更多文件,那么这会产生问题,因为这会导致一些或多个用户迁移到另一个驱动器.我首先选择用户名目录解决方案,因为我不希望混合文件名.我也不想改变文件名.此外,如果另一个用户上传相同的文件名,那么如果文件以原始名称存储,则会产生问题.

什么是最好的方法来做到这一点.我有一个解决方案,但想问社区这是最好的方法.

我将使用顺序文件夹,然后将文件名哈希到一些非常独特的东西并存储到目录中.我要做的是将文件和用户名的原始名称存储到数据库中,并将存储在磁盘中的文件名的哈希值存储起来.

当有人想要访问该文件时,我将通过php读取该文件,或者替换名称或者在该点执行某些操作,以便将文件作为原始文件名下载.

我只考虑了这个建议的解决方案.你们有没有比这更好的其他人.

编辑:

我也使用文件夹系统,可能第二种方式我将使用虚拟文件夹.我的数据库是MongoDB

伙计们你所有的答案都很棒,非常有帮助.我想给每个人一个赏金,这就是为什么我离开它以便社区可以自动提供.谢谢大家的回答.我真的很感激.

php database linux file-upload file

12
推荐指数
3
解决办法
2313
查看次数

哈希密码,从破碎方法到现在最安全

我脑子里只有一个简单的问题就是社区.曾几何时,当我开始编程时,我使用md5进行散列密码,后来发现md5很容易破解,我应该使用salt来保证其安全.

比我对md5没信任,想用sha1,sha256,sha512加密.但问题是现在我有加密形式的密码

md5("password"+"salt")
Run Code Online (Sandbox Code Playgroud)

那时我不知道用户的密码.所以我做了什么

sha1(md5("password"+"salt"))
Run Code Online (Sandbox Code Playgroud)

现在经过几次在这个领域,我发现sha1也不太安全,而且我应该怎么做才能使用bcrypt()来保证密码安全.

所以从现在起我将使用

 crypt(sha1(md5("password"+"salt")))
Run Code Online (Sandbox Code Playgroud)

密码现在非常安全,但主要问题仍然是它将用于创建哈希值的时间总是大于使用bcrypt("密码")

现在我要说的是假设bcrypt被黑客攻击并被发现被破坏,并且将来会出现更加安全的新加密功能.这样,从旧值创建密码总是很费时间.

什么可以解决这个问题.因为我知道邮件用户更改密码并不总是100%成功.另一件事是在数据库中添加一个存储新散列值的新字段,如果填充了所有字段,则从db中移除md5值.但是以这种方式事物仍然可以看到先前的散列值.

所以这件事情会发生,或者你们有一些解决方案.:)

php security passwords hash

6
推荐指数
2
解决办法
1188
查看次数

请求发布文件的Mime类型

如何设置使用Python请求上载的文件(对于一个文件,而不是表单)的mime类型?

import requests
requests.post('http://test.com/upload', files={'data':'123'})
Run Code Online (Sandbox Code Playgroud)

python python-requests

6
推荐指数
1
解决办法
5265
查看次数