Połączenie z bazą danych po wykradnięciu danych logowania do niej

0

Witam ! Mam 3 pytania.

1. Czy jeśli ktoś zdobyłby ten login i hasło to może się zalogować do bazy czy przez to że jest ustawiony localhost to nie może ?

Tak wygląda mój kod który łączy mnie z bazą danych:

<?php
$db_name = "e-shop";
$mysql_username = "Adrian";
$mysql_password = "acfW6So8JB3n8Y5A";
$server_name = "localhost";

$conn = mysqli_connect($server_name, $mysql_username, $mysql_password, $db_name);

?>

2. I czy w poniższym kodzie, kiedy chciałby uzyskać odpowiednie ID to może je pobrać ( i później użyć do pobrania informacji o innych użytkownikach ) ?

<?php 
require "connect.php";
$user_name = $_POST["user_name"];
$user_pass = $_POST["user_pass"];

$mysql_qry = "SELECT `Haslo` FROM `dane_logowania` WHERE `Login` = '$user_name'";
$result = mysqli_query($conn ,$mysql_qry);


$data = $result->fetch_array();
if(password_verify($user_pass, $data['Haslo']))
{
     $qry = "SELECT `ID` FROM `dane_logowania` WHERE `Login` = '$user_name'";
     $res = mysqli_query($conn, $qry);
     $data1 = $res->fetch_array();
     echo json_encode($data1);

}
else
{
   echo ("ERROR");
}


?>

Wiem, że ten skrypt nie jest zabezpieczony przed SQL injection. (3. I czy jak zabezpieczę przed SQL injection to nie będzie takiego problemu ? )

Przepraszam za takie banalne pytania, ale od niedawna zacząłem tworzyć bazy danych i aplikacje korzystające z nich i zastanawiam się nad bezpieczeństwem tego. ( to nie jest jakiś ważny projekt tylko taki sprawdzian co umiem i jak uniknąć błędów związanych z bezpieczeństwem danych rozwiązań )

2

Ad1:
Wszstko zależy od tego co masz ustawione w bazie danych. W skrypcie tylko wskazujesz adres do którego się łączysz. Może tu być localhost ale też IP/DNS serwera gdzieś indziej. W bazie masz możliwość ustawienia, żeby autentykacja użytkownika o loginie Adrian mogła nastąpić tylko z komputera o jakimś IP, czy np. localhost i tam zablokować możliwość łączenia z innych IP.
Ad2. Nie do końca rozumiem pytanie. Wszystko zależy czy i jako kodujesz to hasło itd.

0

2. Moje hasło jest hashowane. A nie może być tak że osoba co ma dostęp do serwera utworzy sama zapytanie i pobierze dane z niego ?
**
1**. A jak to ustawić ? Aplikacje są na różnych telefonach, ale łączą się tylko za pomocą skryptów PHP które są na serwerze WWW ( baza i serwer są na tym samym urządzeniu ). Czy wystarczy tylko jak zostawię localhost w ustawieniach konta ?

0

I jeszcze jedno pytanie. Próbowałem dziś zamiast bazy SQL z XAMPP-a zrobić z tego linku: https://dev.mysql.com/downloads/windows/installer/8.0.html
Okazało się że port 3306 którego instalator domyślnie chciał użyć był zajęty przez XAMPP-a więc użyłem 3307 i w skrypcie odpowiedzialnym za połączenie ustawiłem host jako

$server_name = "localhost:3307"

Wyskoczył błąd:

The server requested authentication method unknown to the client [caching_sha2_password]

To ja coś źle zrobiłem czy trzeba inny skrypt użyć aby się połączyć ?

1

Jeśli ktoś będzie miał dostęp do serwera to będzie mogła zrobić to na co pozwalają ustawienia zdobytego konta.
Kwestia błędu - wygląda na to że 8 wersja ma domyślnie hasowanie:
https://dev.mysql.com/doc/refman/8.0/en/native-pluggable-authentication.html
No i tutorial jak stworzyć konto:
https://dev.mysql.com/doc/refman/8.0/en/adding-users.html

0

Ale w skrypcie do połączenia nie ma hashowania

1 użytkowników online, w tym zalogowanych: 0, gości: 1