2015-05-29 16 views
6

Tôi đang cố gắng loại bỏ các kết quả dương tính giả khỏi việc quét HP Fortify của một ứng dụng Java.HP Fortify - chú thích các tham số của phương thức

Phương pháp này gây ra một "Bảo mật Vi phạm" vấn đề (PrintWriter là một phản ứng servlet)

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

Điều này là do Fortify sau quy ước đặt tên, để quyết định rằng passwordRules chứa dữ liệu cá nhân. Nhưng passwordRules của tôi không phải là dữ liệu riêng tư - nó chứa các nội dung như "Tối thiểu 8 ký tự".

Tôi có thể làm cho lỗi biến mất bằng cách thay đổi tên của biến. Tuy nhiên về nguyên tắc tôi không muốn thỏa hiệp khả năng đọc mã của tôi, vì lợi ích của một máy phân tích mã nguồn.

tôi mong đợi này để sửa chữa nó:

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

Tuy nhiên có vẻ như chú thích không được viết cho các bối cảnh đó:

The annotation @FortifyNotPassword is disallowed for this location. 

tôi đã cố gắng:

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

.. nhưng điều này không loại bỏ dương tính giả. (Và nó thỏa hiệp nguyên tắc của tôi không làm cho code ít dễ đọc hơn).

Tôi cũng đã thử ở trên với @FortifyNotPrivate, với cùng kết quả.

Vì vậy, cách thích hợp để làm điều này là gì?

+0

Rất tiếc! Đã bỏ lỡ đoạn đó. Xin lỗi. –

Trả lời

2

Tăng cường cung cấp cho bạn hai cách để giải quyết tình huống này: 1) ngăn chặn sự cố hoặc 2) ẩn sự cố. Mà bạn chọn phụ thuộc vào những gì bạn tin rằng sẽ làm việc tốt nhất cho bạn.

Sự cố bị loại bỏ. Bạn có thể đánh dấu một vấn đề là bị chặn nếu bạn chắc chắn rằng lỗ hổng cụ thể là không, và sẽ không bao giờ, một mối quan tâm. Bạn cũng có thể muốn ngăn chặn cảnh báo đối với các loại vấn đề cụ thể có thể không được ưu tiên cao hoặc quan tâm ngay lập tức. Ví dụ: bạn có thể chặn các sự cố được khắc phục hoặc các sự cố - trong trường hợp của bạn - bạn không định sửa chữa. Các vấn đề bị loại bỏ không được bao gồm trong tổng số nhóm được hiển thị trong bảng vấn đề. Cách tiếp cận này có thể là tốt nhất khi bạn muốn loại bỏ nhận thức của vấn đề hoàn toàn.

Sự cố ẩn. Bạn có thể ẩn tạm thời một nhóm các vấn đề để tránh mất tập trung khi bạn tập trung ở nơi khác. Ví dụ: bạn có thể ẩn tất cả các vấn đề ngoại trừ các vấn đề được chỉ định cho bạn. Các cá nhân được chỉ định giải quyết các vấn đề bạn đã ẩn trong chế độ xem của bạn vẫn có thể truy cập chúng. Tổng số nhóm được hiển thị trong bảng vấn đề bao gồm các vấn đề ẩn. Nếu bạn tìm thấy sự cố trong danh sách thư mục mà bạn muốn ẩn hoặc chuyển hướng đến một thư mục khác, bạn có thể tạo bộ lọc mới bằng trình hướng dẫn bộ lọc. Trình hướng dẫn bộ lọc hiển thị tất cả các thuộc tính với các điều kiện phù hợp cho bộ lọc. P 29 của tài liệu HP_Fortify_Audit_Workbench_User_Guide_4.30; tài liệu này là với các tệp chương trình Fortify của bạn. Cách thay thế này có thể thích hợp hơn nếu bạn muốn người khác nhận thức được các vấn đề, ngay cả khi bạn bỏ qua nó.

Sự cố đã xóa. Giải pháp thay thế này không liên quan đặc biệt đến hoàn cảnh của bạn, nhưng tôi trình bày nó vì mục đích hoàn chỉnh. Khi nhiều lần quét được chạy trên một dự án theo thời gian, các vấn đề thường được khắc phục hoặc trở nên lỗi thời.Vì nó kết hợp các kết quả quét, Trình phân tích mã tĩnh đánh dấu các vấn đề đã được phát hiện trong lần quét trước, nhưng không còn hiển nhiên trong các kết quả phân tích SCA gần đây nhất như Đã loại bỏ. Các vấn đề đã xóa không được bao gồm trong tổng số nhóm được hiển thị trong bảng điều khiển sự cố. Vì bạn không có ý định "khắc phục" vấn đề này, nó sẽ không trở thành "vấn đề đã bị xóa".

Để hiển thị hoặc ẩn các sự cố bị ẩn, bị ẩn và bị xóa, hãy sử dụng trình đơn Tùy chọn. Bộ lọc khả năng hiển thị hiển thị hoặc ẩn các sự cố.

+0

Cảm ơn, nhưng tôi đã biết cách ngăn chặn/ẩn các vấn đề theo cách thủ công. Câu hỏi này là đặc biệt về chú giải Java để các kết quả dương tính giả không chỉ bị nén, mà còn không tồn tại. Tăng cường báo cáo cho biết có bao nhiêu vấn đề bị chặn và cảnh báo rằng số lượng lớn các vấn đề này là đáng ngờ. – slim

+0

Ngăn chặn và ẩn là "giải pháp sách" theo Fortify. Cách sử dụng từ đồng nghĩa cho mật khẩu như "thông tin xác thực?" – WaltHouser

+0

Tôi không biết ý bạn là gì bởi "giải pháp sách". Chú thích là một kỹ thuật được hỗ trợ - xem 'Samples/advanced/java_annotations' trong thư mục Fortify. @FortifyNotPassword hoạt động cho các biến và trường cục bộ - Tôi chỉ muốn thực hiện tương tự với tham số phương thức. – slim

Các vấn đề liên quan