Przekazywanie danych przez GET a poufność |
Przekazywanie danych przez GET a poufność |
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? |
|
|
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. -------------------- |
|
|
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?
|
|
|
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 -------------------- |
|
|
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. |
|
|
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%) |
Dlatego pytam w jaki sposób przekazywać te dane? Tak samo jak robisz aktualnie. -------------------- |
|
|
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) |
|
|
Wersja Lo-Fi | Aktualny czas: 25.04.2024 - 07:38 |