web中上传附件的安全问题

在系统中需要上传附件,是很多系统的需要,而且现在也有很多技术能实现这一需求。但是附件上传可能会存在很大的安全隐患,这不是每个人都能注意到的。
对于普通的附件上传,用户从本机上传文件到服务器web目录,系统记录文件的路径,用户下载时,系统读取文件的路径,在页面输出链接。这个过程中的存在很大的安全隐患。首先没有对用户的上传的文件进行验证,可能是威胁服务器的文件。其次文件上传到web目录,如果用户上传的是一些代码,那么就可在web目录下运行,做任何想做的事情。再者,不要输出上传文件在服务器中的路径,那么用户就不能进行访问了。
我曾经就发现一个网站的论坛存在这样的漏洞。它的论坛可以上传头像,但是对头像的格式没有判别,而且的上传在web目录下,直接输出的上传头像的uri。我就试着上传jsp文件,程序里是我写的文件浏览器。我在页面下访问我上传的“头像”,我就可以任意浏览服务器中的文件,并下载它的源代码。当然我还可以干很多其他的事情,虽然我没有,谁叫咱是遵纪守法的人呢。我还是提醒了论坛的主办者,让他们关闭了头像上传的功能。
在我最近做的教育系统中,我的附件上传就避过了这些因素。首先上传时进行过滤,不可上传的文件类型不让上传;其次上传之后就行改名,按照我的规则进行命名,即使是可执行的文件也不能执行了;再者,文件上传的目录是可配置的,我并不配置在web目录下,这样跟我的数据就分开了;附近读取的时候是通过下载程序通过配置的路径读取文件,写到输出流中,避免用户直接访问文件。

猜你喜欢

转载自blog.csdn.net/tonny1228/article/details/696776