-
-
Notifications
You must be signed in to change notification settings - Fork 499
Description
Is your feature request related to a problem? Please describe.
Nowadays, when Lua injectors have become commonplace, and considering how a large portion of MTA servers use Element Data without knowing its security weaknesses/not being able to secure them, I think it would be a good idea to make this small - but facilitating change to help secure such servers.
Describe the solution you'd like
My suggestion is to add an additional parameter to the setElementData function - protected=false/true (default: false). If the parameter is set to true then all changes to the given element data from clientside will be ignored and printed in the debugscript. Eg. by rejecting network packets.
bool setElementData ( element theElement, string key, var value [, var syncMode="broadcast", var protected=false] )
Describe alternatives you've considered
For the time being, the only solution if you don't want to give up Element Data (and with the introduction of subscriptions, it's a very good feature for optimally storing very little data) is to use the onElementDataChange event and undo the changes and then kick/ban the invasive user. Unfortunately, this solution has a significant drawback - this event is triggered already AFTER the element data change (which could have already performed some actions, for example), so we are forced to undo it.
Additional context
In my opinion, this is a fairly simple and quick solution to help secure an important element datas on MTA servers that should not be modified from the client side. In addition, we can send such a flag to the client, so that if you try to send such a change, no network traffic is sent to the server (which can try to overload it) - I realize that everything can be bypassed by cheaters and such traffic can still go out (so the the server side must verify such a change by the protected flag), but it will already be much more difficult for them.
I realize that servers can secure the current Element Data system with the above-mentioned event or by switching to their own data system sent by events, but I think that such a change, because of its simplicity, will positively affect the security of smaller servers or servers created by less experienced scripters who, for some reason, do not want to use the above-mentioned solutions. I think that everyone is also familiar with the performance of the onElementDataChange event, so the introduction of this feature will also increase the performance of servers, because they will be able to avoid using this event too intensively by cheaters.
Security Policy
- I have read and understood the Security Policy and this issue is not about a cheat or security vulnerability.