我正在构建一个处理上传/下载Named Binary Tag文件(NBT)的应用程序。
他们上传后我需要解析它们并获取一些信息。
我有点担心安全问题,因为我没有必要的知识来正确理解他们如何构建或者期望从中获得什么样的数据。
在上传文件时,我可以执行哪些健全性检查,以确保它们确实是NBT文件。
解析它们时我应该担心吗?
如果还有其他我应该关注的事情,请告诉你。
我意识到这些是模糊的问题。 Google上没有很多答案,否则我就不会在这里。
答案 0 :(得分:0)
NBT的文件格式非常简单紧凑。它是一个二进制流(未压缩或gzip压缩),由Notch指定。
一个“问题”带有特制的NBT文件,其中包含大量空列表和列表列表......解析这些文件的内存开销可能导致服务失败(主要是因为每个条目创建的对象)只是填补你的记忆。)
一种解决方案可能是限制您正在阅读的条目数量,以及何时只需删除解析后的文件即可达到该限制。
我最近发布了java-library for reading nbt-files(但没有限制),也许它可以帮助您理解文件格式。
修改:忘记分享此网站有关“漏洞利用”的信息:http://arstechnica.com/security/2015/04/just-released-minecraft-exploit-makes-it-easy-to-crash-game-servers/