java - Java实现文件上传类型

标签 java file batch-file content-type mime

我已将我的文件上传类型限制为仅使用 .

FormFile fileObj = null;

因此,即使有人将 exe 文件更改为 txt 文件并尝试上传它,我也可以借助 AutoDetectParser、ParseContext、元数据

现在我有一个批处理文件,在转换为 txt 后,可以成功上传。

此文件的内容类型为text/plain,与txt相同。

现在, 我怎样才能限制上传这个文件? 是否每种类型的文件内容都有一些签名,我们可以根据这些签名来区分上传的文件? 这些java文件、批处理文件转成txt后是否可以限制?

最佳答案

我假设您在谈论 Windows 批处理文件。这些文件没有标题或其他可以使它们与“普通”文本文件准确区分的特征。批处理文件 ,事实上,“普通”文本文件,即它们通常是纯 ASCII 文件。为了检测它们,您可能会想到任意复杂的启发式方法 - 具有不同的成功率 - 所以,不,您无法可靠地检测它们。

您也不能真正“限制”批处理文件,好吧,也许吧。您可以在文件前添加 GOTO :eof 或在每一行前添加 REM::,这将有效地停用批处理文件中的任何内容。或者做其他技巧,也许吧。

但我不完全确定您为什么要这样做。在普通的 web 应用程序中,上传的文件应该简单地存储到文件系统的受限部分,而不是可执行的。如果攻击者可能会在您的基础架构的某些部分上运行任何类型的上传文件,那么这似乎是一个架构问题。

关于java - Java实现文件上传类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36886085/

相关文章:

c#启动进程参数传入数据

batch-file - 批处理文件中用户桌面的路径

java - 用Java将Weka分类器的结果写入文件

c# - 分配给 '....' 的表达式必须是常量

java - 客户端服务器通信解决方案

file - 如何在 Delphi 中创建不可删除的文件

c - 使用带参数的 Strcmp

batch-file - .bat 重命名文件名删除前 x 个字符和后 x 个字符

java - Eclipse 是否有将类型层次结构合并到单个类中的工具?

java - 在 XML 中的 ListView 上方添加 header