Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Optymalizacja i bezpieczeństwo zapytań
vegeta
post
Post #1





Grupa: Zarejestrowani
Postów: 122
Pomógł: 0
Dołączył: 9.11.2008

Ostrzeżenie: (10%)
X----


Można jakoś zoptymalizować te zapytania? Byłbym wdzięczny za podanie błędów, które mogą zaszkodzić bezpieczeństwu bazy.

  1. $zarejestrowani = "SELECT COUNT(id) FROM `users`";
  2. $zarej = mysql_fetch_array(mysql_query($zarejestrowani));
  3. $online = "SELECT COUNT(active) FROM `users` WHERE active='1' and last_action > ".(time() - 900)."";
  4. $active = mysql_fetch_array(mysql_query($online));
  5. $ostatni = "SELECT `login` FROM `users` ORDER BY `id` DESC LIMIT 1";
  6. $ost = mysql_fetch_array(mysql_query($ostatni));
  7. $mostactive = "SELECT `mostactive` FROM `inne` WHERE `id`='1'";
  8. $mostact = mysql_fetch_array(mysql_query($mostactive));


Wyniki wyświetlam później np.
Kod
Online: '.$active['COUNT(active)'].'<br />


Ten post edytował vegeta 2.12.2010, 00:38:47
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
mmica
post
Post #2





Grupa: Zarejestrowani
Postów: 60
Pomógł: 20
Dołączył: 30.11.2010
Skąd: 127.0.0.1

Ostrzeżenie: (10%)
X----


@fifi209: No nie trzeba od razu tak besztać. Po to istnieje to forum, aby rozmawiać i wyprowadzać z błędu. Kolega napisał:
Cytat
Byłbym wdzięczny za podanie błędów, które mogą zaszkodzić bezpieczeństwu bazy.
A ja odpowiedziałem co może mu się przytrafić i na co powinien uważać, tylko tyle.

A co do apostrofów: wyraziłem moją niepewność.

Cytat
Jaką różnicę zrobi wpisanie np. jako username
' and 1=1 /*
" and 1=1 /*

Dla mnie żadną

Tak, chyba trochę robi różnicę. Stringa trzeba zamknąć, a jeżeli wyescape'uje się ciąg podany jako argument zostaną wyescapowane wszystkie apostrofy, a zatem ciąg nie zostanie zamknięty i żaden OR ani nic podobnego nie zdziała, bo zostanie częścią stringa, prawda? Poza tym mowa była o int'ach i w tym przypadku bez podania apostrofów escapowanie nie pomogłoby. Chyba, że ja tutaj czegoś nie pojmuję.

Argument, który przemawia za PDO, to przenośność pomiędzy bazami danych. Możliwe, że w przyszłości będziemy musieli uruchomić ten skrypt na innym serwerze, na którym nie będzie MySQL tylko PostgreSQL i co wtedy? Będziemy przepisywać cały kod? Moim zdaniem lepiej pomyśleć o tym wcześniej niż później kląć pod nosem i rezerwować sobie godziny nerwów. Nie rozumiem też tego porównania do koparki. Za pomocą PDO wszystko miałoby zwięzłą i zrozumiałą formę. Mogłbym zrozumieć gdyby chodziło o jakąś zewnętrzną bibliotekę, którą trzeba dołączyć, ale PDO to standard..

Dzięki za ciekawy link! Muszę go później dokładniej przejrzeć.

Pozdrawiam,
mmica

Ten post edytował mmica 2.12.2010, 17:39:12
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 28.09.2025 - 03:08