大文件秒上传的原理是啥?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大文件秒上传的原理是啥?相关的知识,希望对你有一定的参考价值。

秒传顾名思义一个文件一秒就可以完成上传!这个跟自己的网速是没有关系的,因为在服务器上面早就存在了同样的文件。

大家都知道网站上所有的东西都是存储在容量超大的服务器上的!网盘也属于网上的东西,同样的保存在服务器上。要实现秒传这一动作,服务器会对用户上传的每个文件做一个标识,这个标识是唯一的。意思就是不同的文件会有不同的标识,而那个标识的名字叫MD5.

这个标识是根据文件的内容进行标识的。例如:A上传了一首歌曲叫red.mp3,这个时候服务器里面给那个文件进行了标识。而另外一边B也同一个服务器去上传同一首歌曲red.mp3.这个时候B可以享受秒传。因为A已经把同一的歌曲放到服务器上了,服务器只需要把那首歌的链接给B就好,而B是完成不会察觉背后的变化的。他只是觉怎么那么快!

倘若C在上传一首歌叫red-taylor
swift.mp3能不能秒传呢?其实秒传不是看文件名去识别文件的,而是靠文件的内容。如果C上传的这个首歌只是改了个名字,那么C也可以秒传。倘若C的这首歌比A和B的那首歌还长,那么C肯定是不能实现秒传的。

随着用户上传的东西越来越多,秒传会越来越容易实现。这不但大大的节省了用户上传的时间而且还节省不少的服务器空间,可谓是一举两得!追问

如果云端没有这个文件呢

追答

云端是一定有的 只不过你看不到 不知道而已

追问

是我自己做的

追答

所谓秒传,是别人之前已经上传到服务器了,你再上传时,系统扫描你文件,发现服务器存在相同的文件,就提示你秒传成功了,这样就不必浪费大量的空间和时间,从而提高了效率。日后就算你删除了,只要最初上传者不删除了,服务器就还是有这文件的,你删除的只是列表。

并不是所有文件都可以秒传的

参考技术A 不清楚,
我只能大致猜测一下,不要当真,也只是想想而已:
在互联网上有很多资源,
每个资源有各自的身份ID, 类似于MD5,或者HASH,
上传的时候,会看你的资源是否在网络上有相同的ID,
有的话,就从网络上获取,并存放在你的文件夹下,
速度几乎可以达到秒传,只是搜索了一个相同的链接而已,所以速度很快,
本地的哪个文件,可能压根就没传上去,
那个上传的资源其实并不正真在你的网盘里面而是一个类似于网络资源的链接,
可以把网络想象成一个巨大的文件服务器磁盘,
你从你 的电脑上传文件的时候,它会检索自己的磁盘是否有重复的文件,有就不会复制你的文件,
直接在自己的磁盘里面调用,
那没有的怎么办? 其实这个也好解决, 基本上我们的资源是取之于网用之于网,
网络上的资源可以想象成覆盖了哦我们本地99%的资源, 大部分都能在网上找到匹配的
只是想想而已,不必当真!
呵呵!!
参考技术B 上传时计算文件特征码(md5等)然后,对比云端库,有相同,则秒传。追问

如果云端没有这个文件呢

追答

那就慢慢上传,不可能秒传

追问

能检测到是黄的吗

追答

文件的检测不能,但不保证没有人工检测或者他人举报。

参考技术C 操作系统

文件上传漏洞原理是啥?

文件上传原理

在文件上传的功能处,若服务端脚本语言未对上传的文件进行严格验证和过滤,导致恶意用户上传恶意的脚本文件时,就有可能获取执行服务端命令的能力,这就是文件上传漏洞。

文件上传漏洞高危触发点

相册、头像上传

视频、照片分享

附件上传(论坛发帖、邮箱)

文件管理器

存在文件上传功能的地方都有可能存在文件上传漏洞,比如相册、头像上传,视频、照片分享。论坛发帖和邮箱等可以上传附件的地方也是上传漏洞的高危地带。另外像文件管理器这样的功能也有可能被攻击者所利用值得注意的是,如果移动端也存在类似的操作的话,那么相同的原理,也存在文件上传漏洞的风险。

为了防御文件上传漏洞的产生,需要在服务端做严格的防护,因为浏览器、客户端传回的数据并不可信任。首先是第一道防线,文件类型检测,上传的文件需要经过严格的文件类型检测防止上传的文件是恶意脚本。

上传之后的文件要进行重命名。

如果上传的文件是图片类型,可以选择使用重绘图的方式对图片进行保存,但是这种方式会对服务端性能稍有影响

最后,文件上传的目录不可赋予可执行权限,可以使用BOS这样的云存储服务,当然最方便的还是使用BOS这样现成的云存储服务

参考技术A

文件上传漏洞是指:由于程序员未对上传的文件进行严格的验证和过滤,而导致的用户可以越过其本身权限向服务器上传可执行的动态脚本文件。如常见的
头像上传,图片上传,oa办公文件上传,媒体上传,允许用户上传文件的地方如果过滤不严格,恶意用户利用文件上传漏洞,上传有害的可以执行脚本文件到服务器中,可以获取服务器的权限,或进一步危害服务器。

非法用户可以上传的恶意文件控制整个网站,甚至是控制服务器,这个恶意脚本文件,又被称为webshell,上传webshell后门之后可查看服务器信息、目录、执行系统命令等。

文件上传的类型:

1、前端js绕过

在文件上传时,用户选择文件时,或者提交时,有些网站会对前端文件名进行验证,一般检测后缀名,是否为上传的格式。如果上传的格式不对,则弹出提示文字。此时数据包并没有提交到服务器,只是在客户端通过js文件进行校验,验证不通过则不会提交到服务器进行处理。

2、修改content-type绕过

有些上传模块,会对http类型头进行检测,如果是图片类型,允许上传文件到服务器,否则返回上传失败,因为服务端是通过content-type判断类型,content-type在客户端可被修改。

3、绕黑名单

上传模块,有时候会写成黑名单限制,在上传文件的时获取后缀名,再把后缀名与程序中黑名单进行检测,如果后缀名在黑名单的列表内,文件将禁止文件上传。

4、htaccess重写解析绕过

上传模块,黑名单过滤了所有的能执行的后缀名,如果允许上传.htaccess。htaccess文件的作用是:可以帮我们实现包括:文件夹密码保护、用户自动重定向、自定义错误页面、改变你的文件扩展名、封禁特定IP地址的用户、只允许特定IP地址的用户、禁止目录列表,以及使用其他文件作为index文件等一些功能。

在htaccess里写入SetHandler
application/x-httpd-php则可以文件重写成php文件。要htaccess的规则生效,则需要在apache开启rewrite重写模块,因为apache是多数都开启这个模块,所以规则一般都生效。

5、大小写绕过

有的上传模块 后缀名采用黑名单判断,但是没有对后缀名的大小写进行严格判断,导致可以更改后缀大小写可以被绕过,如PHP、Php、phP、pHp。

以上是关于大文件秒上传的原理是啥?的主要内容,如果未能解决你的问题,请参考以下文章

实战篇:断点续传?文件秒传?手撸大文件上传

大文件上传时如何做到秒传?

Spring Boot 分片上传断点续传大文件上传秒传,应有尽有,建议收藏!!

Spring Boot 分片上传断点续传大文件上传秒传,应有尽有,建议收藏!!...

IIS环境下解决Django大文件下载,只能持续90秒左右的问题

Java如何实现大文件分片上传,断点续传和秒传