Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Pytanie o właściwe zabezpieczanie skryptów i akcji wykonywanych między nimi
sebap123
post 20.11.2011, 18:16:25
Post #1





Grupa: Zarejestrowani
Postów: 253
Pomógł: 1
Dołączył: 26.08.2009
Skąd: Szczecin

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


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.
Go to the top of the page
+Quote Post
nospor
post 20.11.2011, 18:20:07
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




htmlspecialchars używa się z reguły przed wyświetleniem danych na ekran.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
sebap123
post 20.11.2011, 18:24:36
Post #3





Grupa: Zarejestrowani
Postów: 253
Pomógł: 1
Dołączył: 26.08.2009
Skąd: Szczecin

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


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ą?
Go to the top of the page
+Quote Post
nospor
post 20.11.2011, 18:28:13
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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ż.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
sebap123
post 21.11.2011, 09:07:30
Post #5





Grupa: Zarejestrowani
Postów: 253
Pomógł: 1
Dołączył: 26.08.2009
Skąd: Szczecin

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


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?
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: 5.07.2025 - 18:31