Apologies in advance if this is the wrong SE site for this topic, though it should be a fairly appropriate match.
I am building a video game where one of the features available to users will be online multiplayer. I will be releasing the server software for free (and open source) with the hope that users will be able to run their own modifiable servers for their communities.
Servers may utilize "vanilla" resources freely, however some may opt to add their own resources such as textures and models. What I would like to accomplish is to enable clients to (with explicit user action) download the required assets.
To add a further layer of complexity, some of these assets are available for download publicly, while some are proprietary and only available through the server.
My main concern is the mitigation of malicious files through the distribution software. However, my "saving grace" may be that all the files that are distributed will be .png
, .txt
, .xml
, .yml
, and .mdl
, and all will be usable in their existing forms without modification.
The files will not be pushed to the client, but rather the client will pull. This will eliminate any issues with the server having access to the client's filesystem, which could really do harm.
Now, for the question part of this:
Besides a large disclaimer letting the user know that it's their problem if something happens, where should my concerns be placed regarding the safety and validity of files?
All communications to and from the server will be encrypted, likely using something similar to the Signal protocol. Additionally, when a server admin uploads a file, I will have the server generate a hash which should allow the client software to verify that the file was not modified in transit, though nothing more.
A mass majority of the files transmitted will be .txt
files, which by themselves should hold no inherent danger (to my understanding). Additionally, none of the files are executed. Code on the client's machine will parse the files and discard anything that is not the right format.
I understand that not every concern can be addressed here because the topic is fairly large, though any pointers on any potential issues or anything else to just be generally aware of will be appreciated.