Safest way to communicate a data change on the client to the server?

I want to know a safer and maybe better way to tell the server to change something in the player’s data: (ex: equipping a hat)

Right now, I use remote events, but this can also pose a security risk, as exploiters can just do something like ChangeData:FireServer(“Money”, 250000) and get a bunch of money.

I don’t really know how to do sanity checks, and it’d be very useful to learn how to do them.

In the money example you base it off your game requirements which can be pretty broad.

For example in a tycoon game if you have 5 amount of upgrades you can expect to earn a maximum 2000 money per second. So it would be odd to have them earn 3000 money per second.

Ideally you’d never do this remote in the first place there should be a better alternative. If it’s the tycoon example you can calculate the money per second on the server in a while loop.

Also more examples and scenarios.