Witam, tworzę aplikację w której użytkownicy logują się do bazy danych sql i dla bezpieczeństwa zamiast korzystać z mysql connectora i umieszczać hasło w kodzie, logowanie zrobiłem poprzez php.
W programie
Dim request As HttpWebRequest = CType(WebRequest.Create("http://mojastrona.pl/login.php"), HttpWebRequest)
request.Proxy = Nothing
request.Method = "POST"
request.ContentType = "application/x-www-form-urlencoded"
Dim Post As String = ("username=" & username.Text & "&password=" & MD5_Encode(password.Text) & "&token=" & token & "&myhwid=" & myhwid)
...
W php
if(isset($_POST['username']) && isset($_POST['password']) && isset($_POST['token']) && isset($_POST['myhwid'])) {
$login = addslashes($_POST['username']);
$pass = addslashes($_POST['password']);
$token = addslashes($_POST['token']);
$myhwid = addslashes($_POST['myhwid']);
$data = $db->QueryFetchArray("SELECT id,login,banned,activate,premium,myhwid FROM `users` WHERE (`login`='".$login."' OR `email`='".$login."') AND `pass`='".$pass."'");
Jak widać do php przekazuję login ,hasło zahashowane MD5, token i hwid.
hwid - jest to unikalny kod generowany na podstawie informacji o komputerze i przy pierwszym logowaniu jest przypisany do użytkownika i od tej pory, może się on zalogować na to konto tylko z tego komputera.
token - jest tworzony przy pierwszym uruchomieniu aplikacji i przy logowaniu zostaje przypisany do konta, i przy każdym requescie - php zwraca nowy token który jest porównywany z tym w aplikacji, przy kolejnym requeście i jeśli jest inny to aplikacja przestaje działać.
Jeżeli login i hasło zgadza się wtedy form2 się otwiera.
Gdy form 2 się otwiera zostają pobranie informacje o użytkowniku na podstawie loginu zapisanego w settings i tokenu który został wygenerowany podczas poprawnego zalogowania..
Czy waszym zdaniem jest to dobre zabezpieczenie aplikacji przed zhakowaniem i nie powołaną ingerencją do bazy danych ?
Czy podczas otwierania form 2 również powinienem logować się hasłem czy tylko loginem i tokenem?