lsky-org / lsky-pro

☁️兰空图床(Lsky Pro) - Your photo album on the cloud.
https://www.lsky.pro
GNU General Public License v3.0
4.16k stars 612 forks source link

[Security] 储存桶/邮件配置密码明文保存在数据库中 #575

Closed hexsix closed 1 year ago

hexsix commented 1 year ago

如题

以下为我 dump 的 mysql 数据库数据(隐去敏感信息)

317 --
318 -- Dumping data for table `strategies`
319 --
320
321 LOCK TABLES `strategies` WRITE;
322 /*!40000 ALTER TABLE `strategies` DISABLE KEYS */;
323 INSERT INTO `strategies` VALUES (2,2,'AWS S3','','{\"url\": \"https://example.com/\", \"bucket\": \"bucket-name\", \"region\": \"us-east-1\", \"endpoint\": null, \"access_key_id\": \"**********MAC\", \"secret_access_key\": \"***************************NEji\"}','2022-06-23 18:29:30','2022-06-23 20:37:30');
324 /*!40000 ALTER TABLE `strategies` ENABLE KEYS */;
325 UNLOCK TABLES;
326
65 --
66 -- Dumping data for table `configs`
67 --
68
69 LOCK TABLES `configs` WRITE;
70 /*!40000 ALTER TABLE `configs` DISABLE KEYS */;
71 INSERT INTO `configs` VALUES ('app_name','兰空图床','2022-06-23 17:24:24','2022-07-15 10:10:34'),('app_version','V 2.0.4','2022-06-23 17:24:24','2022-06-23 17:24:24'),('icp_no',NULL,'2022-06-23 17:24:24','2022-07-15 10:10:34'),('is_allow_guest_upload','1','2022-06-23 17:24:24','2022-09-28 21:07:47'),('is_enable_api','1','2022-06-23 17:24:24','2022-09-28 21:07:47'),('is_enable_gallery','1','2022-06-23 17:24:24','2022-09-28 21:07:47'),('is_enable_registration','0','2022-06-23 17:24:24','2022-09-28 21:07:47'),('is_user_need_verify','0','2022-06-23 17:24:24','2022-09-28 21:07:47'),('mail','{\"mailers\":{\"smtp\":{\"host\":\"smtp.example.com\",\"port\":\"666\",\"username\":\"lsky-pro\",\"password\":\"***************************ic\",\"encryption\":\"tls\",\"timeout\":\"10\",\"transport\":\"smtp\"}},\"from\":{\"address\":\"notifications@example.com\",\"name\":\"lsky-pro\"},\"default\":\"smtp\"}','2022-06-23 17:24:24','2022-12-01 03:04:49'),('site_description','兰空图床','2022-06-23 17:24:24','2022-07-15 10:10:34'),('site_keywords','Lsky Pro,lsky,兰空图床','2022-06-23 17:24:24','2022-07-15 10:10:34'),('site_notice',NULL,'2022-06-23 17:24:24','2022-07-15 10:10:34'),('user_initial_capacity','1024','2022-06-23 17:24:24','2022-06-23 17:27:47');
72 /*!40000 ALTER TABLE `configs` ENABLE KEYS */;
73 UNLOCK TABLES;
74
KiraAyaka commented 1 year ago

只是好奇,那这些密钥应该 怎么存&存哪里 才算是安全的做法? 这个和存用户密码不一样,存用户密码的话使用信息摘要算法记录特征再加个盐就行了。 程序要访问邮件和存储桶的话,就必须提供正确的密钥了,你的意思是在想让密钥存到数据库的之前先做一下加密,然后加密密钥存到别的地方,等用的时候再解密吗?

hexsix commented 1 year ago

只是好奇,那这些密钥应该 怎么存&存哪里 才算是安全的做法? 这个和存用户密码不一样,存用户密码的话使用信息摘要算法记录特征再加个盐就行了。 程序要访问邮件和存储桶的话,就必须提供正确的密钥了,你的意思是在想让密钥存到数据库的之前先做一下加密,然后加密密钥存到别的地方,等用的时候再解密吗?

@KiraAyaka 保存在 .env 文件中即可,数据库破解和文件内容破解难度不是一个级别的,前者大家熟知的有SQL注入从网站层面就能入侵,后者基本等于获取了服务器root权限。

wisp-x commented 1 year ago

衡量下来这里的数据是不建议进行加密的。

hexsix commented 1 year ago

衡量下来这里的数据是不建议进行加密的。

  • 程序是开源的,即使是做了对称加密,真的脱库了,任何人都能知道加密方式从而解密,这么做是徒劳的。
  • 如果是非对称加密,那无疑是增加了程序的复杂度,并牺牲一部分性能,且这样做的话,一旦密钥忘记或刷新,会导致内容无法被解密。

@wisp-x 你说的都是对的,这部分数据不需要加密。是我的标题描述的侧重点不明确,我想表达的是保存在数据库中不安全。因为网站是和数据库交互的,脱库相对容易。如我之前所说,我希望这部分数据能保存到 .env 文件中。

yijiangchengming commented 1 year ago

衡量下来这里的数据是不建议进行加密的。

  • 程序是开源的,即使是做了对称加密,真的脱库了,任何人都能知道加密方式从而解密,这么做是徒劳的。
  • 如果是非对称加密,那无疑是增加了程序的复杂度,并牺牲一部分性能,且这样做的话,一旦密钥忘记或刷新,会导致内容无法被解密。

@wisp-x 你说的都是对的,这部分数据不需要加密。是我的标题描述的侧重点不明确,我想表达的是保存在数据库中不安全。因为网站是和数据库交互的,脱库相对容易。如我之前所说,我希望这部分数据能保存到 .env 文件中。

没有意义,如果能入侵网站,存哪里都是一样的。就和Chromium内核浏览器一样,密码加密密钥是明文储存的。