ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

如何用 copyparty 的 filekeys 为共享文件生成访问密钥,防止文件名暴力猜测

如何用 copyparty 的 filekeys 为共享文件生成访问密钥,防止文件名暴力猜测 如何用 copyparty 的 filekeys 为共享文件生成访问密钥防止文件名暴力猜测【免费下载链接】copypartyPortable file server with accelerated resumable uploads, dedup, WebDAV, SFTP, FTP, TFTP, zeroconf, media indexer, thumbnails all in one file项目地址: https://gitcode.com/GitHub_Trending/co/copyparty当你用 copyparty 对外提供文件共享时常见做法是只给访客gget权限不开放目录列表只接受文件的直接 URL。但这样一来如果访问者知道服务器上大概放着什么文件就可以靠猜文件名把文件下载走。copyparty 的 filekeys 功能volflagfk就是为此设计的为每个文件生成一个随机的访问密钥访问 URL 必须带上正确的密钥参数?k...才能取到文件猜文件名不再有意义。filekeys 的工作原理README 的 filekeys 一节说明了行为volflagfk为该卷内所有文件生成 per-file accesskey。拥有完整读权限r的用户在浏览目录时看到的文件 URL 会自动带上正确的 filekey?k...只有gget权限的用户必须拿到带正确密钥的完整 URL 才能下载否则得到 404密钥默认由 salt全局参数--fk-salt 文件系统路径 文件大小 inodeWindows 上不含 inode共同生成加上 volflagfka则生成稍弱的密钥仅基于 salt 路径编辑文件后密钥不会失效权限wGwrite upget允许用户上传文件并只拿回自己的filekey看不到别人的上传。salt 默认是自动生成的存放在配置目录$XDG_CONFIG_HOME下的 copyparty 配置中见 docs/chungus.conf 中fk-salt的注释。启动时加--show-fk-salt可以打印当前生效的 salt 值方便核对。配置方法命令行参数-v的语法是src:dst:perm:perm:...volflag 写在权限段里。README 中给出的启用 filekeys 的示例python copyparty-sfx.py -v /mnt/ss:i:rw,u1:g:c,fk4逐项含义以 README 为例的注释为准把/mnt/ss挂载到 URL/i用户u1拥有rw可以上传、浏览目录并在浏览时看到生成的 filekeys其他用户只有g:c,fk4fk4表示每个文件生成 4 字符的 accesskey他们可以凭带密钥的完整 URL 访问文件但无法浏览目录。把g换成wG会得到另一种典型用法——任何人都能上传并收到自己文件的secret链接README complete examples 一节python copyparty-sfx.py -e2dsa -v .::wG:c,fk8fk8即 8 字符密钥。README 还给出了一个针对电子书服务的变体某些客户端例如 Moon Reader下载封面图时不发送密码会被服务器按失败密码封禁 IP此时给未认证请求g权限并启用 filekeys 防猜名-vbooks:books:r,ed:g:c,fk,opds。配置方法配置文件配置复杂时用配置文件更合适。README 给出的例子把/mnt/ss挂到/iu1读写、其他所有人只能凭 URL 访问每个文件 URL 附带 4 字符密钥[/i] /mnt/ss accs: rw: u1 g: * # everyone can access files if they know the URL flags: fk: 4 # each file URL will have a 4-character password仓库里的完整配置示例 docs/example.conf 展示了一个wGfk的上传卷[/sharex] /home/ed/inc/sharex accs: wG: * # wG write-upget see your own uploads only rwmd: ed, k # read-write-modify-delete for users ed and k flags: e2d, d2t, fk: 4 # volflag e2d enables the uploads database, # d2t disables multimedia parsers (in case the uploads are malicious), # dthumb disables thumbnails (same reason), # fk enables filekeys (necessary for upget permission) (4 chars long)注意注释说明一行可以连写多个 volflag因为只有最后一个 flag 携带参数值e2d, d2t, fk: 4中4只属于fk。配置文件通过-c参数使用也可以用环境变量方便 docker 等场景python copyparty-sfx.py -c foobar.conf # 或者 PRTY_CONFIGfoobar.conf python copyparty-sfx.py验证 filekeys 是否生效文档描述的行为本身就可以作为核对依据r权限用户登录后浏览目录文件链接末尾应带有?k...参数有r权限的人才能看到 filekeys。g权限用户或匿名访问者直接请求不带密钥的文件 URL 应返回 404拿到带正确?k...的完整 URL 后才能下载。wG上传场景上传完成后响应中会返回该文件的 filekey/直接链接README 说明上传者receivea working direct link in return把链接发给对方即可对方无需登录。salt 核对启动时加--show-fk-salt确认生效的 salt 与预期一致例如 docker/systemd 环境下多处部署需要同一 salt 时。调试全局参数log-fk可指定一个正则对路径匹配的文件记录其 filekey 参数docs/chungus.conf 中的log-fk默认未设置适合排查特定目录的密钥问题。限制与注意事项以下边界都来自文档配置前确认你的场景是否命中密钥会随文件变化默认 filekey 基于大小 inode 生成文件被编辑后旧密钥失效。需要密钥在文件被编辑后仍然有效时改用 volflagfka略弱仅 salt 路径filekey 最长 72 字符docs/changelog.md 中的限制说明m3u8 播放列表不支持 filekeys/dirkeys播放列表里的曲目必须让听众本身拥有 read-access 或 get-accessh权限的例外h权限下目录返回index.html而index.html本身不需要 filekey 即可获取其余文件仍然受密钥保护与 dirkeys 同开的版本要求v1.20.172026-07-06修复了一个漏洞——同一个卷同时启用 filekeys 和 dirkeys 时一个有效的 filekey 可以被转换成 dirkey从而获得所在文件夹的读权限。两者同用时请升级到 v1.20.17 或更新版本见 docs/changelog.mddirkeys 场景如果启用了 dirkeysdkREADME 建议同时启用 filekeys否则通过 dirkey 进入的文件夹里的文件无法被直接外链。配置完成并通过上述验证后g权限的目录就是无列表、凭链接取文件的共享方式文件名暴力猜测对访问没有任何帮助。【免费下载链接】copypartyPortable file server with accelerated resumable uploads, dedup, WebDAV, SFTP, FTP, TFTP, zeroconf, media indexer, thumbnails all in one file项目地址: https://gitcode.com/GitHub_Trending/co/copyparty创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进