Android/IOS securing connection to remote Database

Started by
3 comments, last by rpiller 10 years, 4 months ago

Hi.

earlier today, i was considering how to create a connection from an android or IOS game, to a remote MySql Database.

Obviously you cant store database username and password as strings.

How should i tackle this problem, is there a secure way to make that connection, and in the same time, make it difficult for hackers to get access to the database

Regards Morten

www.mojostudios.dk

New Relealse - Rainbow Run (IOS, Android)

Get it on Play store

Get it on App store

Advertisement

This is not unique to those platforms.

The game client connects to a server that you run and trust. The server authenticates the player, validates everything, and runs whatever processing is legitimately requested. The server, not the remote game client, connects to your databases.

As frob said, you don't want to connect directly to the database from the client app. You will want to have a server with some sort of REST api that restricts what actions the client can do to the database. Not only is this more secure, but it is better design as well. By hiding the database behind an API your client side app does not need to be concerned with the structure of the database.

If your app connects directly to the database there is absolutely nothing you could do to keep hackers from doing the same. The best think you could do is create a database user with restricted permissions so they aren't allowed to drop tables or do other really damaging things. However, even with restricted permissions attackers could read any information from tables to get other users information as well as change or possibly delete it.

The best way to protect users at login is to establish an ssl connection with your server then send the username and password over that secure connection. Then have the server code do the authentication against the database. Another important thing you should keep in mind is that you should never store users passwords in the database in plain text. Instead you should do a one way hash of the passwords with some salt. This article describes how to do this. Secure Salted Passwords
My current game project Platform RPG

thank you for the answers. have looked at the optin of using a REST api, and seems to be a good way to go.

Best regards Morten

www.mojostudios.dk

New Relealse - Rainbow Run (IOS, Android)

Get it on Play store

Get it on App store

Or better yet, let the user login with their existing google, fb, etc accounts so you don't have to store any pw at all! That's one of the benefits of doing this for sites/games. You don't want to be responsible for user PW's. If your server/db gets hacked you could be screwed and on the hook legally if they find your practices not up to par.

If your game isn't that big of a deal or relaxed or it's not the end of the world if something gets lost or mixed up then skipping any username/pw could be an option. For my game that stores a couple stats that isn't a big deal I'm not making the user make a username/pw. Instead I'm just making a GUID for each profile, storing it locally on their device and in the server DB. When they connect I just send it along as the ID of that device/person. Can that guid be hacked on the client side and used by someone else? Yes. Is it really the end of the world if that happens? No. Backups are made on the DB and any cases of this can be fixed, and the game isn't that serious in the first place. Just something to think about.

This topic is closed to new replies.

Advertisement