Rückgabewerte TCP
Übersicht BlitzMax, BlitzMax NG Allgemein
Mathias-KwiatkowskiBetreff: Rückgabewerte TCP |
Di, Okt 18, 2016 18:28 Antworten mit Zitat |
|
---|---|---|
hi leute ich programmiere ein login soweit so gut.
ich benutze zudem das vertex.Bnet modul nun übermittel ich z.b. username und auch passwort am server. wenn es den benutzer gibt und er ein account besitzt bekommt der client eine 1 zurück gesendet. soweit so gut funktioniert fabelhaft. aber es wurde mir gesagt das man den ausgabe wert vom server her fälschen kann / können würde. dies würde bedeuten auf dem server gibt es den account der sich versucht einzuloggen nicht. und es würde die antwort 0 in 1 gefälscht werden. so nun mein problem ist es ... wie kann ich es machen das der endnutzer nun nicht mehr den rückgabewert verändern kann? |
||
Skype: Anarchie1984
http://projektworks.de/maxbase/ Icq - Erneuert am 21.08.2017 Yahoo - Erneuert am 21.08.2017 |
Midimaster |
Mi, Okt 19, 2016 7:39 Antworten mit Zitat |
|
---|---|---|
....verschoben | ||
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe |
- Zuletzt bearbeitet von Midimaster am Mi, Okt 19, 2016 8:51, insgesamt einmal bearbeitet
ohaz |
Mi, Okt 19, 2016 7:56 Antworten mit Zitat |
|
---|---|---|
Das war wohl der falsche Thread Midimaster.
@ eigentlicher Inhalt: Es gibt nur Methoden um das ganze "sicherer" zu machen. Absolut wirst du das nie hin kriegen. Nutzer werden im Client immer alles ändern können. Falls du weitere Server/Client Interaktion machen willst, würde ich dir deshalb eher empfehlen beim Login auf dem Server ein unique Token aus zufälligen buchstaben und zahlenkombinationen (wie ein temporäres passwort) zu erstellen, das dem client beim erfolgreichen login zu geben und das bei server/client interaktion vom client aus immer zur authentifizierung mitschicken. Wenn du nur auf Clientseite bist, und nur verifizieren willst ob der user eingeloggt ist kannst du da leider nichts machen. Das kann immer gefälscht werden. |
||
Midimaster |
Mi, Okt 19, 2016 8:50 Antworten mit Zitat |
|
---|---|---|
upps, brings gleich in Ordnung | ||
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe |
DAK |
Mi, Okt 19, 2016 12:00 Antworten mit Zitat |
|
---|---|---|
Soweit ich dich verstehe hast du aktuell ein folgendes Setup:
Client schickt Logindaten an Server Server überprüft die Logindaten, und schickt dann 1 (Login geglückt) oder 0 (Login nicht geglückt) zurück. Stimmt das ungefähr? Willst du Sicherheit haben, dann musst du das schon vom Design des Ganzen her aufziehen. Übliche Varianten sind Folgendes: -) Wichtige Änderungen und Eingaben gehen immer über den Server, der Client bedient nur. Der Server muss jede Eingabe auf Richtigkeit überprüfen und darf sich nicht darauf verlassen, dass der Client "gut" ist. Es kann ja jeder den Client durch einen Anderen ersetzen. -) Geh weg von einem reinen Login sondern verwende Sessions. Will heißen, wenn du dich einloggst, startet der Server mit dem Client eine Session. Dabei vergibt er an den Client einen Session Key, der bei jeder Anfrage mitgeschickt wird. Fehlt der Session Key oder ist er falsch, dann wird die Anfrage ignoriert. Das behebt dein aktuelles Problem. Da würde in deinem aktuellen Fall der Client zwar glauben, dass der Login selbst durchgegangen ist, aber keine weitere Anfrage an den Server durchgehen. Damit wüsste der Client wieder, dass er ausgeloggt ist. -) Verschlüssel die Verbindung. Ich weiß allerdings nicht, ob es für BMax ein gutes Kryptomodul gibt. |
||
Gewinner der 6. und der 68. BlitzCodeCompo |
Mathias-Kwiatkowski |
Mi, Okt 19, 2016 13:27 Antworten mit Zitat |
|
---|---|---|
das klingt interessant was du erklärst, soweit is auch alles logisch nur bei einem punkt muss ich nachfragen
->Will heißen, wenn du dich einloggst, startet der Server mit dem Client eine Session.<- das würde bedeuten das der server ein string mit keiner ahnung einer session id ect sendet und zwar am client, aber wenn man nun ein auslese tool haben würde hätte man die session id fix raus und sendet sie mit. oder habe ich es falsch verstanden? |
||
Skype: Anarchie1984
http://projektworks.de/maxbase/ Icq - Erneuert am 21.08.2017 Yahoo - Erneuert am 21.08.2017 |
Jolinah |
Mi, Okt 19, 2016 19:46 Antworten mit Zitat |
|
---|---|---|
Ja, das kann man immer, wenn die Verbindung nicht verschlüsselt ist (entweder nur lauschen, oder den Datenverkehr sogar manipulieren, siehe https://de.wikipedia.org/wiki/...le-Angriff).
Eine Verschlüsselung ist jedoch - wie bereits erwähnt - auch nicht ein 100-prozentiger Schutz, aber - je nach Verschlüsselungsverfahren - zumindest ziemlich bis sehr sicher Wenn die Public-Keys bei einem asymmetrischen Verschlüsselungsverfahren jedoch einfach so ausgetauscht werden, besteht immer noch die Gefahr eines Man in the middle-Angriffs. Der Angreifer in der Mitte könnte für die beiden anderen Kommunikations-Partner jeweils eigene Key-Paare generieren und somit die Pakete entschlüsseln, im Klartext lesen und für den anderen Partner wieder mit dem zweiten Key-Paar verschlüsseln. Daher werden im Web-Bereich meistens Zertifikate eingesetzt, die bestätigen dass ein bestimmter Key auch zu der Zielperson gehört (oder zu einer bestimmten Domain). Und wenn so ein Zertifikat eben ungültig ist, sollte man der Verbindung nicht trauen (d.h. es könnte jemand anderes mitlauschen). |
||
Thunder |
Mi, Okt 19, 2016 21:11 Antworten mit Zitat |
|
---|---|---|
Es kommt einfach komplett darauf an, was du programmierst.
Du kannst dann entsprechende Gegenmaßnahmen setzen. Es geht nicht darum, wie du dem Client signalisierst, dass der Login korrekt war, sondern wie dein Server z.B. auf Clients reagiert, die eigentlich nicht eingeloggt sind, aber die gleichen befehle schicken, wie eingeloggte Clients. Das ist eigentlich das, was DAK gesagt hat: der Server checkt an wichtigen Punkten in der Unterhaltung mit dem Client, ob da etwas nicht stimmt. Ein Spielserver kann z.B. checken, ob sich eine Spielfigur seit dem Empfang des letzten Datenpakets überhaupt so weit bewegt haben kann, wie der Client das angibt. Dein Server wird also zumindest eine Tabelle über alle eingeloggten User führen müssen. Normalerweise gibt man jedem Nutzer eine zufällige Session ID, die nur solange gültig ist, bis er sich ausloggt, oder nach einer gewissen Zeit (in der kein Request bzgl. der Session kam) automatisch ungültig wird (z.B. 1 Stunde, = Timeout). Und bei einem Request an den Server musst du checken, ob der User eingeloggt ist (je nach Art des Programms kannst du dich dazu entscheiden, zu checken ob die IP gleich blieb). Wenn irgendwas nicht passt, muss der Server den Client auffordern, sich erneut einzuloggen und darf nicht antworten, als wäre der Client eingeloggt. Weil du von "auslese tools" sprichst: Wenn du in einem Internet Café sitzt und dich gerade mit deinem Server unverschlüsselt verbindest, und jemand der meinung ist, er muss den WLAN Traffic dumpen, kann er natürlich die Session ID rauslesen. Aber dein Passwort auch. Die Session ID ist das geringere Übel, weil sie nur ein paar Mal funktioniert (bis zum Ausloggen oder Timeout des Users). Mit dem Passwort kann man sich immer einloggen. Dagegen hilft nur Verschlüsselung. Am besten plus Checksumme. Wichtig: Es reicht nicht, das Passwort vorher zu hashen und den Hash zu übertragen. Das verhindert zwar, dass jemand den Klartext kennt, aber nicht, dass sich jemand mit diesem abgefangenen Hash einloggt. Netzwerkprogrammierung ist leicht. Sichere Netzwerkprogrammierung nicht. |
||
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit |
CO2ehemals "SirMO" |
Mo, Okt 24, 2016 19:07 Antworten mit Zitat |
|
---|---|---|
Vielleicht noch ein kleiner Denkanstoß: Zertifikate. Verbindung via TLS (ehemals SSL), wenn es wirklich so wichtig ist, dass die Daten schwer ausgelesen bzw. bearbeitet werden können. Zertifikate kannst du meines Wissens nach für lau selbst erzeugen, wenn es darum geht, dass du zertifizierter Endpunkt wirst, musst du dich eintragen lassen. Für C gibt es da die kostenlose Library https://tls.mbed.org/. Habe damit noch nicht allzuviel zu tun gehabt, habe es mir lediglich mal angeschaut. Vielleicht hilft's.
EDIT: Was mir gerade noch einfällt: Wenn du Passworter überträgst und dich dazu entscheidest, diese vor der Übertragung zu hashen, salte sie. Andernfalls ist es relativ einfach über Rainbowtabellen den Klartext zu erhalten. Was das ist und wie das funktioniert, siehe hier: https://de.wikipedia.org/wiki/Salt_(Kryptologie). |
||
mfG, CO²
Sprachen: BlitzMax, C, C++, C#, Java Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti |
DAK |
Di, Okt 25, 2016 9:48 Antworten mit Zitat |
|
---|---|---|
Was genau programmierst du da eigentlich? Je nach dem, was du da tust (Onlinespiel vs Banksoftware), sind verschiedene Arten von Sicherung sinnvoll. TLS/SSL ist eventuell ein Overkill, wenn du nur ein Spiel machst. Es ist hald doch viel Arbeit sowas aufzusetzen. | ||
Gewinner der 6. und der 68. BlitzCodeCompo |
Mathias-Kwiatkowski |
Di, Nov 01, 2016 18:34 Antworten mit Zitat |
|
---|---|---|
sorry das ich zu spät antworte.
ja wenn für online game. aber für mich ist es einfach nur das wissen was ich gern erlang würde bzw durch euch habe. wie man in gewissen situationen mit was umzugehen hat. |
||
Skype: Anarchie1984
http://projektworks.de/maxbase/ Icq - Erneuert am 21.08.2017 Yahoo - Erneuert am 21.08.2017 |
DAK |
Mi, Nov 02, 2016 10:47 Antworten mit Zitat |
|
---|---|---|
Aso, also geht's dir grad erst um Basteln und hast keinen konkreten Anwendungsfall, das ist auch ok.
Grad bei Sicherheit kommt es arg auf den konkreten Anwendungsfall an. Man kann irre viel tun, in diesem Bereich, und je nach dem, was man braucht, tut man dann. Es gibt eigene Studiengänge dazu, was man denn alles zur Sicherheit tun kann und alles davon hat Nachteile. Die größten Nachteile sind üblicherweise Performance und Arbeitszeit zum Einbauen. Die ersten Schritte wären zuerst eine Passwortabfrage und Sessions. Beides ist recht leicht gemacht und kostet nur wenig Performance. Danach kommt Verschlüsselung. Je nach dem, was dir die Sprache oder fertige Bibliotheken bieten, ist das irgendwo zwischen trivial und schon echt komplex. In BMax rennt es tendenziell zu eher komplex. Darüber gibt es noch dutzende verschiedene Sachen, die man machen kann, um den Verkehr sicherer, abhörsicherer und unsichtbarer zu machen. Das ist dann aber eine Wissenschaft für sich. |
||
Gewinner der 6. und der 68. BlitzCodeCompo |
Übersicht BlitzMax, BlitzMax NG Allgemein
Powered by phpBB © 2001 - 2006, phpBB Group