2015-05-29 16 views
6

Próbuję wyeliminować fałszywe alarmy ze skanowania HP Fortify aplikacji Java.HP Fortify - parametry metody opisowej

Metoda ta powoduje „Naruszenie prywatności” problem (PrintWriter jest odpowiedzią servlet)

private void writeOutput(String passwordRules, PrintWriter out) { 
     ... 
     out.print(passwordRules); 
     ... 
} 

To dlatego Fortify następujące konwencje nazewnictwa, aby zdecydować, które passwordRules zawiera prywatne dane. Ale mój passwordRules nie jest prywatnymi danymi - zawiera rzeczy typu "Minimum 8 znaków".

Mogę sprawić, że błąd zniknie, zmieniając nazwę zmiennej. Zasadniczo jednak nie chcę zagrażać czytelności mojego kodu, z korzyścią dla analizatora kodu źródłowego.

Spodziewałem się tego, aby to naprawić:

private void writeOutput(@FortifyNotPassword String passwordRules, PrintWriter out) ... 

wydaje się jednak, że adnotacja nie jest napisane w tym kontekście:

The annotation @FortifyNotPassword is disallowed for this location. 

Próbowałem:

private void writeOutput(String passwordRules, PrintWriter out) { 
     ... 
     @FortifyNotPassword String rules = passwordRules; 
     out.print(rules); 
     ... 
} 

.. ale to nie usuwa fałszywego pozytywu. (I to narusza moją zasadę, że nie czyni kodu mniej czytelnym).

Próbowałem również powyższego z @FortifyNotPrivate, z tymi samymi wynikami.

Co jest właściwym sposobem na zrobienie tego?

+0

Ups! Nieodebrany ten akapit. Przeprosiny. –

Odpowiedz

2

Fortify oferuje dwa sposoby rozwiązania tej sytuacji: 1) Pomiń problem, lub 2) ukryj problem. Wybór zależy od tego, co Twoim zdaniem będzie najlepsze dla Ciebie.

Pomijane problemy. Możesz oznaczyć problem jako ukryty, jeśli masz pewność, że konkretna luka w zabezpieczeniach nie jest i nigdy nie będzie stanowić problemu. Możesz także wyłączyć ostrzeżenia dotyczące określonych typów problemów, które mogą nie mieć wysokiego priorytetu lub nie mieć bezpośredniego wpływu. Na przykład możesz ukryć problemy, które zostały naprawione lub problemy, które w twoim przypadku nie planujesz naprawić. Pominięte problemy nie są uwzględniane w sumie grup wyświetlanej w panelu problemów. Takie podejście może być najlepsze, gdy chcesz całkowicie wyeliminować świadomość problemu.

Ukryte problemy. Możesz ukryć grupę problemów tymczasowo, aby uniknąć rozproszenia, gdy będziesz koncentrować się gdzie indziej. Na przykład możesz ukryć wszystkie problemy poza tymi, które zostały Ci przypisane. Osoby, które zostały przypisane do problemów, które ukryłeś w swoim widoku, wciąż mają do nich dostęp. Sumy grup wyświetlane w panelu problemów zawierają ukryte problemy. Jeśli znajdziesz problem na liście folderów, którą chcesz ukryć lub przekierować do innego folderu, możesz utworzyć nowy filtr za pomocą kreatora filtra. Kreator filtra wyświetla wszystkie atrybuty z odpowiednimi warunkami dla filtra. P 29 dokumentu HP_Fortify_Audit_Workbench_User_Guide_4.30; ta dokumentacja jest zawarta w plikach programu Fortify. Ta alternatywa może być lepsza, jeśli chcesz, aby inni byli świadomi problemów, nawet gdy je ignorujesz.

Usunięto problemy. Ta alternatywa nie jest szczególnie ważna dla twojej sytuacji, ale przedstawiam ją dla zachowania kompletności. Ponieważ wiele projektów jest uruchamianych na przestrzeni czasu, problemy często są naprawiane lub stają się przestarzałe.Podczas scalania wyników skanowania program Static Code Analyzer zaznacza problemy, które zostały wykryte podczas poprzedniego skanowania, ale nie są już widoczne w najnowszych wynikach analizy SCA jako usuniętych. Usunięte problemy nie są uwzględniane w zbiorczych sumach wyświetlanych na panelu problemów. Ponieważ nie zamierzasz "naprawiać" tego problemu, nie stanie się on "usuniętym problemem".

Aby wyświetlić lub ukryć ukryte, ukryte i usunięte problemy, skorzystaj z menu opcji. Filtry widoczności pokazują lub ukrywają problemy.

+0

Dzięki, ale już wiem, jak ukrywać/ukrywać problemy ręcznie. To pytanie dotyczy właśnie adnotowania Javy, aby fałszywe alarmy nie były po prostu tłumione, ale nie istnieją. W raportach Fortyfikacji można wskazać, ile jest zahamowanych problemów, i ostrzec, że wiele z nich jest podejrzanych. – slim

+0

Ukrywanie i ukrywanie to "rozwiązania książkowe" według Fortify. Co powiesz na używanie synonimu hasła, np. "Referencje"? – WaltHouser

+0

Nie wiem, co masz na myśli przez "rozwiązanie książki". Adnotowanie jest obsługiwaną techniką - patrz 'Samples/advanced/java_annotations' w katalogu Fortify. @FortifyNotPassword działa dla zmiennych lokalnych i pól - po prostu chcę zrobić to samo z parametrem metody. – slim