Czy wystarczy zabezpieczyć stronę statusu zamówienia tylko losowym adresem URL?

11

Po tym, jak klient (korporacyjny) kupił niektóre produkty w naszym sklepie internetowym, wysyłamy e-mail z opisem tego, co mu kupił.

Chcielibyśmy poinformować naszego klienta o otrzymanych płatnościach, śledzeniu pakietów itp. Rozwiązałbym to, przypisując każdemu zamówieniu losowy identyfikator i dodając link do każdej wiadomości. Link może wyglądać tak: http://shop.foo.bar/order/rwklvc46g9wt7kvy09f1

Czy podjąłbyś dodatkowe środki w celu ochrony danych? Lub wybrać zupełnie inne rozwiązanie?

Zalety:

  • brak aktualizacji statusu annyoing na pocztę (szczególnie w przypadku częstych aktualizacji)
  • pojedyncze źródło informacji (nigdy nieaktualne)
  • możliwe do udostępnienia (np. swojemu szefowi lub kolegom)

Niedogodności:

  • prywatne dane ujawnione na publicznie dostępnej stronie internetowej (np. numery telefonów, szczegóły płatności)
Dan Elpat
źródło
4
Cześć Dan, witamy w webmasterach. Wygląda na to, że utworzyłeś dwóch identycznych użytkowników (?) I zredagowałeś swoje pytanie przy pomocy drugiego „Dana” - z tego powodu jest w kolejce i oczekuje na zatwierdzenie. Użytkownik, który zadaje pytanie, może zawsze dowolnie edytować swoje pytania i komentować odpowiedzi itp. Drugi „Dan” nie ma wystarczającej reputacji, aby wykonać jedno z tych pytań - ponieważ nie zadał pytania.
MrWhite

Odpowiedzi:

8

Bez dodatkowego bezpieczeństwa, nie. Losowe adresy URL są cały czas indeksowane. Jest to jednak dobre w przypadku strony logowania do uwierzytelnienia użytkownika.

Pośrednim rozwiązaniem jest upewnienie się, że strona statusu nie zawiera danych osobowych, a jedynie informacje ogólne. Na przykład „PAID BY CC” zamiast „PAID by VISA 1234567891” i „Shipped” zamiast „Shiped to John Doe, 123 Blue Street” itp.

Itai
źródło
0

Myślę, że powinieneś bardziej chronić te dane. Jeśli chodzi o prostotę systemu, zdecydowanie zgadzam się, że publiczne adresy URL z losowym i niepowtarzalnym ciągiem są wystarczające i przydatne.

Jeśli jednak zostaną wyświetlone metody płatności (w tym informacje o karcie kredytowej), e-maile lub telefony, właśnie tam musisz chronić te dane. To zależy również od tego, jaką częścią świata jesteś, ale w większości z nich potrzeba ta dotyczy kwestii prawnych i ochrony danych użytkownika.

Większość witryn internetowych zajmujących się zakupami w tego typu sytuacjach to prośba o podanie poświadczeń (login / hasło) lub numer śledzenia z kodem śledzenia lub coś, co może mieć tylko użytkownik lub osoby nim zaufane.

Alfa
źródło
-1

Tak, wystarczy, jeśli:

  1. po prostu wysyłasz link e-mailem i nie przesyłasz go do Google. Ale zgodnie z Twoim pytaniem to właśnie robisz, więc Google nie może poznać linku do niego, dlatego nigdy nie będzie indeksowany / indeksowany.

  2. sprawia, że ​​identyfikator używany w łączu jest losowy i wystarczająco długi. Jeśli nie jest to przypadkowe, ale używasz prostej liczby całkowitej jako identyfikatora, jeden z twoich klientów może łatwo to zauważyć, wprowadzając proste liczby w linku, może odczytać wszystkie pozostałe zamówienia. Jeśli jest losowy, ale niewystarczająco długi (powiedzmy, że składa się tylko z 4 cyfr / liter), nawet przy pomocy domowego komputera łatwo byłoby zaatakować twoje rozkazy brutalną siłą, po prostu musiałbym spróbować (26 + 10) ^ 4 = 1 679 616 możliwych kombinacji. Załóżmy, że uruchamiam skrypt, który próbuje jednego linku na sekundę, zajmie mu to mniej niż 20 dni, aby brutalnie wymusić wszystkie możliwe linki i przeczytać wszystkie twoje zamówienia.

  3. WAŻNE: w celu zwiększenia bezpieczeństwa należy usunąć link po określonej liczbie dni (tj. Po 1 miesiącu). To jest sztuczka, aby zabezpieczyć go. W ten sposób nawet jeśli ktoś spróbuje brutalnie wymusić twoje linki, potrzebuje ogromnej mocy obliczeniowej, w przeciwnym razie jego atak nigdy nie będzie wystarczająco szybki, aby wypróbować wszystkie możliwe kombinacje, zanim zostaną usunięte. I nawet jeśli ma ogromną moc obliczeniową, nie byłby w stanie przetestować więcej niż jednego łącza na sekundę, ponieważ serwer, który obsługuje twoje zamówienia, może zacząć odmawiać połączenia, jeśli spróbuje połączyć się raz na sekundę. Do Twojej wiadomości: usunięcie linku nie oznacza, że ​​musisz usunąć całe zamówienie w DB. Możesz użyć innego klucza podstawowego do tabeli zamówień (prosty automatyczny przyrost) i możesz użyć pola UNIQUE (które pozwala na NULL) o nazwie link_id, który wpisujesz w linku. Po miesiącu wystarczy usunąć wartość link_id i ustawić NULL. W ten sposób zamówienie będzie nadal widoczne w tabeli i będzie widoczne z panelu administracyjnego, ale bezpośredni link nie będzie już ważny, aby bezpośrednio wyświetlić stronę zamówienia.

Marco Demaio
źródło