Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [HTML][MySQL][PHP]Zabezpieczenie strony w PHP z bazą MySQL bez formularzy itp.
GrumpyDogue
post 25.02.2015, 10:43:26
Post #1





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 25.02.2015

Ostrzeżenie: (0%)
-----


Witam. Od pewnego czasu nurtuje mnie pewna kwestia. Jak mogę zabezpieczyć swoją stronę? Szukałem wszędzie informacji na ten temat, niestety wszędzie gdzie napisane jest coś o bezpieczeństwie, przykłady dotyczą strony z panelami administracyjnymi, formularzami kontaktowymi itd. Otóż moja strona jest dosyć specyficzna - to zwykła strona informacyjna, która nie zawiera żadnych formularzy itp. Użytkownik praktycznie nigdzie nie podaje wartości żadnej zmiennej. Czytałem sporo poradników na temat bezpieczeństwa i wydaje mi się, że wszystko jest dobrze, jednak bardzo przyda mi się także opinia ekspertów w tej sprawie, gdyż zawsze mogło mi coś umknąć. Byłbym wdzięczny za sprawdzenie czy wszystko jest w porządku w tych linijkach kodu:

  1. <?php
  2. foreach($_GET as $k=>$v)
  3. $_GET[$k] = (preg_match("/[0-9a-z_]+/",$v) ? stripslashes(htmlspecialchars(strip_tags($v))): '');
  4.  
  5. $dzial = $_GET['dzial'];
  6. $strona = $_GET['strona'];
  7.  
  8. $connection = mysql_connect('localhost', 'root', '')
  9. or die('Brak polaczenia z serwerem MySQL.');
  10. $db = mysql_select_db('baza', $connection)
  11. or die('Brak polaczenia z baza danych.');
  12.  
  13. mysql_query("SET NAMES utf8");
  14. ?>


Pliki includuję w ten sposób:
  1. <?php include ("folder/plik.php"); ?>


W ten sposób wczytuję treść do "głównego" diva (na początku kiedy nie ma żadnych zmiennych w pasku adresu, wczytują się newsy):
  1. <?php
  2. if(!empty($dzial))
  3. {
  4. if(is_file($dzial."/".$strona.".html"))
  5. {
  6. include ("include/naglowki.php");
  7. include($dzial."/".$strona.".html");
  8. }
  9. else echo "<p>Nie odnaleziono wybranej strony.</p>";
  10. }
  11. else include ("newsy/news.html");
  12. ?>


W pliku naglowki.php są zmienne, które wyglądają w ten sposób:
  1. <?php
  2. $naglowek1 = "<div style=\"width: 100%; background-image: url(tlo-ramki.jpg);\"><img src=\"tytul.jpg\" alt=\"img\" style=\"width: X%; height: Xpx;\">";
  3. ?>


Nagłówek jest wyświetlany w PLIKU HTML (czy to jest błąd, że plik jest w html i posiada kod php? I tak jest includowany do index.php, więc ma to jakieś znaczenie?) na samym początku w ten sposób:
  1. <?php echo $naglowek1; ?>


Tak wygląda odnośnik w menu*:
  1. <a href="index.php?dzial=gry/gra1&amp;strona=info">Gra 1</a>


Tak wygląda moje zapytanie do bazy MySQL wyciągające newsy:
  1. <?php
  2. $result = mysql_query("SELECT * FROM newsy LIMIT 3");
  3.  
  4. if(mysql_num_rows($result) > 0)
  5. {
  6. while($r = mysql_fetch_assoc($result))
  7. {
  8. echo "<div class='news'>";
  9. echo "<div class='tytul'>";
  10. echo "".$r['data'].": <i style=\"color: gold;\">".$r['tytul']."</i>";
  11. echo "<div class='autor'>Dodał: ".$r['autor']."</div>";
  12. echo "</div>";
  13. echo $r['zawartosc'];
  14. echo "</div>";
  15. }
  16. }
  17. ?>


Zapytanie wyciągające z bazy np. linki do najnowszych filmów z kanału YT:
  1. <?php
  2. $result = mysql_query("SELECT * FROM filmy ORDER BY ID DESC LIMIT 5")
  3. or die('Błąd zapytania');
  4.  
  5. if(mysql_num_rows($result) > 0)
  6. {
  7. while($r = mysql_fetch_assoc($result))
  8. {
  9. echo "<li><a style=\"margin-top: 5px;\" class=\"menu\" target=\"_blank\" href=\"".$r['link']."\">".$r['tytul']."</a></li>";
  10. }
  11. }
  12. ?>


Tak wygląda zawartość kolumny 'zawartosc' w tabeli z newsami w bazie MySQL (czy kod HTML nie jest zagrożeniem kiedy jest pobierany z bazy?):
  1. <img alt="img" src="sciezka/do/obrazka" style="width: x%; height: Xpx;">
  2. <p>Tresc newsa</p>


To jest na końcu pliku index.php
  1. <?php
  2. mysql_close($connection);
  3. ?>


* - odnośnik w menu - zastanawia mnie właśnie czy bezpiecznie jest kiedy w zmiennej znajdują się ukośniki: / (zmienna dział przyjmuje wartość z ukośnikiem: dzial=gry/gra1).

Czy zauważyliście w tym kodzie jakieś luki, które mogłyby umożliwić komuś atak? Będę wdzięczny za przeanalizowanie tych fragmentów kodu. Mam obsesję na tym punkcie, tj. chcę mieć pewność, że strona jest bezpieczna. Pozdrawiam!
Go to the top of the page
+Quote Post

Posty w temacie
- GrumpyDogue   [HTML][MySQL][PHP]Zabezpieczenie strony w PHP z bazą MySQL bez formularzy itp.   25.02.2015, 10:43:26
- - sadistic_son   Cytat(GrumpyDogue @ 25.02.2015, 10:43...   25.02.2015, 10:50:57
|- - GrumpyDogue   Cytat(sadistic_son @ 25.02.2015, 10:50...   25.02.2015, 11:46:33
- - Aqu   [PHP] pobierz, plaintext $dzial."/".$str...   25.02.2015, 12:03:16
|- - GrumpyDogue   Cytat(Aqu @ 25.02.2015, 12:03:16 ) [P...   25.02.2015, 12:21:45
- - Aqu   Czyli masz w kodzie: [PHP] pobierz, plaintext $dzi...   25.02.2015, 12:26:32
|- - GrumpyDogue   Cytat(Aqu @ 25.02.2015, 12:26:32 ) Cz...   25.02.2015, 12:37:58
- - Damonsson   GETa przepuszcza przez preg_match i usuwa co niebe...   25.02.2015, 13:07:40
|- - GrumpyDogue   Cytat(Damonsson @ 25.02.2015, 13:07:4...   25.02.2015, 13:14:43
- - Damonsson   Czekaj czekaj, mała poprawka, nie zostawiasz tam p...   25.02.2015, 13:25:04
|- - redeemer   Cytat(Damonsson @ 25.02.2015, 13:25:0...   25.02.2015, 13:40:10
|- - sadistic_son   Cytat(Damonsson @ 25.02.2015, 13:25:0...   25.02.2015, 13:46:48
- - GrumpyDogue   Dzięki! A dałoby się to jakoś krócej rozwiązać...   25.02.2015, 14:07:13
- - Aqu   Możesz po prostu sprawdzać za pomocą preg_match, c...   25.02.2015, 14:22:41
- - GrumpyDogue   Mógłbyś mi pokazać w jaki to sposób będzie wygląda...   25.02.2015, 14:27:07
- - sadistic_son   Cytat(GrumpyDogue @ 25.02.2015, 14:07...   25.02.2015, 14:49:43
- - GrumpyDogue   Dzięki! Więc tak zrobię z tym Switchem. I to p...   25.02.2015, 15:10:23
- - sadistic_son   Cytat(GrumpyDogue @ 25.02.2015, 15:10...   25.02.2015, 15:16:00
- - Aqu   CytatTo i tak nie zabezpieczy. Wystarczy, że ktoś ...   25.02.2015, 15:27:57
|- - sadistic_son   Cytat(Aqu @ 25.02.2015, 15:27:57 ) Ja...   25.02.2015, 15:33:07
- - Aqu   No dobra, ktoś może dorzucać mu pliki na serwer, w...   25.02.2015, 15:35:53
- - DraGo110   Polecam Bibliotekę PDO. zawiera ona m.i.n bindowan...   25.02.2015, 15:38:27
- - GrumpyDogue   Spoko, w wolnym czasie rzucę okiem na tę bibliotek...   25.02.2015, 19:04:06
- - DraGo110   oba rozwiązania są dobre gdyby nie to że w Case ni...   26.02.2015, 12:02:42
- - GrumpyDogue   Hmm no właśnie ten case nie do końca się spisuje. ...   26.02.2015, 12:31:19
- - sadistic_son   Nie wiem czy dobrze zrozumiałem jaki masz problem ...   4.03.2015, 11:02:13
- - Pyton_000   Jak widze taką sraj taśmę to aż mi się .... Proszę...   4.03.2015, 11:20:06
- - sadistic_son   Nie do końca, bo jeśli postac3 jest w gra1 i gra2 ...   4.03.2015, 11:26:28


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

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 10:09