Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Przekazywanie danych przez GET a poufność
Azek
post 19.04.2018, 21:00:39
Post #1





Grupa: Zarejestrowani
Postów: 57
Pomógł: 3
Dołączył: 28.12.2011

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


Tworzę trochę bardziej rozbudowany projekt oparty na bazie danych. W skrócie wygląda to tak, że wyświetla się tabela z danymi i w każdym wierszu są przyciski: do zmian, do usunięcia.
Przykładowo mamy stronę z listą zamówień.
Problem jest następujący: jak przekazywać id zamówień między stronami? Można by użyć GET i mieć coś takiego:
| zamowienie1 | detale_zamowienia.php?id=1 | zmien_zamowienie.php?id=1 | usun_zamowienie.php?id=1 |
| zamowienie2 | detale_zamowienia.php?id=1 | zmien_zamowienie.php?id=2 | usun_zamowienie.php?id=2 |
Można też zrobić przez POST i ukryte pola z id. Pierwszy wariant jest wygodny, ponieważ można zapisać zakładkę bezpośrednio do zamówienia, ale mało bezpieczny, gdyż mogę podmienić numer i np. podejrzeć zamówienie, którego nie powinienem móc widzieć. Drugi wariant nie pozwala na zapisanie zakładki, ale jest trochę bezpieczniejszy, bo zmiana id wymaga już większej wiedzy i działań. Byłbym skłonny użyć GETa, jeśli istniałby sposób na przekazanie w linku danych, ale w jakimś stopniu zabezpieczonych przed zmianą.
Czy spotkaliście się z potrzeba "zaciemnienia" danych i jak to rozwiązaliście?
Go to the top of the page
+Quote Post
trueblue
post 19.04.2018, 21:05:38
Post #2





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


Skoro możesz podmienić wartość id i podejrzeć zamówienie, którego nie powinieneś podejrzeć, to znaczy, że masz dziurawy system.
Powinieneś sprawdzać uprawnienia użytkownika do danego zasobu.


--------------------
Go to the top of the page
+Quote Post
Azek
post 19.04.2018, 22:07:36
Post #3





Grupa: Zarejestrowani
Postów: 57
Pomógł: 3
Dołączył: 28.12.2011

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


Dlatego pytam w jaki sposób przekazywać te dane? Póki co, korzystam z POSTa i ukrytych pól. To oczywiste, że nigdy nie można ufać otrzymanym zmiennym, ale może jest jakiś sposób przesyłanie ich w GET?
Go to the top of the page
+Quote Post
markuz
post 19.04.2018, 23:06:25
Post #4





Grupa: Zarejestrowani
Postów: 1 240
Pomógł: 278
Dołączył: 11.03.2008

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


Jest coś takiego jak uprawnienia - jeżeli dana osoba nie powinna widzieć lub edytować jakiegoś zamówienia to po wejściu na np. produkt.php?id=5 powinna dostać informację, że nie ma dostępu do tego produktu, o tym pisał @trueblue wyżej i tak to powinieneś rozwiązać.

Możesz też robić zaciemnienia np. poprzez http://hashids.org/php/, ale to nie zabezpieczy systemu a tylko niepotrzebnie go skomplikuje.

Ten post edytował markuz 19.04.2018, 23:06:51


--------------------
Go to the top of the page
+Quote Post
PawelC
post 19.04.2018, 23:42:37
Post #5





Grupa: Zarejestrowani
Postów: 1 173
Pomógł: 121
Dołączył: 24.09.2007
Skąd: Toruń

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


1. Sprawdzaj czy ID to liczba i czy takie ID jest w bazie
2. Jeżeli masz tylko administratora, to przy pobieraniu do edycji sprawdzaj czy ma uprawnienia do tego, jak masz też użytkowników to sprawdzaj czy produkt od ID przesłanym metodą GET przypisany jest do danego użytkownika, wtedy unikniesz sytuacji, że ktoś będzie mógł edytować nie swoje produkty.
Go to the top of the page
+Quote Post
trueblue
post 20.04.2018, 06:15:02
Post #6





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


Cytat(Azek @ 19.04.2018, 23:07:36 ) *
Dlatego pytam w jaki sposób przekazywać te dane?

Tak samo jak robisz aktualnie.


--------------------
Go to the top of the page
+Quote Post
Pyton_000
post 20.04.2018, 08:18:01
Post #7





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


Uprawnienia przede wszystkim. Musisz sprawdzać czy ID należy do osoby która chce dany zasów otworzyć. Nie dotyczy Super Admina.

Dodatkowo zamiast liczbowych ID możesz używać względnie bardzo długiego hash ktry albo może być wiliczany na podstawie danych z wiersza BD ablo generowany ręcznie (ręcznie w sensie przez jakiś algorytm). Wtedy masz zarytą sekwencyjność ergo nie wiadomo ile tak na prawdę jest zamówień (co może znowu służyć jako wiedza czy sklep/cokolwiek ma duży czy mały ruch)
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: 20.04.2024 - 02:00