Mam kłótnię w miejscu pracy i staram się dowiedzieć, kto ma rację i co należy zrobić.
Kontekst: intranetowa aplikacja internetowa, której nasi klienci używają do księgowości i innych rzeczy ERP.
Uważam, że komunikat o błędzie wyświetlany użytkownikowi (gdy wystąpi awaria) powinien zawierać jak najwięcej informacji, w tym ślad stosu. Oczywiście musi zaczynać się od ładnego „Wystąpił błąd, prześlij poniższe informacje programistom” dużymi, przyjaznymi literami.
Moje rozumowanie jest takie, że zrzut ekranu aplikacji, która uległa awarii, często stanowi jedyne łatwo dostępne źródło informacji. Jasne, możesz spróbować złapać administratora systemu (-ów) klienta, spróbować wyjaśnić, gdzie znajdują się twoje pliki dziennika itp., Ale to prawdopodobnie będzie powolne i bolesne (głównie rozmowa z przedstawicielami klienta).
Ponadto posiadanie natychmiastowych i pełnych informacji jest niezwykle przydatne w programowaniu, w którym nie musisz szukać plików dziennika, aby znaleźć to, czego potrzebujesz przy każdym wyjątku. (Ale można to rozwiązać za pomocą przełącznika konfiguracji).
Niestety zdarzyło się coś w rodzaju „audytu bezpieczeństwa” (nie mam pojęcia, jak to zrobili bez źródeł… ale cokolwiek) i narzekali na pełne komunikaty wyjątków, podając je jako zagrożenie bezpieczeństwa. Oczywiście klienci (przynajmniej jeden, o którym wiem) przyjęli to na pierwszy rzut oka i teraz żądają wyczyszczenia wiadomości.
Nie widzę, w jaki sposób potencjalny atakujący mógłby użyć śladu stosu, aby dowiedzieć się czegoś, czego wcześniej nie mógł zrozumieć. Czy są jakieś przykłady, udokumentowane dowody na to, że ktoś to zrobił? Myślę, że powinniśmy walczyć z tym głupim pomysłem, ale może jestem tu głupcem, więc ...
Kto ma rację
źródło
Unfortunately there has been some kind of "Security audit"
” - Poważnie? Co to za postawa? Audyty bezpieczeństwa są dla Twojej korzyści - aby ulepszyć twoje systemy, znaleźć problemy, zanim zrobią to źli ludzie. Naprawdę powinieneś rozważyć próbę współpracy z nimi, a nie przeciwko nim. Możesz także spróbować uzyskać więcej informacji na temat zabezpieczeń PoV w Information Security .Odpowiedzi:
Staram się budować dziennik aplikacji, albo w DB, albo w pliku i zapisuję w nim wszystkie takie informacje. Następnie możesz nadać użytkownikowi numer błędu, który identyfikuje element dziennika, z którym związany jest błąd, abyś mógł go odzyskać. Ten wzorzec jest również przydatny, ponieważ można śledzić błędy, nawet jeśli użytkownicy nie zadają sobie trudu, aby je ze sobą zabrać, dzięki czemu można lepiej zrozumieć, gdzie są problemy.
Jeśli Twoja witryna jest zainstalowana w środowisku klienta i nie możesz do niej dotrzeć, możesz poprosić dział IT na miejscu, aby przesłał Ci fragment wyciągu na podstawie błędu nr.
Inną rzeczą, którą możesz wziąć pod uwagę, jest to, że systemowy e-mail zawiera szczegółowe informacje o błędach do skrzynki pocztowej, którą widzisz, abyś wiedział, kiedy coś idzie nie tak.
Zasadniczo posiadanie systemu, który przelewa się, gdy coś jest nie tak, nie budzi zaufania do użytkowników nietechnicznych - zwykle przeraża ich myślenie, że coś jest bardzo nie tak (np. Ile BSOD rozumiesz i jak to zrobić czujesz, kiedy się pojawia)?
Na stacktrace:
W .Net ślad stosu pokaże pełny ślad bezpośrednio w podstawowych zestawach MS, i ujawni szczegóły dotyczące używanych technologii i możliwych wersji. Daje to intruzom cenne informacje o możliwych słabościach, które można wykorzystać.
źródło
Tak, jest ich wiele.
Ślad stosu może ujawnić
... lista jest długa. Zasadniczo każda decyzja projektowa w dużej aplikacji może być istotna z punktu widzenia bezpieczeństwa i prawie wszystkie z nich mogą być przekazywane za pomocą nazw metod lub modułów. Pamiętaj, że nie oznacza to, że wyświetlanie śladu stosu nadal nie ma sensu, jeśli środowisko, do którego jest ono przekazywane, jest bezpieczne (np. Intranet zamiast strony internetowej), ale koszt bezpieczeństwa nie jest z pewnością równy zero .
źródło
Chodzi o to, że naszym zadaniem nie jest ułatwienie sobie. Naszym zadaniem jest ułatwienie użytkownikowi końcowemu. Dla nas ślad stosu wygląda jak niezwykle przydatna informacja dla programisty. Dla użytkownika wygląda to na kompletny bełkot, który nie jest w ogóle przydatny. Nawet jeśli powiesz im inaczej, nie internalizują tego. Jeśli uważasz, że trudno jest uzyskać te informacje od administratorów systemu, uzyskanie ich od użytkowników końcowych jest jeszcze gorsze.
Jeśli chodzi o bezpieczeństwo, możesz mieć rację, jeśli była to aplikacja komputerowa. W takim przypadku wydrukowanie śladu stosu nie zapewnia niczego, czego atakujący jeszcze nie wie. W aplikacji internetowej te informacje nie są już dostępne atakującemu. Rzeczywiście ujawniasz wewnętrzne szczegóły, które znacznie ułatwią atak .
Dlaczego nie ominąć obu źródeł obaw i automatycznie otrzymywać raporty o wyjątkach? W ten sposób nie musisz się już martwić, że ludzie nie zgłaszają błędów.
źródło
Spójrz na to pytanie IT Security SE . Krótko mówiąc, śledzenie stosu może dać atakującemu więcej informacji do pracy. Im więcej informacji ma atakujący, tym większe jest prawdopodobieństwo, że przeniknie on do twojego systemu. Nie oparłbym mojego bezpieczeństwa na fakcie, że ślady stosu są zawsze ukryte, ale nie oznacza to również, że powinieneś przekazać te informacje atakującym.
Mimo to możesz uzyskać większość korzyści z właściwego rejestrowania backendu. Jest to nieco mniej wygodne, ale prawdopodobnie nie warto ryzykować bezpieczeństwa systemu i denerwować klientów.
źródło
Możesz rozważyć niewyświetlanie śladu stosu z następujących powodów.
Bezpieczeństwo
Pokazanie śladu stosu ujawnia potencjalne powierzchnie ataku, które mogą być hakerami. Intranety nie są odporne na ataki hakerskie. Miałoby to zły wpływ na ciebie, gdyby Twoja sieć została zhakowana z powodu aplikacji, za którą jesteś odpowiedzialny
Doświadczenie użytkownika
Dla najlepszego wrażenia użytkownika ślad śledzenia to zbyt wiele informacji. Tak, właściwe informacje o stanie błędu powinny zostać zarejestrowane i zwrócone na nie uwagę inżyniera. Jednak zachęcanie użytkownika do robienia tego, co można zautomatyzować, nie będzie dla niego najlepsze.
Twoja reputacja
Za każdym razem, gdy na stronie wyświetla się ślad stosu, wygląda to źle. Większość ludzi nie ma pojęcia, co to jest, a to sprawia, że czują, że witryna nie jest dla nich przyjazna. Dla tych, którzy wiedzą, co to jest, może to wskazywać, że aplikacja nie została dobrze przemyślana. Wiele źle napisanych aplikacji wyświetla zbyt często ślady stosu, ponieważ jest to ustawienie domyślne w niektórych środowiskach, takich jak ASP.Net.
źródło
Krótka odpowiedź: w ekstranecie lub witrynie internetowej sensowne jest, aby nie pokazywać śladu stosu. W intranecie korzyści z pokazywania śledzenia stosu przewyższają jego ukrywanie.
Długa odpowiedź:
To samo przytrafiło mi się w pracy. Kiedyś myślałem, że jeśli aplikacja zawiedzie, powinna zawodzić głośno.
Ale potem wyjaśnili mi, że potencjalny haker może wywrzeć wpływ na wiele rzeczy z stacktrace.
Myślę, że nie ma potrzeby dowodu. Jest oczywiste, że im więcej haker wie o Twojej platformie, tym lepiej dla niego i że im mniej haker wie o Twojej platformie, tym lepiej dla Ciebie .
Również firmy nie chcą ujawniać, w jaki sposób haker włamał się do ich systemów.
Z drugiej strony jest to intranet i myślę, że korzyści wynikające z natychmiastowego dowiedzenia się, co poszło nie tak bez konieczności przeszukiwania pliku dziennika, ma ogromną zaletę, a ryzyko związane z bezpieczeństwem związane z wyświetlaniem śladu stosu w granicach firmy nie jest tak duże, jak oni mówią.
źródło
W każdym dostarczonym produkcie oczekiwana liczba tego rodzaju błędów powinna wynosić zero. Użyteczność tych informacji dla klienta wynosi zero. W obu przypadkach nie ma powodu, aby prezentować ślad stosu. Jeśli istnieje jakiś użyteczny kontekst, należy go przedstawić w sposób przyjazny dla klienta, a nie jako ślad stosu.
Z drugiej strony, jeśli faktyczna liczba wystąpień nie jest równa zeru, rozpaczliwie potrzebujesz tych informacji i nie powinieneś polegać na kliencie, który ci je wyśle. 99,99% czasu nie będą. Powinieneś zainstalować system usuwania błędów, który automatycznie wysyła informacje, z „ok” od klienta.
źródło