Hulp bij visual studio

Pagina: 1
Acties:
  • 758 views

Onderwerpen

Vraag


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Mijn vraag
Ben bezig met een windows app te maken voor me website, alleen blijf hangen op een stukje.
Bij me website gebruik ik als wachtwoord md5 hash krijg het alleen in de windows app niet erin om dat te lezen.


Relevante software en hardware die ik gebruik
Visual studio 2017

Hier het stukje code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
  private bool validate_login(string user, string pass)

        {
            db_connection();
            MySqlCommand cmd = new MySqlCommand();
            cmd.CommandText = "Select * from users where username=@user and Password =@pass;";
            cmd.Parameters.AddWithValue("@user", user);
            cmd.Parameters.AddWithValue("@pass", pass);
            cmd.Connection = connect;
            MySqlDataReader login = cmd.ExecuteReader();
            if (login.Read())
            {
                connect.Close();
                return true;
            }
            else
            {
                connect.Close();
                return false;
            }



        }

Alle reacties


Acties:
  • 0 Henk 'm!

  • FeronIT
  • Registratie: Mei 2015
  • Laatst online: 12-09 09:36
Op welke regel krijgt je een fout? Welke fout krijg je? Of krijg je geen fout maar levert de query geen resultaten of .. of... of ...

Acties:
  • 0 Henk 'm!

  • DonJunior
  • Registratie: Februari 2008
  • Laatst online: 18:14
Ik zou de user uit de database halen en dan in code controleren of de opgeven hash klopt met de opgeslagen hash.

Overigens is het 'mijn website' en niet 'me website'. Probeer dergelijke uitspraken ook zoveel mogelijk te voorkomen voordat het helemaal in je 'systeem' zit en je straks zulke taal gaat uitslaan bij sollicitaties of andere gesprekken. (gewoon als tip)

Daarnaast zou ik ook nog eens overwegen of MD5 wel veilig genoeg is anno 2018.
Mijn vermoeden zegt van niet.
https://security.stackexc...s-md5-considered-insecure
https://stackoverflow.com...-md5-for-password-hashing
http://www.zdnet.com/arti...scrambler-no-longer-safe/

Zoek maar eens op "MD5 password" dan krijg je voldoende leesvoer.

*sowieso


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
FeronIT schreef op woensdag 4 april 2018 @ 07:38:
Op welke regel krijgt je een fout? Welke fout krijg je? Of krijg je geen fout maar levert de query geen resultaten of .. of... of ...
Hij zegt dat de gebruikers naam / password niet klopt.

Acties:
  • 0 Henk 'm!

  • DonJunior
  • Registratie: Februari 2008
  • Laatst online: 18:14
Verwijderd schreef op woensdag 4 april 2018 @ 08:10:
[...]


Hij zegt dat de gebruikers naam / password niet klopt.
Neem aan dat je wel het ingevoerde wachtwoord eerst hashed voordat je het vergelijkt met de MD5 waarde in de database? Gaat de hashing op dezelfde manier en krijg je de verwachte waarde of klopt 'pass' als parameter al niet voordat je de query uitvoert?

*sowieso


Acties:
  • 0 Henk 'm!

  • Reptile209
  • Registratie: Juni 2001
  • Laatst online: 20:33

Reptile209

- gers -

Verwijderd schreef op woensdag 4 april 2018 @ 08:10:
[...]


Hij zegt dat de gebruikers naam / password niet klopt.
Dus toen ben je gaan debuggen. Klopt het password (hash) die je in je query stopt? Username ook? Inclusief case, spaties er omheen, etc? Wat als je de sql met de hand uitvoert? Enz.

Zo scherp als een voetbal!


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
DonJunior schreef op woensdag 4 april 2018 @ 08:13:
[...]

Neem aan dat je wel het ingevoerde wachtwoord eerst hashed voordat je het vergelijkt met de MD5 waarde in de database? Gaat de hashing op dezelfde manier en krijg je de verwachte waarde of klopt 'pass' als parameter al niet voordat je de query uitvoert?
Hij is gehasd in the database, dat maakt die al aan als ik gewoon op de site via php aanmeld.

Acties:
  • +1 Henk 'm!

  • Reptile209
  • Registratie: Juni 2001
  • Laatst online: 20:33

Reptile209

- gers -

Verwijderd schreef op woensdag 4 april 2018 @ 08:15:
[...]

Hij is gehasd in the database, dat maakt die al aan als ik gewoon op de site via php aanmeld.
Maar berekent je app ook de hash? En klopt die?

Zo scherp als een voetbal!


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Reptile209 schreef op woensdag 4 april 2018 @ 08:15:
[...]

Dus toen ben je gaan debuggen. Klopt het password (hash) die je in je query stopt? Username ook? Inclusief case, spaties er omheen, etc? Wat als je de sql met de hand uitvoert? Enz.
Ja gebruik het zelfde wachtwoord en username die ik aangemaakt heb.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Reptile209 schreef op woensdag 4 april 2018 @ 08:16:
[...]

Maar berekent je app ook de hash? En klopt die?
Dat krijg ik juist niet voor elkaar dat de app de code in de OP dat die md5 berekend.

Acties:
  • 0 Henk 'm!

  • DonJunior
  • Registratie: Februari 2008
  • Laatst online: 18:14
Dus zoals verwacht roep je 'validate_login' aan met het wachtwoord in plain text? Correct?
Of is dat ook een MD5 hash? Zet eens een breakpoint (F9) op regel 4 en controleer dan eens de waarde die je binnen krijgt als 'pass'.

*sowieso


Acties:
  • 0 Henk 'm!

  • Hydra
  • Registratie: September 2000
  • Laatst online: 21-08 17:09
@Verwijderd je begrijpt de vraag niet. Je moet ook bij het checken van de login de password hashen want anders ga je altijd nul resultaten krijgen. Je vergelijkt op dit moment in deze query:

code:
1
Select * from users where username=@user and Password =@pass;


Het unhashed input password met het in de DB gehashte password. Die zijn natuurlijk nooit hetzelfde.

https://niels.nu


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hydra schreef op woensdag 4 april 2018 @ 08:25:
@Verwijderd je begrijpt de vraag niet. Je moet ook bij het checken van de login de password hashen want anders ga je altijd nul resultaten krijgen. Je vergelijkt op dit moment in deze query:

code:
1
Select * from users where username=@user and Password =@pass;


Het unhashed input password met het in de DB gehashte password. Die zijn natuurlijk nooit hetzelfde.
Hoe moet ik die dan opvragen?

Acties:
  • 0 Henk 'm!

  • RedHat
  • Registratie: Augustus 2000
  • Laatst online: 09-09 17:16
Verwijderd schreef op woensdag 4 april 2018 @ 08:27:
[...]


Hoe moet ik die dan opvragen?
Je moet die niet opvragen.

Je slaat je wachtwoord in je databse dmv php op met md5();

Dan moet je in je app ook je password hashen met MD5 en dan vergelijken. Als ze allebij gehashed zijn zullen ze bij dezelfde input dezelfde hash waarde zijn.

Dus @pass moet je eerst hashen kort gezegd met MD5 voordat je de select doet.

Bij troubleshooten print je ook altijd de output van een query zodat je weet wat hij precies vergelijkt, dan had je kunnen zien dat hij plain text password vegelijkt met de MD5 hashed password welke niet hetzelfde zijn.

[ Voor 27% gewijzigd door RedHat op 04-04-2018 08:31 ]


Acties:
  • 0 Henk 'm!

  • Hydra
  • Registratie: September 2000
  • Laatst online: 21-08 17:09
Als ik je werk voor je moet gaan doen moet je me ervoor gaan betalen.

P.s. MD5 is kut, volkomen stuk en moet je niet meer gebruiken.

[ Voor 62% gewijzigd door Hydra op 04-04-2018 08:35 ]

https://niels.nu


Acties:
  • 0 Henk 'm!

  • DonJunior
  • Registratie: Februari 2008
  • Laatst online: 18:14
Verwijderd schreef op woensdag 4 april 2018 @ 08:27:
[...]


Hoe moet ik die dan opvragen?
Leesvoer: https://blogs.msdn.micros...a-md5-hash-from-a-string/
Je inkomend Pass.. moet je dus eerst middels MD5 hashen voordat je de database query aanroept.
De query vul je vervolgens met je MD5 resultaat en niet met je plaintext password.

*sowieso


Acties:
  • 0 Henk 'm!

  • DonJunior
  • Registratie: Februari 2008
  • Laatst online: 18:14
Hydra schreef op woensdag 4 april 2018 @ 08:34:
[...]


Als ik je werk voor je moet gaan doen moet je me ervoor gaan betalen.


[...]


Dat hoop ik niet.
Nou nou nou.. Je kan ook iemand de goede richting in sturen in plaats van meteen af te katten he?

*sowieso


Acties:
  • +2 Henk 'm!

  • Hydra
  • Registratie: September 2000
  • Laatst online: 21-08 17:09
DonJunior schreef op woensdag 4 april 2018 @ 08:35:
Je kan ook iemand de goede richting in sturen in plaats van meteen af te katten he?
Zeg maar wat ik letterlijk in m'n eerste post deed waarna de OP meteen reageerde zonder zelf uberhaupt even na te denken? :)

Ook dit is een leerervaring voor de OP: hij zal moeten leren zelf initiatief te nemen anders kan 'ie een carriere als software engineer wel vergeten.

[ Voor 19% gewijzigd door Hydra op 04-04-2018 08:41 ]

https://niels.nu


Acties:
  • 0 Henk 'm!

  • Lethalis
  • Registratie: April 2002
  • Niet online
MSDN: MD5 Class (System.Security.Cryptography)

Daar je "pass" doorheen halen en het resultaat als parameter meegeven.

Ask yourself if you are happy and then you cease to be.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
@Lethalis @Hydra @DonJunior @Reptile209 @FeronIT dankje allemaal voor je hulp heb al een andere manier gevonden laat gewoon een random code genereren in text plain en dan gebruik ik username en dan de code dan werkt het :)

Acties:
  • 0 Henk 'm!

  • Hydra
  • Registratie: September 2000
  • Laatst online: 21-08 17:09
Verwijderd schreef op woensdag 4 april 2018 @ 09:01:
@Lethalis @Hydra @DonJunior @Reptile209 @FeronIT dankje allemaal voor je hulp heb al een andere manier gevonden laat gewoon een random code genereren in text plain en dan gebruik ik username en dan de code dan werkt het :)
Werk je voor Equifax of voor Panera?

https://niels.nu


Acties:
  • 0 Henk 'm!

  • Lethalis
  • Registratie: April 2002
  • Niet online
Verwijderd schreef op woensdag 4 april 2018 @ 09:01:
@Lethalis @Hydra @DonJunior @Reptile209 @FeronIT dankje allemaal voor je hulp heb al een andere manier gevonden laat gewoon een random code genereren in text plain en dan gebruik ik username en dan de code dan werkt het :)
Daarmee doe je echter de voordelen van een hashing functie teniet, namelijk dat de echte wachtwoorden niet in de database staan.

Dus stel jij hebt een bug in jouw website en iemand krijgt via SQL injection toegang tot jouw database, dan zou het jammer zijn als hij in 1 keer alle wachtwoorden bemachtigt.

Zijn ze eerst door een hashing functie gehaald, dan is het lastiger om het echte wachtwoord te achterhalen.

Ask yourself if you are happy and then you cease to be.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Lethalis schreef op woensdag 4 april 2018 @ 09:04:
[...]

Daarmee doe je echter de voordelen van een hashing functie teniet, namelijk dat de echte wachtwoorden niet in de database staan.

Dus stel jij hebt een bug in jouw website en iemand krijgt via SQL injection toegang tot jouw database, dan zou het jammer zijn als hij in 1 keer alle wachtwoorden bemachtigt.

Zijn ze eerst door een hashing functie gehaald, dan is het lastiger om het echte wachtwoord te achterhalen.
De echte wachtwoorden blijven gewoon gehasd in de database via dat kunnen ze inloggen op de website.

Ze kunnen verder niks met de app alleen sites vieuwer.

Acties:
  • 0 Henk 'm!

  • DonJunior
  • Registratie: Februari 2008
  • Laatst online: 18:14
Hydra schreef op woensdag 4 april 2018 @ 08:40:
[...]


Zeg maar wat ik letterlijk in m'n eerste post deed waarna de OP meteen reageerde zonder zelf uberhaupt even na te denken? :)

Ook dit is een leerervaring voor de OP: hij zal moeten leren zelf initiatief te nemen anders kan 'ie een carriere als software engineer wel vergeten.
Helemaal mee eens hoor.. ;)

*sowieso


Acties:
  • 0 Henk 'm!

  • Lethalis
  • Registratie: April 2002
  • Niet online
Verwijderd schreef op woensdag 4 april 2018 @ 09:08:
[...]

De echte wachtwoorden blijven gewoon gehasd in de database via dat kunnen ze inloggen op de website.

Ze kunnen verder niks met de app alleen sites vieuwer.
Hoe vaak wordt de random code gegenereerd?
Is de verbinding tussen de app en de API of database versleuteld?

Ask yourself if you are happy and then you cease to be.


Acties:
  • 0 Henk 'm!

  • ElCondor
  • Registratie: Juni 2001
  • Laatst online: 15:15

ElCondor

Geluk is Onmisbaar

En nogmaals: probeer eens fatsoenlijke zinnen te typen, ook op een mobiel. Dit is echt verrot lezen...

Hay 365 dias en un año y 366 occasiones para festejar (Boliviaans spreekwoord)


Acties:
  • 0 Henk 'm!

  • Lethalis
  • Registratie: April 2002
  • Niet online
ElCondor schreef op woensdag 4 april 2018 @ 09:14:
En nogmaals: probeer eens fatsoenlijke zinnen te typen, ook op een mobiel. Dit is echt verrot lezen...
En hou je aan de .NET naming conventions... (ValidateLogin)
Maak geen functies die side effects hebben... (Geef database verbinding als parameter mee)
Gebruik interfaces waar dat kan... (IDBConnection, IDataReader, etc)
Gebruik try finally als je een niet managed object wil disposen (de connection).

Die hele functie hoeft niet aware te zijn van MySQL bijvoorbeeld.

[ Voor 14% gewijzigd door Lethalis op 04-04-2018 09:31 ]

Ask yourself if you are happy and then you cease to be.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Lethalis schreef op woensdag 4 april 2018 @ 09:12:
[...]

Hoe vaak wordt de random code gegenereerd?
Is de verbinding tussen de app en de API of database versleuteld?
Bij elke nieuwe user die zich aanmeld krijgt een eigen code.

Acties:
  • 0 Henk 'm!

  • ElCondor
  • Registratie: Juni 2001
  • Laatst online: 15:15

ElCondor

Geluk is Onmisbaar

Beste Robin,

je geeft wel heeeel korte antwoorden op de vragen die hier gesteld worden en aan een deel van die antwoorden is vervolgens geen touw aan vast te knopen.
Wij proberen je te helpen en met je mee te denken, maar je zou toch wat meer informatie in jouw antwoorden moeten geven. Geef in ieder geval op iedere afzonderlijke vraag een antwoord met de zaken die je hierin hebt ondernomen en hoe je een en ander hebt geïmplementeerd. Dat helpt ons bij het helpen.

als ik jouw antwoorden nu lees heb je een oplossing gekozen welke verre van ideaal is en verstuur je het wachtwoord onversleuteld over de lijn tussen app en website.
Het zou beter zijn om hier toch versleuteling op toe te passen. Kun je eens het stappen diagram van jouw implementatie posten?

De user vult zijn gegevens in, in de app.
En dan? Wat doet de app vóórdat de gegevens verstuurd worden naar de website? Doet die al aan versleuteling?
Wat gebeurt er aan de kant van de website? Deze zou de binnengekomen gegevens versleuteld en al moeten vergelijken met de versleutelde gegevens in de database.
Bij registratie op jouw website hoef je het wachtwoord dus maar één keer te versleutelen en op te slaan in de database. Daarna gebruik je alléén die versleutelde gegevens om de gebruikers via de website of de app te verifiëren.

Hay 365 dias en un año y 366 occasiones para festejar (Boliviaans spreekwoord)


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

ElCondor schreef op woensdag 4 april 2018 @ 09:48:
je geeft wel heeeel korte antwoorden op de vragen die hier gesteld worden en aan een deel van die antwoorden is vervolgens geen touw aan vast te knopen.
^^ dit. Robin, je krijgt allerlei zinnige reacties, onder meer over hoe slecht MD5 is voor wachtwoorden, over hoe je hashes moet rondpompen over een beveiligde verbinding, over hoe je vooral geen gekke dingen moet doen en uiteindelijk beslis je toch voor de gekste oplossingen waarbij je vervolgens telkens weer zo weinig info geeft dat er aan je hele verhaal geen touw meer vast te knopen is. Ik ga je topic dan ook sluiten want op deze manier heeft niemand er iets aan, en jij nog het minst van allemaal.

Lees asjeblieft alle adviezen nog eens goed door. Je bent nu hele rare dingen aan het doen en daarmee breng je de gegevens van je gebruikers in gevaar.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1

Dit topic is gesloten.