NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
Avatar
Petr Klekner
Člen
Avatar
Petr Klekner:11.9.2017 1:24

Zdravím kontroluji připojení do mého programu pomocí jednoduchého kódu:

MySqlConnection con = new MySqlConnection();
con.ConnectionString = "server=127.0.0.1; userid=root; password=; database=robot_mother";
con.Open();
String checkLogQuery = "SELECT * FROM user where name='admin' AND password='1234'";
MySqlCommand logCheck = new MySqlCommand(checkLogQuery, con);
Console.WriteLine(logCheck.ExecuteNonQuery());

Neřešte že dotaz je jednoduchý a nešifrovaný je to pro ukázku. :) V databázi mi tento dotaz normálně funguje. A fungovalo mi to i v programu ale pak jsem musel něco změnit nebo nevim co se stalo a metoda ExecuteNonQuery() mi vrací stále -1 ikdyž uživatel v databazi je i když není. Všem moc děkuji za pomoc.

Editováno 11.9.2017 1:25
 
Odpovědět
11.9.2017 1:24
Avatar
Neaktivní uživatel:11.9.2017 7:34

Ahoj,
ExecuteNonQuery vracia pocet zmenenych riadkov, napr. u insert, update, delete, atp. V tvojom pripade by si mal pouzit ExecuteReader pre nacitanie vysledku.

M.

Nahoru Odpovědět
11.9.2017 7:34
Neaktivní uživatelský účet
Avatar
termostat
Člen
Avatar
Odpovídá na Petr Klekner
termostat:11.9.2017 11:44

V tomhle případě by ti možná stačilo změnit na

Console.WriteLine(logCheck.ExecuteScalar());
Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
11.9.2017 11:44
Avatar
Odpovídá na Petr Klekner
Marian Benčat:11.9.2017 12:10

Pak nám dej odkaz na web, ať víme kam se nepřihlašovat.

Nahoru Odpovědět
11.9.2017 12:10
Totalitní admini..
Avatar
Petr Klekner
Člen
Avatar
Odpovídá na termostat
Petr Klekner:11.9.2017 12:39

Jo díky moc. :) Jsem blbej mělo mi to dojít... Jinak reader funguje taky ale je to složitější... A jinak je to localhost Mariane :D

 
Nahoru Odpovědět
11.9.2017 12:39
Avatar
Ondřej Štorc
Tvůrce
Avatar
Odpovídá na Petr Klekner
Ondřej Štorc:11.9.2017 14:17

A to je důvod to dělat nezabezpecene? Není lepší to napsat jednou poradně a pak to používat třeba i v jiných projektech?

Nahoru Odpovědět
11.9.2017 14:17
Život je příliš krátký na to, abychom bezpečně odebírali USB z počítače..
Avatar
Odpovídá na Petr Klekner
Marian Benčat:11.9.2017 15:06

Pointa mého příspěvku je ta, že celou dobu mluvíš o "šifrování", ale tak nějak tuším, že tam při první příležitosti narveš SQL injection.

Nahoru Odpovědět
11.9.2017 15:06
Totalitní admini..
Avatar
Petr Klekner
Člen
Avatar
Odpovídá na Ondřej Štorc
Petr Klekner:11.9.2017 19:35

Napsal jsem to co nejjednodušeji, aby byl hned jasný problém... Já to nechápu napíšu to tam i že je to kvůli tomu aby to bylo přehledný a ty mi napíšeš proč to nedělat hned... Jinak finálně to vypadá takto

string hash = String.Empty;
            byte[] crypto = new SHA256Managed().ComputeHash(Encoding.ASCII.GetBytes(password), 0, Encoding.ASCII.GetByteCount(password));
            foreach (byte theByte in crypto)
            {
                hash += theByte.ToString("x2");
            }
            String checkLogQuery = "SELECT * FROM user where name=@name AND password=@password";
            MySqlCommand logCheck = new MySqlCommand(checkLogQuery, con);
            logCheck.Parameters.AddWithValue("@name", name);
            logCheck.Parameters.AddWithValue("@password", hash);
            object idRow = logCheck.ExecuteScalar();

Nevím proč bych tam měl rvát SQL injection když je to localhost :D

 
Nahoru Odpovědět
11.9.2017 19:35
Avatar
Odpovídá na Petr Klekner
Marian Benčat:12.9.2017 10:31

Ještě jeden tip. Sha256 sama o sobě je hodně slabá pro uložení hesla. Používáš C#, tak použij PasswordHasher co je v Identity frameworku v3.

https://github.com/…ordHasher.cs

je i ve standardním plném .NETu.

Nahoru Odpovědět
12.9.2017 10:31
Totalitní admini..
Avatar
Petr Klekner
Člen
Avatar
Odpovídá na Marian Benčat
Petr Klekner:14.9.2017 11:32

Díky za radu. Určitě to změním :)

 
Nahoru Odpovědět
14.9.2017 11:32
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 10.