Java 是否有可能通过上传/通过上传的文件攻击服务器?

Java 是否有可能通过上传/通过上传的文件攻击服务器?,java,mysql,jpa,upload,Java,Mysql,Jpa,Upload,这个标题实际上说明了这个问题。在你误解我之前,我不想知道如何做到这一点,但我想知道如何防止它 我想写一个文件上传程序(用Java编写,带有JPA和MySQL数据库)。由于我还不能100%确定内部管理,因此有可能在某个时候文件可以在内部执行/打开 因此,我很高兴知道,攻击者可以通过上传任何类型的文件(可能是媒体文件、二进制文件或其他文件)来伤害、感染或操纵我的系统 例如: 文件名中的特殊字符是什么 像EXIF这样操纵元数据怎么样 MP3文件中的“嵌入式病毒”呢 我希望这不是太模糊,我会很高兴阅

这个标题实际上说明了这个问题。在你误解我之前,我不想知道如何做到这一点,但我想知道如何防止它

我想写一个文件上传程序(用Java编写,带有JPA和MySQL数据库)。由于我还不能100%确定内部管理,因此有可能在某个时候文件可以在内部执行/打开

因此,我很高兴知道,攻击者可以通过上传任何类型的文件(可能是媒体文件、二进制文件或其他文件)来伤害、感染或操纵我的系统

例如:

  • 文件名中的特殊字符是什么
  • 像EXIF这样操纵元数据怎么样
  • MP3文件中的“嵌入式病毒”呢
我希望这不是太模糊,我会很高兴阅读您的提示和提示

致以最诚挚的问候,

Stacky

它确实非常特定于应用程序。如果您使用的是特定的web应用程序(如phpBB),则与运行新闻组时有完全不同的安全需求。如果您想要定制的安全建议,您需要根据您正在做的事情的上下文搜索它们。它的范围可以从清理输入到限制上传大小和格式

例如,MP3文件病毒可能只在少数特定的MP3播放器上有效。不是所有的


无论如何,如果你想让病毒覆盖范围更广,那么就用病毒扫描器扫描文件,但这可能无法保护你免受脚本注入之类的伤害。

如果你的服务器没有做一些本来就愚蠢的事情,那么应该没有问题。但是

由于我还不能100%确定内部管理,因此有可能在某个时候文件可以在内部执行/打开

。。。这是天生的愚蠢。您必须确保不会意外执行上载的文件(上载目录上的权限是一个起点,将上载限制到特定目录等)

除了执行之外,如果服务器尝试任何特定于文件类型的处理(例如,制作图像的缩略图),则始终有可能通过缓冲区溢出漏洞攻击处理(尽管这些漏洞对于每种类型的软件/库都是特定的)


仅存储/服务文件的纯文件服务器(如FTP)即为保存(当没有其他漏洞时)。

我还希望得到相关文献的提示!对这叫一个。特别糟糕的是。是的,我知道DDoS,但这是一个普遍的问题,可能会发生在每台服务器上,无论它是否有文件上传程序。@Stacky不幸的是,你能做的最多就是确保你永远不会在系统上保存具有可执行权限的可执行文件。除了在服务器上运行某种反病毒程序扫描所有上传的文件(出于许多原因,我不喜欢在服务器上运行反病毒程序)之外,几乎没有任何方法可以检查文件是否有病毒。限制上传程序支持的文件大小和mime类型是一个开始。这很公平,但许多人也习惯在电脑上播放MP3文件…;-)从未听说过MP3文件病毒,但肯定有可能是某个特定的播放器存在允许攻击的bug(可能是某种缓冲区溢出)。当然,它只限于一个玩家(或库),所以只需选择另一个玩家。好吧,我不久前在一家电视新闻杂志上看到了关于这个主题的报道。不幸的是,我无法再找到类似的内容,但关于图像,我发现:通过说“还没有100%确定”,我并不是说,我不知道我在做什么,但我还没有对网站的功能做出最终决定,网站将使用该服务器上的文件,因为我不想“简单地存储”它们。当然,所有这些都会影响服务器对每个文件的处理(即加密、转换、后台使用等)。但我很感激你明确的关注和警告,所以谢谢你。