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)
Odpowiedzi:
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.
źródło
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.
źródło
Tak, wystarczy, jeśli:
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.
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.
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.
źródło