Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Pytanie o właściwe zabezpieczanie skryptów i akcji wykonywanych między nimi
Forum PHP.pl > Forum > Przedszkole
sebap123
Witam,

Od jakiegoś czasu pisze sobie niedużą stronę, na której głównie korzystam z php (w wielu wymiarach, ale głównie to jest php). Czytałem trochę w internecie nt. zabezpieczania sktyptów przed ew. atakami. Cały czas staram się do nich stosować, jednak mam pewne pytanie, na które nie mogę znaleźć jednoznacznej odpowiedzi.

Załóżmy, że mam klasę mojaKlasa, a w niej metodę metodaMojejKlasy, która jest publiczna. Mam również skrypt skrypt.php w którym dołączam plik z klasą mojaKlasa i tworzę obiekt obiektMojaKlasa. Przykładowy kod może wyglądać tak:
  1. $obiektMojaKlasa = new mojaKlasa();
  2.  
  3. $dana1 = 'jakiś napis do metody';
  4. $dana2 = $_POST['poleTextFormularza']
  5. /*
  6. ja robię najczęsciej zamiast tak jak jest powyżej tak:
  7. $dana2 = htmlspecialchars($_POST['poleTextFormularza']);
  8. */
  9.  
  10. $obiektMojaKlasa -> metodaMojejKlasy($dana1,$dana2);

Teraz moje pytanie względen takiego przykładowego wywołania - w którym miejscu powinienem dodać htmlspecialchars - w powyższym skrypcie, czy w metodzie klasy. Może i tu i tu? Czemu ta ostatnia sugestia? No własnie to mnie najbardziej zastanawia - czy jeśli jakieś dane zostały przesłane już do skryptu skrypt.php to czy przed wywołaniem metody klasy, czyli tak jakby pomiędzy skryptem a klasą może ktoś te dane zmanipulować, czy jeśli dane w skrypcie przeszły poprawnie to mam gwarancję, że w metodzie pozostaną takie same?

Będę wdzięczny za odpowiedzi i podpowiedzi.
nospor
htmlspecialchars używa się z reguły przed wyświetleniem danych na ekran.
sebap123
no, przy dodawaniu, wyszukiwaniu w bazie to nie można tego też użyć, lub do pracy na tych danych - np. liczenia? Bo w sumie to zamienia znaki specjalne na kody ascii tak więc, chyba jest ok? Czy lepiej używać czegoś innego?

Ale nie o to głownie chodzi - czy dane przesłane ze skryptu do metody klasy mogą zostac zmienione gdzieś? Czy mam 100% pewności, że jeśli w wywołaniu był poprawne to w metodzie też takie są?
nospor
Cytat
no, przy dodawaniu, wyszukiwaniu w bazie to nie można tego też użyć,
Dotego używa sie mysql_escape_string() lub bindowania jeśli korzystasz np. z PDO. htmlspecialchars służy zypełnie innym celom.

Cytat
Ale nie o to głownie chodzi - czy dane przesłane ze skryptu do metody klasy mogą zostac zmienione gdzieś? Czy mam 100% pewności, że jeśli w wywołaniu był poprawne to w metodzie też takie są?
Nie za bardzo rozumiem. Dane mogą być ustawione w formularzu - i już.
sebap123
No to z tym htmlspecialchars to rozumiem już.

A co do drugiego, czyli pierwszego problemu - chodzi mi o coś co mniej więcej można tak przedstawić (pseudograficznie)

skrypt.php -> weryfikacja danych przekazanych do skryptu -> wywołanie metody ze zweryfikowanymi danymi -> (*) -> wykonanie się metody -> zwrócenie wyniku do skryptu

Chodzi o to, czy w tym miejscu z gwiazdką może ktoś np zmanipulować dane ( w sumie wtedy powinno być tak samo sprawdzenie poprawności przy zwrocie danych z metody), czy jest to rzecz niemożliwa i dane raz zweryfikowane na początku trafią tak samo poprawne do metody?

Może tak cos lepiej wyjaśniłem.

Czy ktoś może mi w tym temacie pomóc?
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.