Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PDO] Filtrowanie danych do połączenia z bazą
Forum PHP.pl > Forum > PHP
Inscure
Witam,

Kod
$dsn = "mysql:host=$db_host;dbname=$db_name;port=$db_port;charset=$charset";
$pdo = new Data($dsn, $db_user, $db_pass);


Zmienne pochodzą z formularza i zakładamy że nie są filtrowane. Czy stanowi to zagrożenie dla bazy danych?
Stripowanie hasła odpada bo może mieć znaki specjalne. Natomiast zmuszanie do podawania w CMS-ie hasła alfanumerycznego to też niezbyt dobry pomysł.
Crozin
1. Host, port oraz nazwa bazy danych mają dosyć dokładne formaty, które możesz sprawdzić.
2. Kodowanie znaków... przewidujesz możliwość skorzystania z czegoś innego, niż któryś z UTF-ów?
3. Popsucie czegoś przy pomocy użytkownika bądź hasła w tym wypadku będzie możliwe wyłącznie w przypadku jakiegoś wewnętrznego błędu w PDO - raczej jest to bezpieczne.
Inscure
Piotrbaz - nie o tym mowa. Doczytaj w ogóle do czego jest to co podałeś smile.gif

Charset jest narzucony z góry, czyli nie ma problemu. Zostaje reszta. Co do przewidywania wartości to chciałbym tego uniknąć bo jest na prawdę mnóstwo hostingów i niektóre mają dziwactwa których nie sposób znać. Wydaje mi się, że tutaj nie ma możliwości połączenia się z bazą nie znając prawidłowych danych wykorzystując niefiltrowanie zmiennych. Dlatego chyba pójdę za Twoją radą i zostawię je bez stripowania. Ciekawy jednak jestem, jak zostało to zrobione w Drupalu czy jakim FW z instalatorem?
Crozin
1.
Cytat
Ciekawy jednak jestem, jak zostało to zrobione w Drupalu czy jakim FW z instalatorem?
Przecież możesz pobrać ten projekt i podejrzeć jego rozwiązanie.
2. Jeżeli to ma być jakiś uniwersalny instalator miej na uwadze, że połączenie może odbywać się nie tylko na podstawie hostu i portu, ale również socketu (http://php.net/manual/en/ref.pdo-mysql.connection.php).
3. Jeżeli wspierasz bazy inne niż MySQL pamiętaj o tym, że każdy sterownik ma własne właściwości w DSN-ie.

PS. To nie ma najmniejszego związku z OOP.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.