Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Zabezpieczenie strony
flaa
post 27.04.2011, 18:18:03
Post #1





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 31.03.2009

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


Helo

(Proszę wybaczyć tak ogólną nazwę tematu, ale pytania dotyczą wielu sposobów zabezpieczeń, więc ciężko mi to było bardziej sprecyzować ;>)
Stworzyłem stronę i pracuję teraz nad zabezpieczeniami. Mam więc kilka pytań :)

1. Aby dostać się do panelu admina login musi mieć nazwę panelu (czyli do admin.php wejdzie tylko użytkownik z nickiem 'admin') oraz ustawiłem poprzez htaccess dostęp do panelu tylko z mojego ip. Czy te zabezpieczenia są wystarczające? Szczególnie te pierwsze, bo możliwe, że nie będę mieć wiecznie stałego ip ;)

2. Czy muszę zabezpieczać mój panel admina przed przeróżnymi sql injection itp? Skoro nikt poza mną nie powinien tam wejść, to chyba mogę pozostawić te wszystkie POSTY bez zabezpieczeń?

3. Pozamieniałem wszystkie 'GETY' w stronie na wartości liczbowe i sprawdzam czy pobrana wartość jest liczbą: $getutw = (int)$_GET['coś']. To wystarczające zabezpieczenie jeśli chodzi o GET?

4. Mam sporo formularzy na stronie (textarea i kilka pól tekstowych), które po wysłaniu idą bezpośrednio do bazy. Czytałem na necie o różnych funkcjach na zabezpieczenie tych formularzy, ale po prostu nie ogarniam tych wszystkich możliwości zabezpieczeń. Nie chcę, by poprzez formularz dało się dopisać jakiś kod do strony, ale jednocześnie chcę zostawić możliwość pisania cudzysłowów. Możecie zaproponować jakieś konkretne funkcje, które zapewnią mi ochronę, o której mówię?

5. By pozbyć się różnych wpisów w formularzu z języka html, wpisałem wstępnie funkcję obejmującą wszystkie POSTY: $_POST = array_map('strip_tags', $_POST). Nie znalazłem jednak informacji w jaki sposób dopuścić używanie 'enterów' bez potrzeby odwoływania się do każdego POSTa, ma ktoś jakieś pomysły?

pozdrawiam
flaa


--------------------
Interpretacje tekstów piosenek, ciekawostki muzyczne o wykonawcach i ich piosenkach, tłumaczenia tekstów - sprawdź http://songfacts.pl!
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
nexis
post 27.04.2011, 18:57:01
Post #2





Grupa: Zarejestrowani
Postów: 1 012
Pomógł: 109
Dołączył: 26.09.2003
Skąd: nexis.pl

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


Cytat(flaa @ 27.04.2011, 19:18:03 ) *
1. Aby dostać się do panelu admina login musi mieć nazwę panelu (czyli do admin.php wejdzie tylko użytkownik z nickiem 'admin') oraz ustawiłem poprzez htaccess dostęp do panelu tylko z mojego ip. Czy te zabezpieczenia są wystarczające? Szczególnie te pierwsze, bo możliwe, że nie będę mieć wiecznie stałego ip wink.gif

Pierwsza opcja (zgodność loginu z nazwą pliku) jest niewygodna, a nie daje dodatkowego zabezpieczenia. Stwórz lepiej jeden plik, w którym będziesz trzymał wszystkich uprawnionych użytkowników i ich hasła w formie skrótu (md5(), sha1(), hash()) lub odwoływał się z poziomu tego pliku do danych zapisanych w bazie danych.
  1. <?php
  2. $users = array(
  3. 'admin' => '8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918', // SHA-256
  4. 'user' => '04f8996da763b7a969b1028ee3007569eaf3a635486ddab211d512c85b9df8fb', // SHA-256
  5. );
  6. ?>

Następnie dodaj w każdym pliku twojego panelu walidację tych danych i ich zgodność z zapisaną sesją.

Cytat(flaa @ 27.04.2011, 19:18:03 ) *
2. Czy muszę zabezpieczać mój panel admina przed przeróżnymi sql injection itp? Skoro nikt poza mną nie powinien tam wejść, to chyba mogę pozostawić te wszystkie POSTY bez zabezpieczeń?

Skorzystaj z PDO, a nie będziesz się musiał nad tym zastanawiać. Lepiej nie wychodzić z założenia, że nikt nie wejdzie do twojego panelu, bo wystarczy chwila nieuwagi (np. niezabezpieczony plik PHP) i droga wolna dla intruza.
  1. <?php
  2. $sql = 'SELECT name, colour, calories
  3. FROM fruit
  4. WHERE calories < :calories AND colour = :colour';
  5. $sth = $dbh->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));
  6. $sth->execute(array(':calories' => 150, ':colour' => 'red'));
  7. $red = $sth->fetchAll();
  8. $sth->execute(array(':calories' => 175, ':colour' => 'yellow'));
  9. $yellow = $sth->fetchAll();
  10. ?>


Cytat(flaa @ 27.04.2011, 19:18:03 ) *
3. Pozamieniałem wszystkie 'GETY' w stronie na wartości liczbowe i sprawdzam czy pobrana wartość jest liczbą: $getutw = (int)$_GET['coś']. To wystarczające zabezpieczenie jeśli chodzi o GET?

Jeśli twoja aplikacja nie straciła na tym mocno na czytelności, to jest to stosunkowo dobre rozwiązanie przyjmowania parametrów, ale sprawdzanie wartości stricte względem predefiniowanych wartości nie jest gorszym rozwiązaniem.
  1. <?php
  2. $allowedParams = array('create', 'read', 'update', 'delete');
  3. if (isset($_GET['action']) && in_array($_GET['action'], $allowedParams, true)) {
  4. // OK
  5. }
  6. ?>


Cytat(flaa @ 27.04.2011, 19:18:03 ) *
4. Mam sporo formularzy na stronie (textarea i kilka pól tekstowych), które po wysłaniu idą bezpośrednio do bazy. Czytałem na necie o różnych funkcjach na zabezpieczenie tych formularzy, ale po prostu nie ogarniam tych wszystkich możliwości zabezpieczeń. Nie chcę, by poprzez formularz dało się dopisać jakiś kod do strony, ale jednocześnie chcę zostawić możliwość pisania cudzysłowów. Możecie zaproponować jakieś konkretne funkcje, które zapewnią mi ochronę, o której mówię?

Patrz punkt 2 dotyczący PDO.

Cytat(flaa @ 27.04.2011, 19:18:03 ) *
5. By pozbyć się różnych wpisów w formularzu z języka html, wpisałem wstępnie funkcję obejmującą wszystkie POSTY: $_POST = array_map('strip_tags', $_POST). Nie znalazłem jednak informacji w jaki sposób dopuścić używanie 'enterów' bez potrzeby odwoływania się do każdego POSTa, ma ktoś jakieś pomysły?

Patrz punkt 2 dotyczący PDO.


--------------------
Zend Certified Engineer

Kliknij POMÓGŁ jeśli moja odpowiedź okazała się użyteczna!
Go to the top of the page
+Quote Post
flaa
post 27.04.2011, 20:35:22
Post #3





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 31.03.2009

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


Dzięki za szybką i wyczerpującą odpowiedź ;)
W takim razie póki co poświęcę się lekturze na temat tego PDO, bo nigdy wcześniej o tym nie słyszałem ;>

Ten post edytował flaa 27.04.2011, 20:35:32


--------------------
Interpretacje tekstów piosenek, ciekawostki muzyczne o wykonawcach i ich piosenkach, tłumaczenia tekstów - sprawdź http://songfacts.pl!
Go to the top of the page
+Quote Post

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 - 01:13