Yearning icon indicating copy to clipboard operation
Yearning copied to clipboard

关于默认SecretKey的一个疑问

Open g0dA opened this issue 3 years ago • 6 comments

在搭建环境的时候我注意到作者在SecretKey处写了不更改将存在安全风险但是却没有明确风险原因

然后我自己分别在两台机子上搭建了两个yearning且采用了相同的SecretKey,抓取一个登录后的yearning数据包借用其中的Authorization头伪造数据包后发现可以直接对另一个未登录yearning的权限接口发起调用,比如添加帐号

所以想问一下这是权限设计上就是这样的逻辑吗?还是一个预料意外的安全问题?

如果是设计上的逻辑是不是只要通过修改SecretKey就可以避免掉?

g0dA avatar Feb 25 '22 03:02 g0dA

1.这个key就是token及数据库加密的 秘钥值 2.如果你知道秘钥自然可以反解出实际的值

cookieY avatar Feb 28 '22 01:02 cookieY

但是改了之后,我发现页面出不来了,我用的 Yearning-v3.0.1-linux-amd64.zip 打包 docker 镜像,目前发现了两个问题:

  1. 数据库不能自动初始化出来默认用户数据。只能进入docker容器里面,手动执行一次 ./Yearning install,但是由于表已经建了,会报已经初始化,把表删了重新执行,执行成功,数据库多了一条记录
  2. 改了SecretKey之后生成的镜像,使用方法1生成的数据库记录,使用默认用户名密码登录不了(我怀疑是不是启动脚本代码里硬编码了,有没有办法环境变量指定)

第2个问题忽略,可能是因为缓存,清了缓存就OK了

codesverve avatar Jul 02 '22 17:07 codesverve

@chaiyd 看下是否有办法解决呢~

cookieY avatar Jul 05 '22 06:07 cookieY

@Uetty 可以先看下docker目录中的文档,目前先使用手动的方式进行初始化。

后续对于初始化这块我处理一下

version: '3'

services:
    yearning:
        image: chaiyd/yearning:latest
        environment:
           MYSQL_USER: yearning
           MYSQL_PASSWORD: ukC2ZkcG_ZTeb
           MYSQL_ADDR: mysql
           MYSQL_DB: yearning
        ports:
           - 8000:8000
        # 首次使用请先初始化
        #command: /bin/bash -c "./Yearning install"
        #volumes:
        #   - ./conf.toml:/opt/conf.toml
        depends_on:
           - mysql
        restart: always

chaiyd avatar Jul 05 '22 07:07 chaiyd

@cookieY 嗯,问题不大,手动处理了。有这个issue在,后面遇到同样状况的人可以很快知道问题在哪,知道问题所在处理起来是比较快的

codesverve avatar Jul 05 '22 07:07 codesverve

重新reopen该issue 并标记常见问题 感谢你的关注

cookieY avatar Jul 05 '22 07:07 cookieY