node.js - 如何防止恶意软件上传以保存网络公共图像?
问题描述
我想允许我网站的用户使用 node.js 保存公共图像文件。我应该怎么做才能遵循安全图像存储的最佳实践?如何防止恶意软件上传?
我目前控制以下内容:
- 检查用户是否登录
- 图像大小
- 图像数量
- 图像类型
我想允许保存以下类型的图像:
image/gif gif;
image/jpeg jpeg jpg;
image/png png;
image/svg+xml svg svgz;
image/tiff tif tiff;
image/vnd.wap.wbmp wbmp;
image/webp webp;
image/x-icon ico;
image/x-jng jng;
image/x-ms-bmp bmp;
我还应该考虑什么来防止恶意软件上传?
解决方案
您尚未分享有关如何允许下载以及如何进行下载的详细信息,但可以做出一般性答案,假设通过“检查用户是否登录”我们正在谈论一个网页过程:
如果图像是公开的,每个人都可以下载它。您不能阻止任何可以实际看到图像的人下载它(因为此时,图像已经传输到客户端的浏览器)。
通常(对于那些还不知道的人):永远不要放置您不想在网络上传播的在线图片(或者您无权拥有版权的图片)。“复杂的解决方案”,如试图禁用右键单击网页以防止下载只能阻止非常初学者。如果您希望图像能够显示,它必须是可访问的,因此它是可下载的。
您可以做什么,库存照片网站通常是这样工作的:只有质量差的图片预览(或上面有大水印)是公开的并显示在页面上。真正的全质量图像是私有的,当您的所有检查都得到验证后,将通过直接文件下载进行下载。
推荐阅读
- python - 从注释访问原始数据而不创建时期
- sql-server - Spring Data @Query中的SQLServer concat问题
- c# - 将表达式引用解析为实际值
- c# - 如何使用 c# 在 Unity 中仅修改 1 个维度?
- wordpress - 是否可以不在 wordpress 的特定页面上加载主题?
- lua - 如何解决 es_extended Fivem (Lua) 的问题
- azure-ad-b2c - 将来自 Facebook 的电子邮件作为输入声明传递给自我断言的个人资料时,电子邮件验证框消失
- vue.js - Vuejs为什么所有的方法都被调用?
- rust - 如何通过拆分我的项目来加快 Rust 编译时间
- ffmpeg - 使用 alpha 将 WEBM 转换为 HEVC