Scripting HelpersARCHIVE
A little piece of Roblox history. Preserved for everyone, one question at a time.Read about the archive →
✓ ANSWER ACCEPTED

Server Storage v Storing Within Player: Security Difference?

Hello, I'm currently working on a game that contains a leveling system where your level is changed based upon the amount of Experience you have.

The game also contains Coins as currency.

My question is whether there is a difference, security wise, between storing the stats I listed above inside ServerStorage or storing it inside the Player.

Thank you.

1 answer

✓ Accepted answer

This answer assumes you are using FilteringEnabled. Use FilteringEnabled. There is no down side :)

Read - only

Only a few objects are not "owned" by the server.

Anything owned by the server can only be changed by the server -- clients requests' to change the values will be ignored.

That means that a cheating player can change the way they see the world, but

  • those changes won't be visible to other players
  • the server will not see the changes and thus will not save them -- cheats will be lost upon rejoining

The objects not owned by the server are

  • the local humanoid
  • most objects in PlayerGui

Objects in the Player object itself (e.g., the leaderstats) are owned by the server.

Invisible

Even though clients can't change anything in the world, they can read anything sent to them.

Thus, for both performance and security, it's better to not send them more than they need.

ServerStorage and ServerScriptService are not sent to clients at all.

That means information that only exists in those services cannot be directly learned by clients. Only a Script object can convey that information / create those models / etc.

1 comment

0

Thanks for the insightful answer! And yes, I am using FE.

This discussion is preserved as it was. New answers, comments, and votes are closed.