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

image-20260113113627335
安全特性
- 文件扩展名白名单:只允许上传指定扩展名的图片
- MIME类型检查:验证文件实际类型
- 路径遍历防护:使用安全的文件名生成和路径验证
- Token认证:防止未授权访问
- 速率限制:防止恶意请求
- 安全的错误处理:不泄露敏感信息
- 随机文件名生成:使用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》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论