对象存储一年花上千?用AvifImgHub自建服务器+Typora,告别PicGo

admin 2026-01-15 00:03:45 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文介绍了基于Flask的开源工具AvifImgHub,通过自建服务器将图片压缩为AVIF格式并集成Typora,旨在替代高昂的商业对象存储服务。工具具备文件白名单、Token认证及速率限制等安全机制,支持批量上传与一键部署,能有效降低图床成本,但需用户自行负责数据备份与安全维护。 综合评分: 78 文章分类: 安全工具,安全开发


image-20260113113627335

安全特性

  1. 文件扩展名白名单:只允许上传指定扩展名的图片
  2. MIME类型检查:验证文件实际类型
  3. 路径遍历防护:使用安全的文件名生成和路径验证
  4. Token认证:防止未授权访问
  5. 速率限制:防止恶意请求
  6. 安全的错误处理:不泄露敏感信息
  7. 随机文件名生成:使用md5+时间戳混合命名,防止文件路径被爆破

部署建议

开发环境

python app.py

生产环境

建议使用Gunicorn或uWSGI等WSGI服务器部署:

# 安装Gunicorn
pip install gunicorn

# 启动服务
gunicorn -w 4 -b 0.0.0.0:5000 app:app &

image-20260113120757260

这样之后即使你的会话断开了,也不会导致你的服务停止

常见问题

1. 上传失败,提示”Invalid API token”

确保 typora_upload.py 中的 API_TOKEN 与 app.py 中的 API_TOKEN 一致。

image-20260113120928389

2. 上传失败,提示”File type not allowed”

确保上传的文件扩展名在 ALLOWED_EXTENSIONS 列表中。

3. Typora上传无响应

  • 确保Flask服务正在运行
  • 检查网络连接
  • 检查Token配置
  • 检查防火墙配置

ufw放行指定端口

ufw allow 5000/tcp

4. 压缩后的图片质量不佳

可在 app.py 中修改 quality 参数调整压缩质量:

result = compress_image_to_avif(temp_input, avif_path, quality=40)  # 调整quality值

默认是40,可以参考如下图,压缩后的图片大小为17.4KB,而压缩前是485.08KB,在图片整体观感中是看不出任何变化的!!!

0e2ab53d20260113121330781

许可证

MIT License

往期推荐


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:泷羽Sec 仙草里没有草噜丶《对象存储一年花上千?用AvifImgHub自建服务器+Typora,告别PicGo》

评论:0   参与:  0