Jak mogę uniemożliwić programistom przechwytywanie danych wprowadzonych przez użytkowników?

10

Tworzę aplikację internetową z silnym naciskiem na bezpieczeństwo. Jakie środki można podjąć, aby zapobiec przechwytywaniu przez użytkowników wartości, które powinny być dobrze chronione, takich jak hasła, numery ubezpieczenia społecznego itd., Którzy pracują nad aplikacją (programiści, DBA, pracownicy odpowiedzialni za zapewnienie jakości)?

Peter Smith
źródło
3
Sugeruję, abyś zamieścił pytanie w: security.stackexchange.com/?as=1
NoChance
„Zapobiegaj” to bardzo mocne słowo. Nie możesz powstrzymać złych aktorów przed robieniem złych rzeczy. Co można zrobić, to nauczyć i stosować podstawowe zasady bezpieczeństwa, takie jak „najmniejszych uprawnień”, „podział obowiązków” i „ukryte zaprzeczyć” rzeczy architekt w bezpiecznych sposobów, i zatrudnić ludzi, że można zaufać. Mieć wykonalne plany, aby złagodzić szkody, gdy w końcu nastąpi nieuniknione.
Robert Harvey
Warunki techniczne dotyczące potrzebnych technologii: mieszania i szyfrowania.
Robert Harvey

Odpowiedzi:

22

To jest dość proste. Banki robią to cały czas.

Zaangażowane są trzy grupy osób. To są grupy bezpieczeństwa. Z odrębnymi uprawnieniami.

Programiści nie mogą przypisywać autoryzacji zabezpieczeń i nie mogą zobaczyć danych produkcyjnych.

Operatorzy nie mogą przypisywać autoryzacji bezpieczeństwa i nie mogą tworzyć oprogramowania.

Pracownicy ochrony, którzy ustawiają uprawnienia i nie mogą ani tworzyć oprogramowania, ani obsługiwać oprogramowania.

Programiści tworzą oprogramowanie. Operatorzy instalują go i obsługują. Pracownicy ochrony zapewniają, że obie grupy są rozdzielone.

S.Lott
źródło
8
OK, ale programista nadal może dodać do systemu coś, co wyśle ​​e-mailem dane produkcyjne na jego prywatne konto; lub zapisuje dane produkcyjne na jakimś serwerze, na którym je odbierze. Myślę, że jedynym sposobem na obejście tego jest rygorystyczny system sprawdzania kodu.
Dawood ibn Kareem
3
Zawsze jest taki poziom zaufania, który jest przyznawany pracownikom. Ktoś musi mieć klucze do pałacu, a jeśli nie możesz ufać, że rozumie moc, która została im dana, to może nie powinniśmy dawać tych kluczy tej osobie.
Chris
1
Tak, ale posiadanie kluczy, które wymagają więcej niż jednej osoby (jak reżim recenzji kodu) oznacza, że ​​potrzebujesz dwóch, aby „zbłądzić”, zanim zostaniesz narażony na szwank, i jest to mniej prawdopodobne niż „tylko jeden” pracownik, który zbłądzi i nadużyje klucza przekazanego im. Wszystko polega na zrównoważeniu zaufania i konsekwencjach nadużycia tego zaufania. I nie zapominaj, że ludzie i okoliczności się zmieniają. Osoba godna zaufania po wręczeniu kluczy może mieć w życiu rzeczy, przez które staje się mniej godna zaufania ...
Marjan Venema
1
@EmmadKareem: Poprawnie. Pracownik ochrony ustawia i resetuje grupy i hasła, ale nie widzi danych. Tylko operatorzy mogą zobaczyć rzeczywiste dane. Pomyśl o danych, takich jak rzeczywiste pieniądze obsługiwane przez prawdziwych kasjerów. Programiści nie dotykają pieniędzy; tylko kasjerzy do. Podobnie ludzie ochrony nie dotykają pieniędzy; tylko kasjerzy dotykają pieniędzy.
S.Lott
1
@EmmadKareem: DBA nie są programistami. Istnieją dwie grupy: bezpieczeństwo i dane. Dane DBA są specjalną częścią „operacji”. Powinny one nie mają upoważnienia do bezpieczeństwa wymiany; nie mogą pisać kodu; zobaczą jednak dane i muszą być traktowani jak operatorzy, a nie programiści.
S.Lott,
2

Programiści nie mają dostępu do serwerów produkcyjnych. Ale ktoś musi mieć dostęp. Nie da się tego obejść. I zawsze istnieje szansa, że ​​ktoś oszaleje i nadużyje swojego dostępu.

Dane, które są mieszane / solone, są teoretycznie bezpieczne nawet od osób, które mają pełny dostęp do ich przeglądania. Ale większość danych nie nadaje się do mieszania.

Lord Tydus
źródło