Pytanie:
Jak bezpiecznie poprosić o hasło klienta jako firmy doradczej?
Wim Deblauwe
2016-06-23 16:45:55 UTC
view on stackexchange narkive permalink

W mojej pracy jako programista czasami potrzebuję kombinacji nazwy użytkownika i hasła od klienta, aby upewnić się, że ustawienia usług innych firm są poprawne do pracy z budowaną witryną / aplikacją. Na przykład. dostawca usług płatniczych, z którego korzystamy w witrynie gry.

Jaki byłby dobry sposób, aby poprosić o podanie nazwy użytkownika i hasła, aby były bezpieczne? Jeśli wyślę im e-mail, z pewnością wyślą mi z powrotem zwykłego e-maila z hasłem, ale to nie jest bezpieczne.

AKTUALIZACJA:

Widzę, że moje pytanie zostało trochę źle zrozumiane, więc dodam przykład:

Załóżmy, że jestem programistą w firmie CoolSoft. Inna firma (nazwijmy ją Games, Inc.) chce, abyśmy stworzyli dla nich witrynę internetową. Ta strona internetowa będzie korzystać z usług stron trzecich w zakresie płatności i obsługi klienta, z którymi musimy się zintegrować. Games, Inc. tworzy konta u dostawcy płatności i dostawcy obsługi klienta. Ale nie są one całkowicie techniczne i potrzebujemy ich poświadczeń, aby ustawić prawidłowe adresy URL wywołań zwrotnych itp. Jak mogą bezpiecznie przesłać nam swoje hasło, abyśmy mogli naprawić ustawienia ich kont (nigdy nie spotykamy się osobiście)? / p>

Czy kontakt z ludźmi jest wykluczony z równania?
Tak, zapomniałem o tym wspomnieć.
Chociaż odpowiedź Philipa wydaje się dobra, nie zawsze jest to możliwe rozwiązanie, więc możesz użyć zaszyfrowanej aplikacji typu end-to-end, takiej jak wspomniana oleksii.
Właśnie zauważyłem podobne pytanie: http://superuser.com/questions/21391/how-can-clients-easily-and-securely-send-me-passwords
znając wiarygodność klienta, co powstrzymuje go przed obwinianiem Cię za jakiekolwiek problemy, które pojawią się w dowolnym momencie w przyszłości?Naprawdę nie chcesz tych informacji
Współpracuję z zewnętrzną witryną, taką jak ta, w której absolutnie potrzebujesz tych poświadczeń do programowania.To, co robimy (ponieważ jest to dla nas zawsze początkowa praca typu programistycznego), polega na używaniu wyrzuconego hasła podczas programowania.Następnie w ramach przekazania produktu przeprowadzamy klienta przez przejęcie poświadczeń i ustawienie własnego prawdziwego hasła.Eliminuje to problemy, o których wszyscy wspominają, a które dotyczą obwiniania za przyszłe działania.
@NeilSmithline Uh, fakt, że zmienili hasło, gdy tylko OP skończył robić to, co robi, ponieważ przestrzegają rozsądnej polityki bezpieczeństwa jak rozsądni ludzie?
Sprawdź swoją witrynę pod kątem iniekcji SQL.Twój kod pachnie.
Powinieneś móc po prostu dodać hak administratora w swoim kodzie.Podobnie jak ukryty parametr „? Adminlogin = true”, a następnie wprowadź hasło administratora na koncie użytkownika.SQL może zamiast tego sprawdzić hasło administratora.
Przepraszam, twój przykład sprawia, że sprawy są dla mnie niejasne.Czy potrafisz sprecyzować koniec?Dlaczego miałbyś mieć poświadczenia?Dlaczego miałbyś „naprawiać ustawienia ich kont”?
Twój przykład jest zbyt abstrakcyjny.Czym zajmuje się firma Games?A czym zajmuje się witryna CoolSoft?
„Nigdy nie spotykamy się osobiście” Może powinieneś.Wydaje mi się, że w tej sztuce jest zbyt wielu aktorów.CoolSoft, Games, dostawca płatności, dostawca obsługi klienta: już 4 aktorów, to za dużo.Myślę, że to część twojego problemu.
Czy mogę otrzymać odpowiedź na moją sugestię „? Adminlogin = true”?
Zdumiewa mnie liczba osób wyrażających zdziwienie tym scenariuszem.Tak, w idealnym świecie każdy aktor byłby subskrybentem tej witryny i współpracowałby nad rozwiązaniem.Ale pytanie wydaje mi się całkowicie uzasadnione, ponieważ „biorąc pod uwagę niefortunną sytuację, nad którą nie mam pełnej kontroli, w jaki sposób zminimalizować ryzyko bezpieczeństwa”.
Aby uzyskać konkretny przykład, rozważ panel sterowania DNS.Są one całkowicie kłopotliwe dla użytkowników nietechnicznych, ale mogą wymagać wielokrotnego dostępu w ramach wdrożenia.W idealnym świecie dostawca DNS pozwoliłby tymczasowo delegować dostęp do drugiej nazwy użytkownika, ale w prawdziwym świecie będziesz musiał jakoś zalogować się do tego panelu sterowania.
Osiem odpowiedzi:
Philipp
2016-06-23 17:05:58 UTC
view on stackexchange narkive permalink

Nie masz.

Kiedy uczysz użytkowników podawania komuś swojej nazwy użytkownika i hasła, szkolisz ich, aby byli podatni na phishing lub inne ataki socjotechniczne.

Zamiast tego zaprojektuj system w taki sposób, aby administrator mógł przeglądać i edytować te ustawienia bez wymagania poświadczeń użytkowników.

Gdy jesteś w sytuacji, w której naprawdę potrzebujesz zobaczyć rzeczy z perspektywy użytkownika, aby rozwiązać problem, poproś go o wpisanie hasła, a następnie pozwól mu pokazać problem. Można to zrobić osobiście lub za pomocą narzędzia do zdalnej administracji.

Gdy znajdziesz się w sytuacji, w której klient ma poświadczenia potrzebne w Twojej aplikacji do integracji z rozwiązaniem innej firmy, opracuj aplikację w sposób, w jaki nietechniczny użytkownik ma łatwy w użyciu interfejs użytkownika do ustawiania tych poświadczeń. Będziesz tego potrzebować na wypadek, gdyby klient musiał je zmienić, a Ty jesteś niedostępny.

Użytkownik nie będzie musiał tego wpisywać, dopóki aplikacja nie zostanie wdrożona na jego własnych serwerach. Podczas programowania powinieneś używać konta testowego na swoim końcu, aby komunikować się z osobami trzecimi. Zdecydowanie nie chcesz generować żadnych kosztów dla swojego klienta, ponieważ przeprowadziłeś kilka testów na interfejsach płatności innych firm, które nie wyszły tak, jak oczekiwałeś.

... kiedy możliwe.Nawet w nowoczesnych środowiskach zawsze wydaje się, że istnieją konta systemowe, konta administratora dostawców lub inne dane uwierzytelniające, które w końcu są udostępniane.
Myślę, że moje pytanie nie było jasne.Dodałem przykład, który, mam nadzieję, wyjaśni to.
@WimDeblauwe Twoje pytanie było jasne, prawidłowa odpowiedź to nadal „Ty nie”.Jeśli chcesz go przetestować na swoim końcu, lepiej wykonaj kopię zapasową skrótu tam poświadczeń ... edytuj tam hasło / klucz API ... test ... a następnie przywróć tam poświadczenia.
@schroeder tylko dlatego, że zdarza się to cały czas, nie oznacza, że jest bezpieczny lub najlepsza praktyka.
Wydaje mi się, że najlepszym rozwiązaniem byłoby narzędzie do zdalnej administracji, które pozwoliłoby uniknąć konieczności udostępniania hasła.
@CaffeineAddiction Mówię, że nie zawsze jest to * możliwe * ...
@ben Remote admin nie pasuje do przykładu w pytaniu
@WimDeblauwe Zaktualizowałem odpowiedź.Mój wniosek się nie zmienia: nie potrzebujesz haseł użytkowników i nie chcesz ich.
@schroeder z pewnością tak, chyba że źle zrozumiem, co oznacza „zdalny administrator”.Wyobrażam sobie sesję zdalnego pulpitu, tak jak robi to nasz dział IT dla użytkowników w sieci firmowej, gdy potrzebują pomocy w konfiguracji.Użytkownik loguje się do wszystkiego, co wymaga dostępu, a pomoc techniczna prowadzi użytkownika przez konfigurację lub po prostu przejmuje kontrolę i robi to za niego.Następnie przez telefon pomoc techniczna może w razie potrzeby poprowadzić użytkownika przez wyłączenie lub odinstalowanie używanego zdalnego oprogramowania.
@ben przeczytał aktualizację Filipa do jego odpowiedzi dotyczącej integracji z zewnętrznymi rozwiązaniami
Jak czytam pytanie, chodzi o _zostanie administratorem_ dla firmy, która nie ma odpowiedniego własnego pracownika, jako kontrahent.Jeśli system ma konto firmowe i oddzielne konta użytkowników, którym można nadać uprawnienia do konta firmowego, to w porządku.Ale niektóre systemy mają tylko konta firmowe z poświadczeniami i nie ma sposobu, aby je przekazać.
@JanHudec: Odczytałbym twój sprzeciw jako „nie ma sposobu bez poniesienia nieracjonalnych kosztów”.Zawsze jest rozwiązanie.Jednak konieczność zdalnej instalacji oprogramowania przez obie strony, przeszkolenie personelu lub dodanie (pierwotnie nieplanowanego) komponentu zarządzania poświadczeniami do systemu może wpłynąć na budżet i / lub czas.W takich przypadkach organizacja świadoma bezpieczeństwa powinna przynajmniej być świadoma lepszych praktyk i być w stanie wyjaśnić sobie i klientowi, jakie kompromisy podejmuje i jak zminimalizować ryzyko.
@NeilSlater, jest tutaj _trzecia strona_.Pomyśl o Google Play - pozwalają teraz nadawać uprawnienia innym kontom, ale na początku tego nie robili.Więc wykonawca wynajęty do obsługi potrzebuje dostępu, a jeśli jest tylko jeden zestaw poświadczeń, cóż, wykonawca ich potrzebuje.„Nieracjonalny wydatek” to „całkowite zapomnienie o biznesie”.Nie ma też zasadniczej różnicy między kontrahentem a pracownikiem - ktoś musi mieć zaufanie firmy, aby mieć hasło główne.
To bardzo mówi o naszej branży bezpieczeństwa, że odpowiedź, która została najwyżej oceniona, nie jest rozwiązaniem i w rzeczywistości nie bierze pod uwagę wielu przypadków.OP nie pyta o najlepsze praktyki, prosi o sposób bezpiecznego przesyłania haseł.
schroeder
2016-06-23 17:02:49 UTC
view on stackexchange narkive permalink

Istnieje wiele „menedżerów haseł zespołu”, które umożliwiają zespołom udostępnianie, zmianę i unieważnianie dostępu do poświadczeń. Większość z nich jest płatna (lub bezpłatna dla małych zespołów), ale jest to prawdopodobnie najlepsza droga. Zwykle zapewniają szyfrowanie, a także kontrolę dostępu do określonych poświadczeń.

Jakieś przykłady, które możesz podać?
@WimDeblauwe, jeśli wygooglujesz „menedżera haseł zespołu”, masz wiele do wyboru
Przykładem jest LastPass Enterprise.https://lastpass.com/enterprise_overview.php
1Password ma również zespół działający w chmurze.https://1password.com/teams/
[CyberArk PIM] (http://www.cyberark.com/products/privileged-account-security-solution/enterprise-password-vault/) działa dobrze w przypadku większych organizacji.
HopelessN00b
2016-06-23 20:08:16 UTC
view on stackexchange narkive permalink

Jedyną realną opcją, jaką widzę (o której jeszcze nie wspomniano, dziwne) jest posiadanie kont konfiguracyjnych klienta z odpowiednimi uprawnieniami, których możesz używać w tych systemach / usługach internetowych. W ten sposób zajmują się relacjami z dostawcami i płatnościami, ale masz konta, które mają dostęp, którego potrzebujesz.

Zgodnie z odpowiedzią Phillipa, po prostu nie prosisz o nie ani nie bierzesz udziału w udostępnianiu haseł. Wszystko jest po prostu złe, ponieważ narażasz się na winę, jeśli coś pójdzie nie tak, gdy ktoś inny korzysta ze wspólnego konta. („ Wiem , że moi pracownicy nigdy by czegoś takiego nie zrobili, a tylko wy jesteście osobami, którym udostępniliśmy hasło, więc musi to być coś, co zrobił ktoś z wy ! ! ”)

doskonała odpowiedź, dodałbym również obawę, że umowy SLA zostałyby zmodyfikowane w przypadku wymiany haseł, nigdy nie pozwoliłbym nikomu mieć hasła bez zobowiązania prawnego.A korzyść z utraty danych uwierzytelniających do mniej uprzywilejowanego konta związanego z pracą nie byłaby tak szkodliwa, jak utrata oryginalnych danych (nie daj Boże, jeśli to się kiedykolwiek zdarzy).
Koncepcyjnie jest to dobry pomysł, ale nadal stawia klienta wymagania, które mogą być trudne do spełnienia.Nadal wymaga pewnej wiedzy technicznej po stronie klienta.
@Ijustpressbuttons konfigurowanie kont użytkowników na ogół nie jest procesem technicznym.Klient, który uzna to za uciążliwy wymóg, będzie koszmarem.
@HopelessN00b To na pewno zależy od systemu, w którym zakładają konta?Niektóre systemy po prostu nie będą miały możliwości tworzenia dodatkowych loginów lub delegowania dostępu;inne będą miały złożone systemy uprawnień, które wymagają nawigacji.Podobnie jak w przypadku wielu odpowiedzi tutaj, wydaje się, że zależy to od możliwości wpływania na protokoły bezpieczeństwa strony trzeciej w celu uniknięcia pytania.W najlepszym przypadku może znaleźć się na liście „wyczerp te możliwości, zanim przejdziesz dalej”.
@IMSoP Na świecie jest dużo bzdur, jasne, „chmura” / sieć / jakakolwiek usługa (usługa innej firmy, która integruje się ze stroną internetową), która jest trudna do skonfigurowania nowych użytkowników / kont, to szczególny rodzaj bzdur.To tak, jakby w tym samym czasie palić i pompować gaz.Tak, zwykle możesz znaleźć sposób, aby to zadziałało, ale * naprawdę * nie powinieneś tego robić.Jeśli twoi sprzedawcy są tacy źli, uciekaj.
@HopelessN00b Zdecydowanie się nie zgadzam.Domyślny model uprawnień dla większości systemów polega na tym, że rejestrujesz się w celu uzyskania konta, które „posiada” wszystko, co się na nim znajduje.Możliwość tworzenia kont podrzędnych lub delegowania dostępu do konfiguracji na inne konto jest dość rzadka.Gdybyś odrzucił każdy kontrakt, w którym ktoś wybrał mniej niż idealnego sprzedawcę, straciłbyś pracę.
Falco
2016-06-24 13:59:42 UTC
view on stackexchange narkive permalink

Podsumowuję sytuację następująco

  • potrzebujesz dostępu do usługi innej firmy z kontem swojego klienta
  • spotkanie osobiste nie jest łatwe
  • rozwiązanie wymagające instalacji oprogramowania przez klienta lub wykonanie złożonej procedury jest niepożądane

Myślę, że najlepszym rozwiązaniem byłoby: wyślij NIM nowe hasło

Ty wyślij im hasło w bezpieczny sposób i przekaż instrukcje (telefonicznie?), aby ustawić hasło do swoich kont jako tymczasowe dla proponowanego hasła. - Następnie możesz go użyć do zalogowania się na stronie. A kiedy skończysz, mogą zresetować swoje hasło do oryginalnej wartości.

Łatwym sposobem byłoby jednorazowe łącze w wiadomości e-mail, które prowadzi do strony wyświetlającej hasło. Klient może go kliknąć, skopiować hasło. Atakujący nie będzie mógł uzyskać dostępu do tego samego łącza do hasła. (Oczywiście ukierunkowany atak MitM ze zmianą zawartości wiadomości byłby nadal możliwy i mógłby zostać złagodzony poprzez podpisanie wiadomości)

Możesz również przekazać im tymczasowe hasło przez telefon, a oni je zapisują i zmieniają tymczasowo hasło do konta, któremu podasz.

Ta wsteczna metoda ma kilka zalet:

  • Twój klient może przestrzegać zasady „Nigdy nie udostępniaj swojego hasła”
  • Możesz wybrać bezpieczny sposób przekazywania hasła, nie musisz uczyć swojego klienta bezpiecznego sposobu.
  • Klient ma pełną kontrolę nad przyznawaniem i cofaniem dostępu.
HashHazard
2016-06-23 17:02:31 UTC
view on stackexchange narkive permalink

Istnieje dosłownie mnóstwo rozwiązań do bezpiecznego przesyłania danych (np. poświadczeń).

  • Jeśli klient obsługuje szyfrowanie PGP / GPG, możesz wymieniać klucze publiczne i szyfrować wiadomości e-mail
  • Istnieją również firmy specjalizujące się w SecureMail (ZixCorp) lub możesz kupić własne (Cisco Ironport).
  • Jeśli masz witrynę współpracy (np. portal klienta dla klienta), mogą oni przesłać poświadczenia do portalu. FYI Alfresco to darmowa aplikacja, która dobrze sobie z tym radzi.
  • Nawet jeśli nie ma mowy o kontakcie z człowiekiem, czy możesz pisać SMS-y? Być może mogą wysłać wiadomość tekstową z hasłem i podać nazwę użytkownika za pośrednictwem innego kanału.
  • Jeśli wszystko inne zawiedzie, sygnały dymne i poczta ślimakowa nadal istnieją, ale powyższe metody są najczęściej używanymi wektorami.
Tekst nie jest bezpieczny, chyba że robisz to za pomocą aplikacji takiej jak Signal
@rhymsy dokładnie dlaczego powiedziałem tylko wyślij hasło.Tekst z pomieszanymi znakami (i zwykle za pośrednictwem obrazka MMS zamiast rzeczywistych znaków) bez otaczającego kontekstu nie robi nic dobrego przechwytywaczowi.
@rhymsy - To jest niejasne.Czy możemy wysyłać SMS-y za pośrednictwem aplikacji Signal?
@Hollowproc - Jeśli przechwytujący chce przechwycić hasło, wówczas tekst bezsensownych znaków jest doskonale zrozumiały dla przechwytywacza.W przypadku haseł wolę regułę ** „Nigdy tego nie zapisuj” ** i polecam raczej telefon.Możemy nawet popadać w paranoję i podzielić komunikację na kilka rozmów telefonicznych.Z / do różnych telefonów, od / do różnych osób…
@NicolasBarbulesco, jak powiedział OP, telefon nie jest opcją w tym scenariuszu.Rozwiązanie „Signal” oznacza również, że ufasz stronie trzeciej treścią wiadomości SMS / MMS, którą „szyfruje”;prosta wiadomość tekstowa bez kontekstu powinna wystarczyć, ponieważ przechwycenie ich jest trudniejsze niż mogłoby się wydawać i wymaga dodatkowych fragmentów i już istniejącego poziomu kompromisu, który prawdopodobnie sprawiłby, że uzyskanie hasła w inny sposób byłoby trywialne.Wprawdzie nic nie jest idealne, ale to wyliczone ryzyko.W tym przypadku ryzyko jest obecne, ale niskie, IMHO.
@Hollowproc - Dlaczego telefon nie miałby być opcją?To byłoby dziwne.
@NicolasBarbulesco pokonuje FOM, ale tak powiedział OP w komentarzach pod pytaniem: Czy kontakt z ludźmi jest wykluczony z równania?- MadWard 23 czerwca o 11:49 Tak, zapomniałem o tym wspomnieć.- Wim Deblauwe 23 czerwca o 11:50
@Hollowproc - Co to jest FOM?
Wypierdalaj mnie .. LOL
@Hollowproc - rozumiałem ten „kontakt międzyludzki” jako spotkanie międzyludzkie.Telefon jest bardzo powszechny w biznesie firmy.Jeśli naprawdę nie można użyć telefonu, jest to problem, który należy rozwiązać lub uniknąć, uciekając z tego koszmarnego projektu.
@NicolasBarbulesco, Mam również własne opinie na temat otaczających szczegółów pytania (więc +1), ale starałem się zachować neutralność i wskazałem na zadane pytanie.
Bill
2016-06-23 20:19:16 UTC
view on stackexchange narkive permalink

Nie komplikuj, ale używaj tylko dwóch form komunikacji. Na przykład w wiadomości e-mail z prośbą o podanie danych uwierzytelniających poproś ich o odpowiedź, podając tylko nazwę użytkownika, a następnie wpisz tymczasowe hasło na Twój numer. Jak najszybciej po uzyskaniu poświadczeń zmień tymczasowe hasło na inne.

Tak, teoretycznie ktoś mógłby zobaczyć e-mail i zhakować SS7, aby uzyskać hasło, ale jeśli może to zrobić, zanim będziesz mógł zmienić hasło tymczasowe, i tak zostaniesz przekierowany.

Nie rozumiem twojego ostatniego akapitu.Może powinieneś to przepisać.Co to jest SS7?
@NicolasBarbulesco: google first hit = https://en.wikipedia.org/wiki/Signalling_System_No._7 to niezbyt bezpieczny protokół używany w systemach telefonicznych, w tym w systemach komórkowych / mobilnych obsługujących wiadomości tekstowe.Dlatego włamuj się do SS7 (systemy), aby uzyskać tekst (zawierający hasło).
sidewaiise
2016-06-25 06:54:59 UTC
view on stackexchange narkive permalink

Nie powinieneś na sztywno wpisywać wywołań zwrotnych, aby odpowiadać na określone nazwy użytkownika / hasła. Jeśli masz do czynienia z narzędziami innych firm, powinieneś skonfigurować dla nich te konta i wchodzić z nimi w interakcję za pośrednictwem tokenów API. Znacznie lepiej, jeśli utworzysz konto i na koniec przypiszesz klientowi wszelkie poświadczenia konta.

Celem OP nie jest nigdzie przechowywanie nazwy użytkownika i hasła;zamierzają zalogować się osobiście, aby skonfigurować szczegóły techniczne w panelu sterowania innej firmy w ramach wdrażania aplikacji.Konfigurowanie nowych kont nie zawsze jest opcją, ponieważ mogą to być istniejące konta płatne, które wymagają dołączenia nowych funkcji.
bortzmeyer
2016-06-27 00:18:22 UTC
view on stackexchange narkive permalink

Dziwne, że nikt nie wspomniał o OAuth, który na pierwszy rzut oka jest idealnym rozwiązaniem problemu, jak sformułowano inaczej po aktualizacji.

OAuth to rozwiązanie, które musiałoby zostać wdrożone przez zewnętrznego dostawcę systemu;OP nie szuka dostępu do systemu, który sam zaprojektował.


To pytanie i odpowiedź zostało automatycznie przetłumaczone z języka angielskiego.Oryginalna treść jest dostępna na stackexchange, za co dziękujemy za licencję cc by-sa 3.0, w ramach której jest rozpowszechniana.
Loading...