intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Sửa các khiếm khuyết

Chia sẻ: Nguyen Nhi | Ngày: | Loại File: PDF | Số trang:46

52
lượt xem
5
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Vì bạn đã quét ứng dụng của bạn và tìm ra các khiếm khuyết, nên bây giờ là lúc xử lý các vấn đề sử dụng Rational AppScan. Đề nghị sửa chữa Vậy nên bây giờ bạn thực sự hiểu một vấn đề XSS là gì, và tại sao nó lại là một vấn đề phải được loại bỏ. Đây là lúc học cách sửa chữa nó. Nhấn tab Fix Recommendation được trình bày trong Hình 26.

Chủ đề:
Lưu

Nội dung Text: Sửa các khiếm khuyết

  1. Sửa các khiếm khuyết Vì bạn đã quét ứng dụng của bạn và tìm ra các khiếm khuyết, nên bây giờ là lúc xử lý các vấn đề sử dụng Rational AppScan. Đề nghị sửa chữa Vậy nên bây giờ bạn thực sự hiểu một vấn đề XSS là gì, và tại sao nó lại là một vấn đề phải được loại bỏ. Đây là lúc học cách sửa chữa nó. Nhấn tab Fix Recommendation được trình bày trong Hình 26. Hình 26. Sửa chữa Rational AppScan giải thích theo cách thân thiện với người phát triển cách thức sửa chữa vấn đề trong ứng dụng Web.
  2. Rational AppScan thậm chì còn cung cấp các dòng ví dụ mã trình Java có khả năng ngăn chặn vấn đề (xem Hình 27). Rational AppScan thực sự khiến cho việc sửa lỗi được phát hiện giống như trò chơi trẻ con, thậm chí là cho hầu hết các nhà phát triển còn "xanh". Hình 27. Cố định mã được phép của Rational AppScan Request/Response (Yêu cầu/Trả lời) "Request/Response" cung cấp thông tin về lần kiểm tra thực tế mà Rational AppScan đã tiến hành dựa vào ứng dụng Web của bạn. Rational AppScan hoạt động bằng cách trước tiên gửi một yêu cầu bình thường, và sau đó mới gửi lại yêu cầu như thế lần nữa, nhưng nó được thay đổi bằng kiểm tra khiếm khuyết. Nếu bạn nhìn vào Hình 28, hình thể hiện "Kiểm tra" mở, phần văn bản đánh dấu màu đỏ là phần kiểm tra thực tế (còn gọi lạ một biến thể) mà Rational AppScan đã đốt
  3. tại ứng dụng Web của bạn. Điều này cho phép bạn xem chi tiết kiểm tra cụ thể . Hãy chú ý đến cách cửa sổ mã trình thể hiện kiểm tra và màu đỏ thể hiện cái đã bị thay đổi, cho phép bạn chọn nút đánh dấu AB để phóng đại đến phần trả lời nơi đã tìm thấy chữ ký chứng thực kết quả. Bạn có thể sử dụng thông tin này để thực hiện lại cuộc tấn công một cách thủ công hoặc thực hiện các kiểm tra c ùng loại của riêng bạn và sau đó lưu chúng trong Rational AppScan. Thậm chí bạn có thể trình bày kết quả kiểm tra trong một trình duyệt Web. Hình 28. Request/Response (Yêu cầu/Trả lời) Biến thể là sự thay đổi không đáng kể yêu cầu kiểm tra gốc mà Rational AppScan đã gửi cho máy chủ ứng dụng Web của bạn. Nếu bạn nghi ngờ về tính hợp lệ của các kết quả kiểm tra được Rational AppScan treo cờ, bạn có thể báo cáo vị trí sai cho đội hỗ trợ IBM Rational AppScan. Quá
  4. trình này đỏi hỏi Rational AppScan gửi thư điện tử chi tiết kiểm tra cho IBM để phân tích, nhưng đừng lo các chi tiết được gửi đi được mã hóa mặc định. Sửa các vấn đề cụ thể Rational AppScan cho bạn biết là có một khiếm khuyết Cross-Site Scripting (XSS) trong http://192.168.0.4:9080/wealth/realestate.jsp, có ngh ĩa là nhập trường address (địa chỉ) có thể sử dụng để đưa tập lệnh () vào và do đó cho phép một tấn công tập lệnh cross-site diễn ra. Kiểu tấn công này có thể khiến kẻ tấn công ăn cắp hoặc chế tác một phiên Web của người dùng đã được chứng thực. Khi bạn nhìn vào các kết quả Rational AppScan tổng thể của bạn, rõ ràng là nó có các vấn đề XSS tương tự trong city, create, state, value, zip, vì tất cả những thứ này đều gắn cờ như là bị "Stored Cross-Site-Scripting" tấn công. Kiểm tra thẻ Fix Recommendation (gợi ý sửa). Rational AppScan cho biết cách sửa các vấn đề này bằng cách lọc ra các ký tự không hợp lệ, chẳng hạn như "&" ";" "
  5. if(request.getMethod().equals("POST")){ Pattern input = Pattern.compile("[a- zA-Z0-9]*"); Matcher m = input.matcher(userid); boolean match = m.matches(); Hãy nhìn khiếm khuyết thứ hai của bạn trên danh sách, Rational AppScan cho bạn biết http://192.168.0.4:9080/wealth/ và http://192.168.0.4:9080/wealth/login.jsp có thể bị Session Fixation làm hại. Rational AppScan nói cho bạn biết rằng phiên Web của người dùng có thể bị lấy cắp hoặc chế tác do ứng dụng Web của bạn đang cho phép các ID phiên được tạo bởi trình duyệt Web của người dùng của bạn. Rational AppScan giải thích sửa chữa: Bạn cần chắc chắn là Ứng dụng Web của bạn không chấp nhận các phiên do các trình duyệt người dùng tạo ra. Do vậy bạn cần vô hiệu hóa phiên hiện tại của người dùng và tạo ra một ID phiên bất kỳ mới sau khi người dùng vừa được chứng thực. Để làm được điều này bạn cần thêm mã trong Ví dụ 2 cho login.jsp, cài mà vô hiệu hóa phiên Web hiện tại và cho phép ứng dụng Web của bạn tạo một phiên mới. Ví dụ 2. Vô hiệu hóa phiên Web hiện tại
  6. session.invalidate(); session = request.getSession(true); session.setAttribute("userid", userid); Và trên logout.jsp, bạn cần loại bỏ phiên: session.setAttribute("userid", null);. Vấn đề thứ ba trong danh sách của bạn là khiếm khuyết bảo mật ứng dụng Web cổ điển khác: SQL Injection. SQL Injection cho phép kẻ tấn công chế tác c ơ sở dữ liệu phụ trợ bằng cách cho phép các lệnh SQL được thực hiện trong các trường nhập ứng dụng Web của bạn. Rational AppScan cho bạn biết tr ường zip bị ảnh hưởng. Mặt khác, như với XSS, Rational AppScan lại giải thích hợp lệ trường theo cách sửa chữa khiếm khuyết này. Điều đó sửa các vấn đề mức độ cao. Tiếp đến bạn nhìn thấy có vài vấn đề mức độ trung bình liên quan đến Database Error Pattern Found. Database Error Pattern có nghĩa là một kiểm tra được trả lại có lỗi cơ sở dữ liệu. Một nguyên nhân có thể đúng đối với lỗi này là thiếu sự làm nhẹ bớt đầu vào người dùng, tức là ứng dụng của bạn có thể bị SQL Injection hoặc XSS tấn công. Hãy kiểm tra khuyến nghị. Bạn cần chắc chắn là bạn hoàn toàn giảm bớt đầu vào
  7. người dùng trong mã của bạn, mà cần ngăn chặn lỗi cơ sở dữ liệu này và khiếm khuyết có thể có trong lần quét tiếp theo. Tiếp theo có hai vấn đề mức độ thấp trong danh sách của bạn, cả hai đều l à Session Identifier Not Updated. Rational AppScan cho bạn biết là có thể lấy cắp hoặc chế tác các phiên người dùng hoặc cookies. Mặt khác, giống như vấn đề Session Fixation, bạn cần ứng dụng Web của bạn tạo ID phiên của người dùng. Hãy nhìn xuống phía dưới danh sách vấn đề của bạn, bạn nhìn thấy ba vấn đề mức độ thông tin, tức là các vấn đề này không phải là khiếm khuyết ứng dụng Web thực tế, nhưng có thể là một vấn đề có thể có và mối đe dọa, theo đúng nghĩa trong đó các nhận xét có thể đọc được vừa được Rational AppScan phát hiện ra trong các tệp .jsp. Rational AppScan cảnh báo bạn rằng các nhận xét n ày có thể chứa thông tin nhạy cảm mà bạn không muốn mọi người hay tin tặc đọc được. Tác giả kinh điển mà tôi đã tình cờ gặp trong đời thực khi kiểm tra các ứng dụng Web trong trường, là các nhà phát triển để lại cửa sổ sau tên người dùng quản trị và mật khẩu trong trường nhận xét, nhằm hỗ trợ người kiểm tra. Vì thế bạn cần kiểm tra các nhận xét này hoặc tốt hơn nên gỡ bỏ hết các nhận xét ra khỏi mã trình của bạn. Hãy nhớ là mã trình của bạn là đối diện cộng đồng, vì thế biện pháp bảo mật tối ưu là gỡ các nhận xét ra khỏi mã trình, nhờ đó loại bỏ khả năng lộ thông tin về ứng dụng Web cho tin tặc. Bằng cách nhấn Remediation tasks bên trái, bạn có thể lọc trên danh sách các sửa chữa được yêu cầu (xem Hình 29).
  8. Hình 29. Remediation tasks (Tác vụ Khắc phục) Cuối cùng cần kiểm tra Application Data (Dữ liệu Ứng dụng), mà cho bạn biết mọi thứ rằng Rational AppScan đã khôi phục ứng dụng Web của bạn, vì thế bạn sẽ nhìn thấy sơ đồ cây thư mục và tất cả WebPages Rational AppScan được khám phá trong suốt quá trình. Cần phải luôn luôn kiểm tra hai lần để đảm bảo là Rational AppScan đã phát hiện chuẩn xác tất cả các tệp Ứng dụng Web. Trước khi bạn tiến hành các thay đổi cho mã trình của mình, hãy nhìn qua các báo cáo Rational AppScanreports, vì quy trình tự nhiên là tạo ra một báo cáo bảo mật, mà sau đó được cung cấp cho người phát triển có nhiệm vụ sửa lỗi. Báo cáo bảo mật Rational AppScan
  9. Bạn có một danh sách các vấn đề mà bạn cần người phát triển của bạn sửa chữa. Bạn cần cung cấp cho họ các kết quả và các sửa chữa được khuyến nghị trong một định dạng báo cáo đẹp. 1. Khi quét của bạn vẫn mở trong Rational AppScan, hãy chọn Tools > Report (xem Hình 30). Hình 30. Bắt đầu thủ thuật Báo cáo 2. Khi báo cáo bạn tìm thấy nhiều báo cáo Rational AppScan được tải trước được lọc dưới một vài tựa đề chủ đề. Vì bạn muốn tạo ra một báo cáo nội bộ để giúp các nhà phát triển giải quyết vấn đề, hãy gắn với báo cáo mặc định. Loại Security Report. 3. Chọn Developer từ lựa chọn các mẫu. 4. Hoàn tất các lựa chọn báo cáo như trong Hình 31. Hãy lưu ý là ứng dụng Web đã được mã hóa trong Java không phải .NET hay PHP, vì thế hãy loại hai cái đó ra khỏi báo cáo, vì bạn không cần biết cách sửa chữa các vấn đề trong các ngôn ngữ đó.
  10. Hình 31. Tạo một báo cáo 5. Nhấn Layout (xem Hình 32), cho phép bạn tùy chỉnh hình thức báo cáo nếu bạn muốn thêm logo công ty hoặc bất kỳ cái gì đặc trưng trong các trang báo cáo xếp cạnh nhau. Một lời khuyên khi làm thực tế là hãy thêm Company Confidential vào cuối trang. Bạn thực sự nên xem các các báo cáo này như là thông tin có độ nhạy cảm cao trong tổ chức của bạn.
  11. Hình 32. Báo cáo có chuông và còi 6. Chọn Save và đặt tên cho báo cáo của bạn (xem Hình33)
  12. Hình 33. Lưu và đặt tên cho báo cáo của bạn Báo cáo của bạn được lưu ở dạng tệp tin PDF. Vậy là báo cáo của bạn đã sẵn sàng để cung cấp cho người phát triển rồi, trong trường hợp của bài viết này chính là bạn đó! Vì thế bạn cần chạy qua các kết quả báo cáo và chỉnh sửa mã trình ứng dụng Web Java của mình. Sửa mã trình Java Đến lúc này bạn cần hiểu rõ cái gì cần sửa chữa và làm như thế nào, vậy nên đây là lúc phải sửa các khiếm khuyết bảo mật trong phạm vi mã trình.
  13. Mở Rational Application Developer và thực hiện các thay đổi được in đậm dưới đây (xem Ví dụ 3), hoặc bạn có thể cắt và dán hết cả đoạn để tiết kiệm thời gian. Ví dụ 3. login.jsp được cập nhật với Phiên ban đầu mới trên Máy chủ Web và Kiểm tra Hiệu lực
  14. login Login
  15. boolean matchu = false; boolean matchp = false; if(userid != null && !userid.equals("") && password != null && !password.equals("")){ Pattern input = Pattern.compile("[a -zA-Z0-9]*"); Matcher m = input.matcher(userid); matchu = m.matches(); input = Pattern.compile("[a-zA-Z0-9]*"); m = input.matcher(password); matchp = m.matches(); } if(matchu && matchp && (userid != null && !userid.equals("")) &&
  16. (password != null && !password.equals("")) && userid.length()
  17. out.println("Error logging in."); } } else out.println("Error logging in."); } %> userid: Password: Lưu ý là các nhận xét HTML đã được chuyển thành nhận xét JSP. Tại đây bạn cũng thực hiện các thay đổi như đã nói ở trên, gồm cả hiệu lực đầu vào, trường hợp mà nếu tên người dùng và mật khẩu không phải là kiểu chữ số, thì chúng bị từ
  18. chối và không bao giờ thực hiện cho các so sánh SQL hay Java String. Hãy lưu ý là bạn cũng cần chắc chắn là yêu cầu POST đã được đưa ra, và rằng nút Login có tên "login" được đánh giá đúng như "login" trong yêu cầu POST. Sửa chữa trong Ví dụ 4 bảo đảm người dùng nào cũng có thể đăng xuất khỏi ứng dụng Wealth của bạn khi cần. Ví dụ 4. logout.jsp được cập nhật. Làm đứt phiên logout
  19. Thay vì thay đổi nhận xét từ HTML sang JSP, phiên bị làm đứt một cách hợp lý sao cho người dùng thực sự đăng xuất hoàn toàn. Trong Ví dụ 5 bạn thay đổi mã trình để ngăn các cuộc tấn công tiêm nhiễm SQL không xuất hiện trong ứng dụng của bạn. Ví dụ 5. realestate.jsp được cập nhật
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2