Anslut till databas över nätet.

Permalänk
Medlem

Anslut till databas över nätet.

Hej!

Jag har skrivit endel program och tjänster för att hantera och läsa in till en SQL-databas.
Programmen och servern har alltid körts i LAN och bakom brandvägg så jag har aldrig behövt att skydda minna Connectionsträngar i config-filerna.

Jag har nu skrivit ett spel i C#.
Highscore listan har jag kopplat till en databas, anledningen med detta är att jag vill ha en gemensam scoreboard för alla som spelar.

Hur gör jag egentligen? Går det kryptera anslutningsuppgifter?
Hårdkoda in dem gör ju det inget säkrare, då det enkelt går att sniffa anslutningsögonblicket.

Visa signatur

K#

Permalänk
Testpilot

Du kan ha ett program eller webbsida som tar emot alla highscores och sen själv sköter anslutningen med databasen, på så vis behöver du inte ha någon databas exponerad. Du har sen även exempelvis en dynamisk XML-fil eller liknande som ditt spel kan ladda ner som hämtar highscores från databasen.

Du borde väl dock fortfarande ha någon form av skydd inbyggt i spelet som gör att en verifieringssträng skickas med eller så som man bara kan få genom att ha spelat spelet, annars kan ju nån sniffa trafiken och ansluta till din webbsida för att spara falska highscores.

Visa signatur

Kolla gärna in min RGB-LED-ljusstake i galleriet
[Gigabyte GA-Z97MX-Gaming 5][Intel Core i5 4690K][Corsair XMS3 16GB][Asus GeForce RTX 2060 Super Dual Evo OC]

Permalänk
Medlem

När du bygger sådant så tänk att spelaren kan se allt som spelet kan se, dvs kan spelet dekryptera en nyckel kan spelaren göra det, kan spelet skicka in en highscore på x poäng kan spelaren göra det osv. Det bästa du kan hoppas på är att göra det svårt, men stoppa det helt går inte.

Därför är det bra att inte öppna databasen mot internet och ge ut databas-inlogget till spelet. Att göra som hunden föreslår och ha en väldigt enkel webbsida som sköter jobbet bättre, då är iaf databasen skyddad och du kan enkelt bygga in lite verifieringar innan saker skrivs in där. Hur dom ska gå till är svårt, men för ett enkelt spel skulle man kunna tänka sig att du skickar in hela spelomgången, så får servern räkna ut om det är rimligt eller ej genom att simulera spelomgången. En hacker skulle då vara tvungen att iaf lista ut hur en spelomgång som ger hög poiäng ser ut för att fuska. Eller egentligen kanske det räcker att spelet tar score och gör en lätt kryptering mot ett hårdkodat lösenord, då stoppar du om hackern försöker sniffa trafiken och så det duger nog i 99%, och övriga 1% låter sig kanske inte stoppas oavsett vad du gör.

Permalänk
Medlem

Tack för svaren, har insett att det är sådär man gör.

Har gjort ett serverprogram på min burk där spelet ansluter med sockets, programmet skickar egentligen bara namnet och highscore, varvid servern ansluter till databasen och uppdaterar den på mitt lokala nätverk.

Visa signatur

K#

Permalänk
Medlem

Stored procedures heter annars svaret om det endå är till så att du måste köra frågor över internet

Visa signatur

Besök JimNelin.com eller Jim Nelin på LinkedIn

Permalänk
Medlem

Det är inte själva SQL-frågorna som är ett problem då jag har skapat funktioner för att få ut och sätta information i databasen.
Utan det är själva connectionsträngen som är kritisk som jag inte kan låta vara publik.
Så en socket port mot en tjänst gjorde det säkrare. Skickar information direkt som tex en chatt funkar.

Visa signatur

K#