Tạo các ứng dụng bảo mật Java một cách hiệu quả, Phần 2

Tối đa hóa bảo mật trong ứng dụng Web Java với Rational AppScan

Đây là phần thứ hai trong loạt bài hướng dẫn gồm hai phần viết về việc tạo các ứng dụng Web bảo mật dựa trên Java® sử dụng Rational® Application Developer, Data Studio và Rational AppScan. Trong Phần 1 bạn đã phát triển một ứng dụng Web Java với Rational Application Developer, và sau đó mới triển khai ứng dụng trên WebSphere Application Server với Java Server Pages (JSP). Bài hướng dẫn này chỉ cho bạn biết cách quét ứng dụng Wealth được tạo ra trong Phần 1 có sử dụng Rational AppScan để tìm và sửa tất cả khiếm khuyết bảo mật Web đã biết. Bài viết này cũng chỉ cách quét lại ứng dụng của bạn và tạo ra các báo cáo.

David Whitelegg, Tác giả, Freelance Writer

Author photoDavid Whitelegg là Chuyên gia Hệ thống Bảo mật Thông tin CISSP tại Vương Quốc Anh và là Chuyên gia Bảo mật Cisco (CCSP), và đã làm việc trong ngành Bảo mật Thông tin được 15 năm. David tích cực tham gia bảo mật các Ứng dụng Web hiện trạng cao, bao gồm các giải pháp thanh toán và thương mại điện tử khối lượng lớn, đảm bảo tính tuân thủ đầy đủ theo Chuẩn Bảo mật Dữ liệu trong Lĩnh vực Thẻ Thanh toán (PCI DSS) Cấp 1



28 08 2009

Trước khi bắt đầu

Bài hướng dẫn này chủ yếu dành cho các nhà phát triển ứng dụng Web, các nhà kiểm tra ứng dụng Web, các đội bảo đảm chất lượng, các chuyên gia bảo mật thông tin và bất kỳ ai mong muốn các ứng dụng Web của mình không mắc các khiếm khuyết bảo mật đã biết. Bài viết này sẽ trình bày cách làm thế nào để đạt được mục tiêu này có sử dụng IBM Rational AppScan.

Về loạt bài này

Loạt bài gồm hai phần này có mục đích là nhằm mở rộng các kỹ năng phát triển ứng dụng Web của bạn thông qua việc sử dụng Rational Application Developer, Data Studio và Rational AppScan.

  • Phần 1 sử dụng các khả năng IDE của Rational Application Developer và các tính năng pureQuery của Data Studio để tạo ra một ứng dụng Web quản lý tài sản dựa trên Java một cách hiệu quả.
  • Trong Phần 2, bạn sẽ tận dụng rất nhiều tính năng Rational AppScan có sẵn để củng cố, hoặc bảo mật, ứng dụng Java bằng cách tìm ra các khiếm khuyết và sửa chúng sao cho bạn có thể tự tin triển khai ứng dụng Web của bạn.

Về bài hướng dẫn này

Bài hướng dẫn này sẽ chỉ cho bạn cách cài đặt, cấu hình và sử dụng Rational AppScan để quét ứng dụng Wealth Java Web đã được tạo ra trong Phần 1(Xem Tài nguyên). Bạn sẽ sử dụng các lần quét Rational AppScan để bảo đảm là ứng dụng Web của bạn không có các khiếm khuyết bảo mật Web. Theo đó bạn sẽ học được cách làm thể nào để đạt được nhiều nhất ngoài Rational AppScan, bao gồm:

  • Chiến lược triển khai
  • Tùy chỉnh một mẫu quét
  • Tiến hành quét
  • Phiên dịch và học hỏi từ các kết quả quét
  • Tạo ra các báo cáo quét
  • Sử dụng các mở rộng Rational AppScan

Bài hướng dẫn này mở đầu bằng một đoạn khái quát về bảo mật ứng dụng Web. Đoạn khái quát này giải thích tầm quan trọng của việc sử dụng Rational AppScan, để bảo đảm sẽ loại bỏ các khiếm khuyết bảo mật Web trong quá trình phát triển ứng dụng của ứng dụng Web đối diện công cộng. Cũng có một đoạn khái quát về việc triển khai Rational AppScan và các xem xét cấp quyền nhằm giúp bạn gặt hái được nhiều nhất ngoài việc sử dụng Rational AppScan.

Các yêu cầu về hệ thống

Để hoàn thành các bước trong bài hướng dẫn này, bạn cần có:

  • Một bản IBM Rational AppScan Standard Edition (Ấn phẩm Tiêu Chuẩn Rational AppScan của IBM). Một cấp quyền Rational AppSca đầy đủ hoặc tạm thời. Phiên bản dùng thử tải xuống được của Rational AppScan chỉ cho phép quét một địa chỉ Web mặc định. Bạn có thể xin giấy phép sử dụng Rational AppScan ngắn hạn tạm thời từ đầu mối liên lạc IBM Rational Sales của bạn.
  • Một chiếc máy tính xách tay có khả năng kết nối mạng với máy chủ/máy trạm có ứng dụng của bài 1.

Rational AppScan và khái quát bảo mật ứng dụng Web

Trong đoạn này, chúng ta sẽ quan sát trạng thái của bảo mật ứng dụng Web trên Internet nói chung, và vai trò của Rational AppScan trong việc làm cho các ứng dụng Web an toàn hơn.

Khái quát bảo mật ứng dụng Web

Với việc khai thác các ứng dụng Web và nội dung Web 2.0 trên Internet, yêu cầu đối với chức năng ứng dụng Web tăng cường đã và đang đưa đến những ứng dụng Web lớn hơn và phức tạp hơn bao giờ hết, đặc biệt là trong phạm vi các trang web thương mại điện tử và các trang web kiểu mạng xã hội. Song song với xu hướng này, hiện đã và đang có một xu hướng khác đang lên còn nguy hiểm hơn, đó là khai thác các lỗi mã trình trong các ứng dụng Web của bọn tin tặc và tội phạm. Điều này đã dẫn đến một quy tắc tấn công lây nhiễm rất thực tế và tinh vi, đó là Web Application Hacking (Hack Ứng dụng Web).

Có bằng chứng cho thấy số lượng các cuộc tấn công và xâm phạm dữ liệu thực tế xuất hiện tại tầng ứng dụng Web đang tăng lên, trái ngược với các cuộc tấn công truyền thống tại tầng mạng. Cơ sở hạ tầng mạng của bất kỳ giải pháp Web công cộng nào vẫn quan trọng như trước kia, tuy nhiên hiện nay chúng ta đã đạt đến giai đoạn mà cơ sở hạ tầng cấp mạng có thể được làm tấm chắn đạn một cách tương đối. Do vậy mà các tin tặc bây giờ lại tập trung nỗ lực vào các vùng bảo mật kém mà họ đang tìm kiếm trong mã trình ứng dụng Web. Các tin tặc đang đặc biệt nhắm mục tiêu dữ liệu giá trị cao phía sau và được ứng dụng Web kiểm soát, dữ liệu mà thường có giá trị thực có nghĩa.

Hãy xem xét bức tường lửa ngoại vi mà có thể chống lại các cuộc tấn công tầng mạng gần như trực tiếp ngoài hộp, tuy nhiên một bức tường lửa mạng lại không có sự bảo vệ nào chống lại những khiếm khuyết cấp ứng dụng Web. Ví dụ, bức tường lửa chỉ có thể cho phép luồng thông tin mạng https đến một máy chủ Web, nhưng bức tường lửa không kiểm tra và cũng không quan tâm đến nội dung thực tế ứng dụng Web HTML chuyển qua đến một máy chủ Web, đó là cái có thể khai thác được. Những khoản đặt cọc cao, như thậm chí cả điểm yếu không đáng kể trong mã trình ứng dụng Web, chẳng hạn như trong việc nhập dữ liệu đơn giản hợp lệ, đều có thể gây ra những khiếm khuyết nghiệp vụ nghiêm trọng, dẫn đến sự tổn thất về tài chính và hủy hoại nghiêm trọng đối với lòng tin của khách hàng vào nhãn hiệu kinh doanh.

Kết quả điển hình của các tin tặc khai thác các khiếm khuyết mã trình ứng dụng Web có thể cho phép một kẻ tấn công bỏ qua hoàn toàn hệ thống đăng nhập Web, lấy các phiên Web người dùng, gây ra sự ngừng chạy hoàn toàn một ứng dụng Web, và trực tiếp chất vấn, truy cập, và chế tác dữ liệu trên cơ sở dữ liệu phụ trợ.

Có một nguy hại thực tế của các khiếm khuyết ứng dụng Web đang bị khai thác, đặc biệt là nếu dữ liệu ứng dụng có giá trị cao đi kèm với nó, chẳng hạn như thông tin thẻ thanh toán, thậm chí dữ liệu cá nhân nhạy cảm có giá trị có thể bán được. Số lượng tiêu chuẩn ngành, điều tiết và luật lệ áp dụng cho các khoản phạt lớn vì xâm phạm dữ liệu cũng tăng lên. Hãy nhớ rằng một khi có một ứng dụng Web sẵn có trên Internet, thì bất kỳ ai trên thế giới đều có thể truy cập ứng dụng đó, bao gồm cả các tin tặc gây rối đó. Các tin tặc này sẽ có một khoảng thời gian không hạn chế để tìm và khai thác bất kỳ khiếm khuyết hay yếu điểm nào trong mã trình ứng dụng Web. Căn cứ vào cách làm thế nào mà ứng dụng Web mà được tạo ra cho loạt bài hướng dẫn này lại có một chủ đề tài chính và thông tin nhạy cảm đáng bảo vệ, chẳng hạn như danh mục đầu tư bất động sản cá nhân, thì tầm quan trọng của việc phát hành Ứng dụng Web Tài sản mà không có khiếm khuyết là rất rõ ràng.

Căn cứ nền tảng này và nghiệp vụ ngày càng quan trọng phụ thuộc vào bảo mật dữ liệu, việc phát triển các ứng dụng Web không có khiếm khuyết về bảo mật là một yêu cầu vô cùng quan trọng và nên là mục tiêu căn bản của bất kỳ ứng dụng Web nào. Trong bài hướng dẫn này bạn sẽ sử dụng Rational AppScan của IBM để đảm bảo là ứng dụng Web Java Wealth được tạo ra trong Phần 1 không có bất kỳ khiếm khuyết ứng dụng Web đã biết nào, đảm bảo ứng dụng Web đủ an toàn để đưa lên Internet.

Khái quát về Rational AppScan

Rational AppScan của IBM là một bộ sản phẩm bảo mật hàng đầu trên thị trường dành cho việc kiểm tra khiếm khuyết ứng dụng Web. Sử dụng Rational AppScan có thể giúp bạn đảm bảo rằng bất kỳ ứng dụng Web được phát triển đều đủ an toàn để đưa lên Internet. Rational AppScan là một công cụ quét mạnh và có thể tùy chỉnh được, và không chỉ được sử dụng trong quy trình kiểm tra và phát triển mà còn thường xuyên được sử dụng bởi các kiểm toán viên bảo mật và nhân viên hợp cách để kiểm tra sự thâm nhập, và thậm chí cả các đội bảo đảm chất lượng và quản trị kinh doanh.

Chức năng chính của Rational AppScan là quét và kiểm tra các khiếm khuyết ứng dụng Web, và nó có thể tiến hành hàng ngàn kiểm tra tính bảo mật khiếm khuyết chẳng hạn như SQL Injection, Cross-Site Scripting (XSS) và Buffer Overflow. Các lần kiểm tra bảo mật trong Rational AppScan cũng được cập nhật thường xuyên; các lần kiểm tra mới và các lần cập nhật kiểm tra được thêm vào danh mục kiểm tra Rational AppScan khi phát hiện ra các khiếm khuyết ứng dụng mới.

Cấp quyền sử dụng và các báo cáo Rational AppScan

Rational AppScan có chức năng báo cáo toàn diện được cài đặt sẵn, cho phép các kết quả quét được sao chụp lại thành cấu trúc báo cáo đã định dạng trong trong một tệp Adobe PDF. Các báo cáo này có thể tùy chỉnh hoàn toàn trong Rational AppScan. Xem Tải xuống để xem tất cả các báo cào đã được tạo ra thông qua quy trình được tuân theo trong bài hướng dẫn này. Rational AppScan đi cùng với vô số định dạng báo cáo được xác định mặc định mà phù hợp với phần lớn các tiêu chuẩn hợp pháp quốc tế, và các yêu cầu điều tiết chi tiết ngành. Bao gồm cả Payment Card Industry Data Security Standard (PCI DSS), SOX, HIPPA, the OWASP Top Ten, WASC Threat Classification, ISO 17799/27001 và SANS Top Ten để đặt tên cho một số.

Trước khi mua Rational AppScan, nên dành một chút thời gian để xem xem bạn định triển khai và sử dụng Rational AppScan trong môi trường của bạn như thế nào. Hơn nữa cũng cần phải hiểu rõ hệ thống cấp quyền sử dụng Rational AppScan, và hai phương pháp triển khai Rational AppScan điển hình. Cấp quyền sử dụng Rational AppScan hoạt động trên cơ sở "trên mỗi máy được cài" trái ngược với cơ sở "trên từng người dùng"; do vậy mà AppScan được cài và được gắn cho hệ thống cụ thể nhưng hệ thống này (và AppScan) có thể được nhiều người dùng sử dụng. Cấp quyền ứng dụng trói buộc ứng dụng Rational AppScan vào địa chỉ MAC của hệ thống chủ (phần cứng mạng) và số serie đĩa cứng. Do đó trước khi triển khai Rational AppScan hãy dành một chút thời gian xem xét và quyết định chiến lược cài đặt tốt nhất.

Lựa chọn tiêu biểu đầu tiên là cài đặt Rational AppScan trên máy chủ "Test (kiểm tra)" trung tâm, mà cho phép quản lý và kiểm soát tốt việc sử dụng Ứng dụng. Kiểu chiến lược này được khuyến khích sử dụng nếu bạn định sử dụng Rational AppScan trong một môi trường kiểm tra riêng.

Cài đặt Máy tính xách tay

Việc cài đặt Rational AppScan trên một máy tính xách tay chuyên dụng mang đến độ linh hoạt cao hơn so với việc cài đặt máy chủ. Nếu bạn có kế hoạch sử dụng Rational AppScan trong nhiều môi trường kiểm tra trên các mạng khác nhau, thì nên áp dụng chiến lược được khuyến khích này.

Trước khi hoàn thành chiến lược triển khai của bạn, bạn phải xem xem liệu việc sử dụng có chủ định Rational AppScan có nằm trong tinh thần của bản thỏa thuận cấp quyền sử dụng hay không. Ví dụ, việc mua một cấp quyền sử dụng Rational AppScan riêng để kiểm tra phát triển ứng dụng Web trong một vị trí cụ thể được xem là sử dụng chấp nhận được.

Chú ý: Hệ thống cấp quyền sử dụng Rational AppScan được thay đổi để phù hợp với cơ cấu cấp quyền sử dụng IBM Rational chuẩn cuối năm 2008.

Trong bài hướng dẫn này, bạn sẽ cài đặt và sử dụng Rational AppScan trên máy tính xách tay mà có nối mạng với hệ thống máy chủ Wealth Java Web Application (Ứng dụng Web Java Wealth) được tạo ở Phần 1. Tuy nhiên, Rational AppScan có thể được cài đặt trên hệ thống tương tự mà bạn đã dùng trong Phần 1, và chạy các lần quét cục bộ trên hệ thống đó.


Cài đặt Rational AppScan

Trong phần này bạn sẽ cài đặt ứng dụng Rational AppScan trên một máy tính xách tay. Có thể cài đặt và chạy Rational AppScan từ nền dựa trên Microsoft® Windows® hiện đại mà có cài Java Runtime.

Các bước cài đặt

Cài đặt ứng dụng Rational AppScan trên máy tính xách tay là một quy trình khá dễ dàng.

  1. Nhấn chuột hai lần vào tệp cài đặt để khởi chạy thủ thuật InstallShield, như trong Hình 1.
    Hình 1. Khởi chạy thủ thuật InstallShield
    Khởi chạy thủ thuật InstallShield
    Nếu cài đặt dò tìm ra Microsoft .NET Framework 2.0 hoặc phiên bản cao hơn không được cài đặt, mà đó lại là một yêu cầu, thì quá trình cài đặt sẽ cài đặt Microsoft .NET Framework 3.0 trước khi tiếp tục quá trình cài đặt.
  2. Đọc và nhấn chuột I accept the terms in the license agreement (Tôi chấp nhận các điều khoản trong thỏa thuận cấp quyền sử dụng) và nhấn Next.
    Hình 2. Thỏa thuận cấp quyền sử dụng
    Thỏa thuận cấp quyền sử dụngt
  3. Chấp nhận danh mục cài đặt mặc định.
    Hình 3. Chọn một danh mục cài đặt
    Chọn một dan mục cài đặt

Ứng dụng Rational AppScan bây giờ được cài đặt. Tuy nhiên, trước khi sử dụng Rational AppScan và chạy các lần quét, bạn cần thực hiện một chút thao tác nội dịch.

Khái quát cập nhật Phần mềm Rational AppScan

Khi Rational AppScan khởi chạy, nó tự động hỏi IBM Servers (các Máy chủ IBM) để kiểm tra xem liệu Rational AppScan có cập nhật hay không. Nếu có bản cập nhật, mà thường là trường hợp chạy Rational AppScan lần đầu, Rational AppScan tiến hành tự động tải xuống và sử dụng bản cập nhật đó.

Các bản cập nhật Rational AppScan tương tự như những bản được tìm thấy trong các sản phẩm Anti-Virus (Chống Virut), mà trong đó thường xuyên phát hiện ra các khiếm khuyết ứng dụng Web mới. Do đó đội hỗ trợ Rational AppScan đưa các thay đổi và kiểm tra mới vào thư viện kiểm tra trong Rational AppScan, thông qua các cập nhật phần mềm. Quy trình này đảm bảo là Rational AppScan có thể chạy thử các ứng dụng Web phòng ngừa các khiểm khuyết bảo mật mới nhất.

Để quy trình cập nhật hoạt động, trạm làm việc Rational AppScan hoặc máy chủ của bạn phải có kết nối Internet. Quy trình cập nhật này cần cho công việc sau khi cài đặt và về sau có thể được thực hiện đều đặn. Cũng có thể tải các cập nhật một cách thủ công từ cổng hỗ trợ khách hàng dành cho các nhà phát triển làm việc trong các môi trường bị khóa không được phép kết nối bên ngoài.

Cập nhật Rational AppScan

Bây giờ là lúc cập nhật Rational AppScan.

  1. Khởi chạy Rational AppScan để xem Hình 4.
    Hình 4. Rational AppScan kết nối với IBM Servers (Các máy chủ IBM) để kiểm tra xem có yêu cầu các cập nhật hay không
    Rational AppScan kết nối với IBM Servers (các Máy chủ IBM) để kiểm tra xem có yêu cầu các cập nhật hay không
  2. Nhấn Install (Cài đặt) để bắt đầu quá trình tải xuống và cài đặt và tự động (xem Hình 5).
    Hình 5. Các cập nhật được cài đặt tự động
    Các cập nhật đ\ực cài đặt tự động
  3. Khi quá trình cài đặt kết thúc, nhấn View Update Log (Xem Bản ghi Cập nhật) từ Hình 5, thể hiện các chi tiết cập nhật thực tế. Khi cập nhật xong, thì là lúc cấp quyền sử dụng Rational AppScan.

Tổng quan cấp quyền sử dụng Rational AppScan

Nào hãy cùng đi qua các bước để cấp quyền sử dụng Rational AppScan.

  1. Tái khởi chạy Rational AppScan và nhấn vào thẻ Security Issues trong ô cửa sổ bên trái. Khi bạn mua AppScan (hoặc yêu cầu thử), bạn được cấp một thư có chứa License Serial Key (LSK) và các hướng dẫn vị trí để tải tệp cấp quyền AppScan. Nhấn Help (Trợ giúp) > License (Cấp quyền) (xem Hình 6).
    Hình 6. Chọn các lựa chọn License
    Chọn các lựa chọn License
  2. Trên cửa sổ các lựa chọn License được trình bày trong Hình 7, nhấn Obtain License Online (Nhận Cấp quyền Trực tuyến).
    Hình 7. Nhấn Obtain License Online
    chọn Obtain License Online
  3. Mở trang Web cấp quyền AppScan, https://licensing.watchfire.com (xem Hình 8). Hoàn thành biểu mẫu, điền đầy đủ vào các trường màu đỏ.
    Hình 8. Biểu mẫu trang Web cấp quyền AppScan
    Biểu mẫu trang Web cấp quyền AppScan
  4. Đối với phần tiếp theo của biểu mẫu cấp quyền, bạn cần biết địa chỉ MAC và số seri dung lượng đĩa cứng của hệ thống mà AppScan được cài đặt. Tệp cấp quyền được tạo trực tuyến khóa quyền sử dụng và cài đặt ứng dụng AppScan đối với một hệ thống riêng biệt.
  5. Để tìm các chi tiết này, tại một dấu nhắc DOS (chạy cmd trong Windows), kiểu ipconfig/all, mà hiển thị địa chỉ MAC của thẻ mạng của bạn. Sau đó chạy vol, mà hiển thị số seri dung lượng ổ đĩa cứng. Điền vào các chi tiết hệ thống phần phía dưới dùng biểu mẫu trang Web cấp quyền AppScan được trình bày trong Hình 9.
    Hình 9. Phần các chi tiết Hệ thống của biểu mẫu trang Web cấp quyền AppScan
    Phần các chi tiết hệ thống của biểu mẫu trang Web cấp quyền AppScan
  6. Và cuối cùng là, đồng ý License Agreement (Thỏa thuận Cấp quyền) bằng cách nhấn Continue ở phía cuối màn hình (xem Hình 10).
    Hình 10. Đồng ý License Agreement (Thỏa thuận Cấp quyền)
    Đồng ý License Agreement (Thỏa thuận Cấp quyền)
  7. Khi bạn có tệp cấp quyền của mình rồi, hãy nhập nó vào AppScan. Quay trở lại Hình 6 và lại chọn lựa chọn License lần nữa từ trình đơn thả xuống Help (Trợ giúp) để khởi chạy màn hình các lựa chọn License từ Hình 7. Lần này nhấn Load License File (Tải tệp Cấp quyền).
  8. Điều hướng đến tệp cấp quyền được tải xuống trong thư mục AppScan License và nhấn Open (Mở) (xem Hình 11).
    Hình 11. Tệp cấp quyền được tải xuống trong thư mục AppScan License
    Tệp cấp quyền được tải xuống trong thư mục AppScan License directory

Xin chúc mừng! Bây giờ Rational Appscan đã sẵn sàng sử dụng.


Chạy Rational AppScan

Vì bạn đã cài đặt xong Rational AppScan, nên giờ là lúc lấy ứng dụng của bạn ra để chạy thử, và tiếp đến là chạy một quét trên ứng dụng Wealth.

Chuẩn bị ứng dụng Web để chạy thử

Trong bài hướng dẫn này bạn đã cài đặt Rational AppScan lên trên một hệ thống khác với trạm làm việc mà bạn vừa cài Rational Application Developer, Data Studio, và sau đó phát triển Ứng dụng Web Java Wealth Java trong Phần 1 (xem Tài nguyên). Nếu bạn thiếu phần cứng, có thể cài Rational AppScan trên hệ thống tương tự như Rational Application Developer và bạn có thể quét cục bộ ứng dụng Web Wealth bằng cách nhập http://localhost:9080/wealth/ như là URL quét.

Xin phép trước khi quét

Trước khi sử dụng AppScan để quét một ứng dụng Web, hãy chắc chắn là bạn đã xin được phép quét từ chủ sở hữu của trang Web. Điều này đặc biệt quan trọng khi quét các ứng dụng Web bên ngoài các môi trường kiểm tra của bạn. Việc quét trang Web của bên thứ ba bằng AppScan mà không xin phép có thể gây ra những hậu quả pháp lý nghiêm trọng.

Chúng tôi cần chắc chắc là ứng dụng Java Wealth là trực tuyến và đang chạy đúng trên nền Rational Application Developer của bạn. Trong Rational Application Developer, hãy đi đến Open Web Perspective > Web, sau đó chọn thẻ Servers (các Máy chủ) (xem Hình 12), và xem xem liệu máy chủ Web đã khởi động chưa. Nếu chưa, hãy nhấn chuột phải và chọn Start. Tùy thuộc vào công suất phần cứng của bạn, mà có thể mất một lúc trước khi WebSphere và ứng dụng Web Wealth của bạn khởi động xong.

Hình 12. Khởi chạy WebSphere trong Rational Application Developer
Khởi chạy WebSphere trong Rational Application Developer

Tiếp đến bạn cần kiểm tra xem bạn có thể truy cập Wealth Web Application từ Laptop Rational AppScan của bạn hay không. Trước tiên hãy chắc chắn là máy tính xách tay (laptop) nằm cùng mạng bằng cách mở trình duyệt Web của bạn và gõ vào http://<ip address of RAD>:9080/Wealth/login.jsp.

Trong trường hợp trạm làm việc Rational Application Developer có một địa chỉ IP là 192.168.0.4, vì thế URL của bạn là http://192.168.0.4:9080/Wealth/login.jsp.

Khi được mở, hãy kiểm tra xem ứng dụng Web Wealth có chạy tốt không, bằng cách đăng nhập và nhấn vào một vài đường liên kết để chắc chắn là mọi thứ có đáp lại như nó cần phải thế.

Bây giờ bạn biết là ứng dụng Web Wealth đang hoạt động và có thể nhìn bằng thiết bị Rational AppScan, vì thế bạn hãy sẵn sàng tiến hành công việc quét đầu tiên.

Tuy nhiên, trước khi quét, bạn nên tìm hiểu các mẫu quét Rational AppScan.

Tổng quan về các mẫu quét

Rational AppScan là một công cụ quét khiếm khuyết khá mạnh và có thể chạy hàng ngàn lần kiểm tra khiếm khuyết qua vô số các vùng khiếm khuyết. Một vài vùng kiểm tra này, chẳng hạn như kiểm tra máy chủ Web và các dịch vụ Web, không liên quan đến việc bảo đảm rằng mã trình ứng dụng của bạn không có khiếm khuyết. Do vậy bạn cần điều chỉnh lần quét khiếm khuyết của bạn, và cắt bỏ các vùng mà bạn không muốn quét.

Rational AppScan sử dụng các mẫu quét mà được lưu các cấu hình quét được dùng để thể hiện các loại quét khiếm khuyết đặc thù. Các mẫu quét cho phép chúng tôi áp dụng và lưu tùy biết riêng cho các lần quét đã định của bạn. Rational AppScan đi kèm với một số mẫu quét được định nghĩa trước mà có thể dùng tất cả chúng như bình thường mà không phải suy nghĩ thêm. Tuy nhiên, cũng có nhiều ưu điểm khi tùy biến mẫu quét đặc trưng của riêng bạn, chẳng hạn như đảm bảo rằng tia quét tương tự chuẩn xác có thể được dùng trong các lần quét lại và chia sẻ mẫu quét với các nhà phát triển và các đội khác.

Quét ứng dụng

Sử dụng và lưu mẫu quét tùy biến của bạn, trong trường hợp có vấn đề được xử lý trong mã trình và có yêu cầu quét lại.

  1. Từ Cửa sổ Chào mừng Rational AppScan, chọn Create New Scan (Tạo Quét Mới) hoặc từ bên trong Rational AppScan, Nhấn thực đơn thả xuống File và chọn New) (xem Hình 13).
    Hình 13. Cửa sổ Chào mừng Rational AppScan
    Cửa sổ Chào mừng Rational AppScan
  2. Tiếp đến đảm bảo là thủ thuật Launch Scan Configuration (Khởi tạo Mặc định Quét) được đánh dấu và nhấn Default (Mặc định) từ các Mẫu Định nghĩa sẵn (xem Hình 14).
    Hình 14. Kiểm tra thủ thuật Launch Scan Configuration (Khởi tạo Cấu hình Quét)
    Kiểm tra thủ thuạt Launch Scan Configuration
  3. Tiếp đến chúng ta được hỏi kiểu quét mà bạn muốn thực hiện, Quét Ứng dụng Web hoặc Quét Dịch vụ Web. Kiểu Quét Dịch vụ Web (Web Service Scan) bao gồm cả cở sở hạ tầng, chẳng hạn như cấu hình máy chủ Web. Kiểu quét này không nằm trong quy trình phát triển của bạn, vì thế hãy chọn Quét Ứng dụng Web (Web Application Scan), kiểu này sẽ chỉ quét riêng các khiếm khuyết trong ứng dụng Web (xem Hình 15).
    Hình 15. Chọn Quét Ứng dụng Web (Web Application Scan)
    Selecting Web Application Scan
  4. Bạn được trình diện với một màn hình hỏi về URL Khởi động quét (xem Hình 16)
    Hình 16. Màn hình hỏi URL Khởi động quét
    Screen asking for the scan Starting URL
  5. Tại mục này bạn có lựa chọn chọn Cấu hình Quét Đầy đủ (Full Scan Configuration), cho phép tùy biến chi tiết của quét, nhưng trong bài hướng dẫn này, bạn sẽ dán vào thủ thuật Cấu Hình Quét (Scan Configuration), khi ứng dụng Web của bạn khá nhỏ và đơn giản. Nhập URL của ứng dụng Web, http://192.168.0.4:9080/Wealth/.
    Không nhập login.jsp hay welcome.jsp, chỉ gốc URL mà thôi, vì Rational AppScan sẽ tìm ra và phân tích tất cả các khía cạnh của ứng dụng Web từ điểm đó.
    Đường dẫn phân biệt dạng chữ đặc biệt quan trọng để kích hoạt nếu máy chủ Web của bạn đang hoạt động trên nền hệ điều hành phân biệt dạng chữ chẳng hạn như Linux hay Unix.
    Nếu bạn cần cấu hình các cài đặt ủy nhiệm để truy cập máy chủ ứng dụng Web mục tiêu, thì có một lựa chọn ở phía cuối màn hình này thực hiện việc đó. Thay vì sử dụng các địa chỉ IP, ứng dụng Web mục tiêu của bạn có thể là địa chỉ Internet đầy đủ hoặc tên miền nội tại. Nếu có các vấn đề về ủy nhiệm, bạn nên vào màn hình này và thay đổi các cài đặt. Hãy chú ý là AppScan không hỗ trợ các ngoại lệ ủy nhiệm. Nếu máy chủ cục bộ được cài đặt như một ngoại lệ trong Internet Explorer, thì bạn nên cài đặt nó sang Don't Use Proxy (Không Sử dụng Ủy nhiệm) trong AppScan.
  6. Nhấn Next để đến màn hình quản lý Đăng nhập (xem Hình 17).
    Hình 17 Quản lý Đăng nhập
    Login management

Quản lý đăng nhập

Quản lý đăng nhập là phần chủ chốt trong quét. Bạn muốn Rational AppScan kiểm tra mọi thứ mà một người dùng có thể thực hiện và nhìn thấy; vậy nên Rational AppScan cần phải chứng thực (đăng nhập) vào ứng dụng Web Wealth của bạn như một người dùng thường xuyên. Bạn có vài lựa chọn cho mình, một là được nhắc, tức là mỗi lần Rational Appscan tìm thấy một trang đăng nhập, nó sẽ dừng quét và hiển thị trang đó trên màn hình của bạn. Tiếp đến bạn đăng nhập như thể bạn là một người dùng, Rational AppScan ghi lại các chi tiết đăng nhập đó và sau đó sử dụng chúng để đăng nhập vào ứng dụng Web và tiếp tục với công việc kiểm tra.

Để làm cho quét của bạn hoạt động trơn tru và tránh không bị dừng quét, hãy chọn các lựa chọn tự động. Cung cấp cho Rational AppScan các chi tiết truy cập trước khi bắt đầu quét và lưu chúng trong mẫu quét của bạn để dùng cho các lần quét sau này.

  1. Chọn nút radio Tự động trong Hình 17, và tiếp đến nhập tên người dùng là tyler và mật khẩu của tyler (hoặc bất kỳ tên người dùng và mật khẩu nào mà đã sử dụng khi phát triển Wealth Java App trong Phần 1.
  2. Bạn có lựa chọn cấu hình các dò tìm "In-Session", nếu Rational AppScan có vấn đề về quản lý phiên Web người dùng và tìm trang đăng xuất, v.v. Đối với bài hướng dẫn này, đây sẽ không phải là vấn đề.
  3. Nhấn Next.
  4. "Chính sách" Rational AppScan liên quan đến các nhóm kiểm tra Rational AppScan riêng biệt.
    Bạn chỉ cần chạy kiểm tra ứng dụng Web trong phạm vi quét của bạn, vì thế bạn cần thu hẹp số lần kiểm tra chỉ để dành cho kiểm tra ứng dụng Web. Chọn Policy Application-Only và nhấn Next (xem Hình 18).
    Hình 18. Chọn Chính sách Kiểm tra
    Selecting the Test Policy
  5. Cuối cùng, Rational AppScan hỏi xem bạn đã sẵn sàng bắt đầu quét chưa; nếu bạn đã sẵn sàng, hãy nhấn Bắt đầu một nút radio quét hoàn toàn tự động và tiếp đến nhấn Next (xem Hình 19).
    Hình 19. Thưa quý ngài xin hãy Khởi động Động cơ!
    Gentleman Start your Engines
  6. Quét của bạn cần được lưu lại, vì vậy hãy chọn Yes (Đồng ý) (xem Hình 20).
    Hình 20. Một điều cuối cùng trước khi bắt đầu quét
    one last thing
  7. Nhập tên của WealthScan (xem Hình 21) và nhấn Save (Lưu).
    Hình 21. Nhập tên quét
    enter scan name

Bắt đầu quét

Thực hiện quét

Thời gian hoàn thành quét phụ thuộc vào độ phức tạp và kích thước của ứng dụng Web mục tiêu, băng tần, tốc độ xử lý và số lần kiểm tra được hướng dẫn trong phạm vi quét. Ứng dụng của bạn khá nhỏ vì thế việc quét của bạn chỉ mất có vài phút là xong.

Khi quét, trước tiên Rational AppScan xác định phạm vi ứng dụng Web, và liệt kê các tệp ứng dụng Web và URL để quét. Tiếp đến Rational AppScan sắp xếp từng phần ứng dụng Web với một tia quét khiếm khuyết ứng dụng Web, như lựa chọn trong chính sách.

Khi Scan (Quét) đang chạy, hãy chọn View > Scan Log. Bạn có thể nhìn thấy chi tiết quét cụ thể. Trong Hình 22, bạn có thể nhìn thấy các đăng nhập người dùng tự động đang hoạt động (đánh dấu bằng màu xanh), các chi tiết quét khác nhau và các phân tích đang được thực hiện, và kiểm tra thông báo không thực hiện được trả lại và được đánh dấu màu đỏ.

Hình 22. Theo dõi thật kỹ các việc đang diễn ra
Theo dõi thật kỹ các việc đang diễn ra

Phần phía dưới bên phải Rational AppScan bạn tìm thấy Issue Severity Gauge, cái này cập nhập trong thời gian thực tế với quét. Dưới nó là số URL được tìm thấy và được ghé thăm trong phạm vi ứng dụng Web và các lần kiểm tra nổi bật và đã hoàn thành. Hình 23 thể hiện các trạng thái khi lần quét đầu tiên của bạn kết thúc.

Hình 23. Đánh giá Mức độ nghiêm trọng của Vấn đề (Issue Severity Gauge)
Issue Severity Gauge

Hoàn thành quét

Kết quả nằm trong hình 23, và nó chẳng phải tin tốt lành gì đối với ứng dụng Web Java Wealth của bạn, Rational AppScan đã trả lại tổng cộng 18 vấn đề, mà Rational AppScan đã phân loại mức độ nghiêm trọng. Vậy nên bạn có 8 vấn đề là Khiểm khuyết Mức độ Nguy hiểm cao được phát hiện ra, 3 Nguy hiểm mức độ Trung bình, 2 Nguy hiểm Mức độ thấp và 3 vấn đề liên quan đến Thông tin, mà tất cả đều yêu cầu kiểm tra và giải quyết.

Đừng lo, Rational AppScan không hề được hoàn thành khi giúp bảo vệ ứng dụng của bạn. Nếu bạn đã từng thử nghiệm kiểm tra sự thâm nhập ứng dụng bên thứ ba, thông thường báo cáo trình tự chỉ cho bạn biết là có vấn đề mà không giải thích rõ ràng khiếm khuyết là cái nào, làm thể nào để sửa nó, hay bất kỳ chi tiết bào về lần kiểm tra thực tế họ đã sử dụng để tìm ra nó. Thật hay là Rational AppScan thực hiện tất cả những điều này cho bạn.

Rational AppScan trình bày từng vấn đề mà nó phát hiện ra bằng tệp ".jsp" nơi mà vấn đề được tìm thấy, tiếp đến là loại vấn đề theo mức độ nghiêm trọng như trong Hình 24.

Hình 24. Các kết quả quét
scan results

Đây là lúc cần phải hiểu các vấn đề được dò tìm này là cái gì, nhưng đừng lo, đây là nơi Rational AppScan thực sự xứng đáng với danh tiếng của nó.

Nhấn vào vấn đề đầu tiên, mà có thể tình cờ là một khiếm khuyết Cross-Site Script (XSS). Các chi tiết được tạo trên ô cửa sổ phía dưới cùng bên phải (xem Hình 25). Đúng là ý hay khi mở rộng kích thước ô cửa sổ này tại điểm này.

Hình 25. Tìm hiểu một vấn đề bảo mật được phát hiện
Understanding a discovered security issue

Lời khuyên

Trong phần Lời khuyên, Rational AppScan giải thích cặn kẽ đầy đủ chi tiết loại khiếm khuyết bảo mật mà nó đã phát hiện ra. Trong trường hợp này, nó là một khiếm khuyết XSS. Ở trên cùng là phần khái quát ngắn gọn về các khiếm khuyết và mức độ nghiêm trọng của chúng, tiếp đến là phần mô tả văn bản chi tiết ở dưới cùng bên trái cửa sổ. Phía bên phải có phần giải thích vấn đề bằng video, đây là phương tiện trợ giúp việc học khá thú vị.

Trở lại phía bên trái phần Lời khuyên. Nếu bạn cần thêm thông tin, thì có một liên kết với một trang riêng trên WASC (Web Application Security Consortium), cung cấp thêm thông tin và cả lời khyên (xem Tài nguyên để tìm liên kết). WASC là một tổ chức dành cho bảo mật ứng dụng Web.

Nếu bạn không biết khiếm khuyết XSS là gì, hãy cứ tiếp tục và đọc những gì Rational AppScan nói đến và xem video.


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
the fix

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.

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
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 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)
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á 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 (<scripts>) 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ư "&" ";" "<" "@", và thậm chí còn cung cấp mã Java để thực hiện công việc này.

Vì thế bạn cần thêm các kiểm tra hợp lệ đầu vào trường trong mã Java của bạn, và bạn sẽ sử dụng mã trong Ví dụ 1 để thực hiện việc này, cái mà nói rõ là chỉ chấp nhận các ký tự số alpha.

Ví dụ 1. Kiểm tra hợp lệ đầu vào trường
    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
         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 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).

Hình 29. Remediation tasks (Tác vụ Khắc phục)
Remediation tasks (Tác vụ Khắc vụ)

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

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
    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ữ đó.
    Hình 31. Tạo một báo cáo
    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.
    Hình 32. Báo cáo có chuông và còi
    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)
    Hình 33. Lưu và đặt tên cho báo cáo của bạn
    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.

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
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<jsp:useBean id="users" class="com.ibm.ds.users.UsersDataImpl" scope="page" /> 
<%@page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@page import="com.ibm.ds.users.Users" %>
<%@page import="pureQuery.example.*" %>
<%@page import="com.ibm.pdq.runtime.*" %>
<%@page import="java.util.regex.*" %>
<html>
<head>
<title>login</title>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<meta name="GENERATOR" content="Rational Application Developer">
</head>
<body>
<h1>Login</h1>

<%
    String userid = request.getParameter("userid");
    String password = request.getParameter("password");
    
    session.invalidate();
    session = request.getSession(true);
    session.setAttribute("userid", userid);
 
    if(request.getMethod().equals("POST")){
    
        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(""))  &&
           (password != null && !password.equals(""))  &&
            userid.length() <= 50 && password.length() <= 50 && 
            request.getParameter("login") != null &&request.getParameter("login").equals("Login")){
            
            Data d = SampleUtil.getData("jdbc:db2://localhost:50000/WEALTH", 
		    "<enter_username_here>", "<enter_password_here>");
            users.setData(d);
            Users u = users.getUsers(userid);
            
            if(u != null && u.getPassword().equals(password)){
                session.setAttribute("userid", userid);
                response.sendRedirect("welcome.jsp");
            }
            else{
                out.println("Error logging in.<br/><br/>");
            }
        }
        else
            out.println("Error logging in.<br/><br/>");
    }
%> 
<form method="post">
    userid: <input name="userid"/><br/>
    Password: <input name="password" type="password"/><br/>
    <input type="submit" name="login" value="Login"/>
</form>
</body>
</html>

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ừ 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
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%@page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<html>
<head>
<title>logout</title>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<meta name="GENERATOR" content="Rational Application Developer">
</head>
<body>
<%
    String userid = (String)session.getAttribute("userid");
    if(userid != null){
        session.setAttribute("userid", null);
        session.invalidate();
        response.sendRedirect("login.jsp");
    }
%>
</body>
</html>

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
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<jsp:useBean id="realestate" class="com.ibm.ds.realestate.RealestateDataImpl" 
                                                              scope="page" /> 
<%@page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@page import="java.util.Iterator" %>
<%@page import="com.ibm.ds.realestate.Realestate" %>
<%@page import="pureQuery.example.*" %>
<%@page import="com.ibm.pdq.runtime.*" %>
<%@page import="java.math.BigDecimal" %>
<%@page import="java.util.regex.*" %>
<html>
<head>
<title>realestate</title>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<meta name="GENERATOR" content="Rational Application Developer">
</head>
<body>
<h1>Your realestate holdings</h1>
<table
 border="1"><tr><th>Address</th><th>City</th>
 <th>Zip</th><th>State</th><th>Value</th></tr>
<%
    String userid = (String)session.getAttribute("userid");
    
    if(userid == null){
        response.sendRedirect("login.jsp");
    }
    Data d = SampleUtil.getData("jdbc:db2://localhost:50000/WEALTH", 
	"<enter_username_here>", "<enter_password_here>");
    realestate.setData(d);
    Iterator i = realestate.getRealestates(userid);
    
    Realestate curr = null;
    
    double total = 0;
    while(i.hasNext()){
        curr = (Realestate) i.next();
        out.println("<tr><td>"+curr.getAddress()+"</td><td>"
		                                      +curr.getCity()+
                    "</td><td>"+curr.getZip()+"</td><td>"
					                +curr.getState()+
                    "</td><td>$"+curr.getPropertyValue()
					                +"</td></tr>");
        total += curr.getPropertyValue().doubleValue();
    }
    if(total > 0)
        total = Math.round(total*100.0)/100.0;
%>
</table>
<h3>Total value: $<% out.print(total); %></h3>
<br><h4>Enter new real estate:</h4> 
<%
    if(request.getMethod().equals("POST") && request.getParameter("create" )
	                                       != null){
        String address = request.getParameter("address");
        String city = request.getParameter("city");
        String state = request.getParameter("state");
        String zip = request.getParameter("zip");
        String value = request.getParameter("value");
        
        if(!address.equals("") && !city.equals("")  &&
           !zip.equals("") && !state.equals("") && !value.equals("")){
            Pattern input = Pattern.compile("[a-zA-Z0-9\\p{Blank}]*");
             Matcher m = input.matcher(address);
             boolean matcha = m.matches();
             
            input = Pattern.compile("[a-zA-Z\\p{Blank}]*");
             m = input.matcher(city);
             boolean matchc = m.matches();
             
            input = Pattern.compile("[a-zA-Z][a-zA-Z]");
             m = input.matcher(state);
             boolean matchs = m.matches();
             
            input = Pattern.compile("[0-9][0-9][0-9][0-9][0-9]");
             m = input.matcher(zip);
             boolean matchz = m.matches();
            
            if(matcha && matchc && matchs && matchz){
                try{
                    realestate.createRealestate(new BigDecimal(value), address, city, 
					                     zip, state, userid);
                    response.sendRedirect("realestate.jsp");
                }catch(Exception e){ out.println("Error adding new real estate.
				                                      <br/><br/>"); }
            }
            else
                out.println("Error adding new real estate.<br/><br/>");
        }
        else
            out.println("Error adding new real estate.<br/><br/>");
    }
 %>
<form method="post">
    Address: <input name="address"/><br/>
    City: <input name="city"/><br/>
    Zip: <input name="zip"/><br/>
    State: <input name="state"/><br/>
    Value: $<input name="value"/><br/>
    <input type="submit" name="create" value="Create"/>
</form>
<a href="welcome.jsp">back</a>
</body>
</html>

Đây là bốn trường nhập số nguyên và chuỗi có hiệu lực đầu vào được đặt trên chúng để tránh các cuộc tấn công tiêm nhiễm SQL được Rational AppScan chỉ ra. Lớp BigDecimal thực hiện hiệu lực đầu vào bên trong, và vì thế bạn không cần phải thực hiện hiệu lực đầu vào trên số liệu giá trị, mặc dù bạn có thể thấy là việc hiển thị lỗi hữu dụng cho người dùng là hữu ích. Nếu, mọi thứ thông qua hiệu lực đầu vào, thì tiếp đến bản ghi bất động sản mới được thêm vào cơ sở dữ liệu. Ngoài ra các nhận xét HTML đã được chuyển sang nhận xét JSP sao cho chúng không xuất hiện trong HTML nữa.

Ví dụ 6.securities.jsp được cập nhật
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<jsp:useBean id="securities" class="com.ibm.ds.securities.SecuritiesDataImpl" 
                                                              scope="page" /> 
<%@page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@page import="java.util.Iterator" %>
<%@page import="com.ibm.ds.securities.Securities" %>
<%@page import="pureQuery.example.*" %>
<%@page import="com.ibm.pdq.runtime.*" %>
<%@page import="java.net.*" %>
<%@page import="java.io.*" %>
<html>

<head>
<title>securities</title>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<meta name="GENERATOR" content="Rational Application Developer">
</head>
<body>
<h1>Your stock and options holdings</h1>
<table
 border="1"><tr><th>Sybmol</th><th>Description</th>
 <th>Quantity*</th><th>Type</th><th>Current price**
 </th><th>Total value</th><th>Quote date</th></tr>
<%
    String userid = (String)session.getAttribute("userid");
    
    if(userid == null){
        response.sendRedirect("login.jsp");
    }
    Data d = SampleUtil.getData("jdbc:db2://localhost:50000/WEALTH", 
	<enter_username_here>", "<enter_password_here>");
    securities.setData(d);
    Iterator i = securities.getSecuritiess(userid);
    
    Securities curr = null;
    double total = 0;
    while(i.hasNext()){
        curr = (Securities) i.next();
        
        String str = "http://finance.yahoo.com/d/quotes.csv?s="+curr.getSymbol()
		                                                          +"&f=nd1l1";
        URL url = new URL(str);
        URLConnection conn = url.openConnection();
        DataInputStream in = new DataInputStream ( conn.getInputStream (  )  ) ;
        BufferedReader br = new BufferedReader(new InputStreamReader(in));
        String line = null;
        if(br.ready())
            line = br.readLine();
        
        String company = line.substring(line.indexOf('"')+1,
                                        line.indexOf('"', line.indexOf('"')+1));
        
        String date = line.substring(line.indexOf("\",\"")+3,
                                     line.indexOf("\",", line.indexOf("\",\"")+4));
        
        String price = line.substring(line.indexOf("\",", line.indexOf("\",\"")+4)+2);
        
        int multQuantity = curr.getQuantity();
        if(curr.getSecuritytype().equals("option"))
            multQuantity = curr.getQuantity()*100;
        
        float totalValue = Float.parseFloat(price)*multQuantity;
        totalValue = (float)(Math.round(totalValue*100.0)/100.0);
        
        out.println("<tr><td>"+curr.getSymbol()+"</td><td>"
		       +company+
                    "</td><td>"+curr.getQuantity()+"</td><td>"+
                    curr.getSecuritytype()+"</td><td>$"+price+
                    "</td><td>$"+totalValue+"</td><td>"
			+date+"</td></tr>");
        
        total += totalValue;
    }
    if(total > 0)
        total = Math.round(total*100.0)/100.0;
%>
</table>
<h3>Total value: $<% out.print(total); %></h3>
* # of contracts for options<br/>** Delayed quotes, as retrieved from 
                                                    Yahoo! Finance&trade;
<br/><br/><a href="welcome.jsp">back</a>
</body>
</html>

Lỗi duy nhất mà lớp này có là các nhận xét trong HTML. Hãy lưu ý đến sự thay đổi ở đây từ nhận xét HTML sang nhận xét JSP.

Cuối dùng, hãy vô hiệu hóa phiên (xem Ví dụ 7).

Ví dụ 7. welcome.jsp được cập nhật
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%@page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<html>
<head>
<title>welcome</title>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<meta name="GENERATOR" content="Rational Application Developer">
</head>
<body>
<%
    String userid = (String)session.getAttribute("userid");
  
    session.invalidate();
    session = request.getSession(true);
    session.setAttribute("userid", userid);
    
    if(userid == null){
        response.sendRedirect("login.jsp");
    }
%>
<h1>Welcome <% out.print(userid); %>!</h1>
See your <a href="securities.jsp">securities</a><br/>
See your <a href="realestate.jsp">real estate</a><br/><br/>
<a href="logout.jsp">logout</a>
</body>
</html>

Cuối cùng, đổi nhận xét HTML trong welcome.jsp sang nhận xét JSP, và vô hiệu hóa phiên như đã nói ở trên.

Sau khi cập nhật jsp's trong Rational Application Developer, hãy kiểm tra mọi thứ đang làm việc với ứng dụng Web Wealth.

Quét lần hai

Vì bạn vừa cập nhật mã trình Java của bạn và kiểm tra Ứng dụng Web Wealth đang chạy, nên đây là lúc chạy lại Rational AppScan và xem xem có bao nhiêu khiểm khuyết bạn vừa sửa.

Trước khi chạy Quét khác, hay kiểm tra dữ liệu bảng cơ sở dữ liệu của bạn, vì có lẽ Rational AppScan Scan trước đã tạo ra các bảng có các dòng dữ liệu kiểm tra mới, bao gồm XSS, cái có thể gây ra lỗi kiểm tra. Trong trường hợp này thông báo Rational AppScan đã cộng 50 hoặc các nhập mục như thế vào bảng chứng khoản của bạn.

Khi các bảng của bạn vừa được kiểm tra xong và Ứng dụng Web Wealth của bạn vừa được kiểm tra xong, bạn cần được cài đặt toàn bộ cho lần quét khác.

Trong Rational AppScan, nhấn New hoặc File > New (xem Hình 34).

Hình 34. Chọn Mẫu Quét đã được tạo trước đó của bạn, WealthScan
Chọn Mẫu quét đã được tạo trước đó của bạn, WealthScan

Tiếp theo Wizard lại bắt đầu với thông tin mẫu quét trước và các cài đặt được tạo ra. Bạn muốn lặp lại lần quét tương tự chính xác thì hãy chấp nhận các cài đặt này và ấn Next 3 lần, chọn Application-Only và tiếp đến nhấn Finish.

Tiếp theo bạn được nhắc lưu lần quét thứ hai. Đặt tên cho nó là WeathScan2, sau đó quét sẽ bắt đầu.

Khi Quét kết thúc, bạn cần thông báo là các khiếm khuyết Bảo mật được tìm ra trước đó đã được xử lý hết và hiển thị một báo cáo xóa.

.

Bạn đã quét sạch thành công Ứng dụng Web Wealth khỏi tất cả những khiếm khuyết bảo mật đã biết rồi đấy!


Các lựa chọn và mở rộng báo cáo Rational Appscan

Trong phần cuối này, bạn sẽ nhìn thấy một vài báo cáo khác nhau mà bạn có thể tạo ra và các mở rộng mà bạn có thể sử dụng với Rational AppScan.

Các báo cáo Rational AppScan

Vì Ứng dụng Web của bạn không còn có khiếm khuyết bảo mật nữa, nên bạn có thể tạo ra một vài báo cáo Bảo đảm Chất lượng chuyên nghiệp. Các báo cáo như thế này được cung cấp như một phần của quy trình kiểm soát phát hành, miễn là ứng dụng Web của bạn đã được kiểm tra bảo mật thành công, và phù hợp để đưa lên Internet (xem Tải xuống để xem các báo cáo được tạo ra từ các lần quét của bạn).

Vậy nên khi lần quét cuối của bạn vẫn mở trong Rational AppScan, chọn Tools > Report.

Bây giờ hãy chọn một mẫu báo cáo phù hợp. Hình 35 trình bày một ví dụ về báo cáo chuẩn.

Ví dụ 35. Báo cáo chuẩn ngành
Industry standard reports

Hình 36 trình bày một danh sách các báo cáo phù hợp quy định khác nhau mà có thể chọn được.

Hình 36. Báo cáo phù hợp quy định
Báo cáo phù hợp quy định

Báo cáo phân tích Delta

Khi kiểm tra các ứng dụng Web lớn, có thể thực hiện một vài lần quét bằng Rational AppScan trước khi giải quyết tất cả các lỗi bảo mật. Nhân dịp này bạn sẽ thông báo khi bạn sửa một vấn đề bảo mật, một vài vấn đề bảo mật nữa xuất hiện. Do vậy, việc tạo ra các báo cáo phân tích delta nhằm thể hiện quy trình của bạn có thể rất hữu dụng.

Phân tích Delta so sánh lần quét trước với lần quét hiện tại; thật dễ dàng tạo ra chúng. Trong lần hiện tại của mình mà bạn muốn so sánh, hãy chọn Tools > Report > Delta Analysis Report, và sau đó điều hướng đến lần quét thứ hai mà bạn muốn so sánh trong báo cáo của mình (xem Hình 37).

Hình 37. Báo cáo phân tích Delta
Báo cáo phân tích Delta

Rational AppScan cho phép bạn tạo ra các mẫu báo cáo đặc trưng của riêng bạn (xem Hình 38), mà rất đơn giản và dễ học quy trình.

Hình 38. Tạo báo cáo của riêng bạn
Tạo báo cáo của riêng bạn

Các mở rộng Rational AppScan

Một tính năng có thể tùy biến hoàn toàn và hữu dụng nữa trong Rational AppScan là sử dụng các Rational AppScan mở rộng. Các mở rộng là các tiện ích bổ sung mà bổ sung tính năng phụ trợ và các khả năng của Rational AppScan (xem Hình 39). Chúng có thể bổ sung bất cứ thứ gì từ công cụ khai thác, đến thông báo thư điện tử và đến mở rộng yêu thích của tôi mà xuất thẳng các kết quả quét vào một bản trình diễn PowerPoint.

Hình 39. Chọn Extension Manager trong Rational AppScan
Chọn Extension Manager trong Rational AppScan

Các mở rộng Rational AppScan dễ viết và tích hợp trong Rational AppScan. IBM nắm giữ một số mở rộng có thể tải miễn phí (xem hình 40) có sẵn để tích hợp tại http://axf.watchfire.com/.

Hình 40. Chọn Install (Cài đặt)
Chọn Install (Cài đặt)

Một trong những mở rộng hữu hiệu nhất có sẵn để tải xuống từ IBM là Email Notification Extension (Mở rộng Thông báo Thư điện tử). Để giải thích làm thế nào chúng có thể tích hợp dễ dàng và cách thức chúng hoạt động như thế nào, ở đây có một bài hướng dẫn mở rộng nhỏ.

  1. Trước tiên trình duyệt đến http://axf.watchfire.com/ và tải Mail-E-Vent Extension.

    Mở rộng được tải xuống dưới dạng tệp tin nén, nhưng không giải nén tệp tin này, vì định dạng .zip phù hợp cho việc nhập vào Rational AppScan (xem Hình 41).

    Hình 41. Điều hướng đến tệp Mail-E-Vent Zip được tải xuống của bạn
    Điều hướng đến tệp Mail-E-Vent Zip được tải xuống của bạn
  2. Cài đặt Mail Extension.
  3. Đóng ứng dụng Rational AppScan và sau đó lại mở nó ra (xem Hình 42).
    Hình 42. Quay lại the Extension Manager và mở Cài đặt "Mail-E-Vent" mới
    mở Mail-E-Vent mới
  4. Chọn Save and Test Settings, và kiểm tra hộp thư đến của bạn để xem thư kiểm tra (xem Hình 43). Và đó là tất cả những gì có với nó!
    Hình 43. Thư kiểm tra thành công
    Thư kiểm tra thành công

Bây giờ Rational AppScan sẽ tự động gửi một thông báo thư (và một báo cáo nếu có thể), khi Quét kết thúc, khi Rational AppScan mất khả năng kết nối với ứng dụng Web, và quét tạm dừng yêu cầu nhắc đăng nhập được hoàn thành. Mở rộng đặc biệt này có thể vô cùng hữu ích khi quét các ứng dụng lớn hơn và phức tạp hơn, điều này có thể chỉ mất một lúc. Vì thế bạn có thể thoát ra và tiếp túc với các việc khác, an toàn khi biết bạn sẽ nhận được một thư điện tử nếu Rational AppScan "cần" bạn.

Cuối cùng bạn có thể tự tạo một mở rộng thật dễ dàng. IBM cung cấp mã nguồn cho tất cả các mở rộng làm nét nổi bật trên Website của họ, vì thế bạn có thể xem cách họ tạo ra đơn giản như thế nào. Cũng không mất thời gian để bạn có thể tích hợp Rational AppScan vào các hệ thống nghiệp vụ của bạn và tạo ra các tính năng bổ sung nhằm đáp ứng bất kỳ yêu cầu cụ thể nào mà bạn có.


Tóm tắt

Bạn chắc chắn là Ứng dụng Web Java Wealth của bạn được tạo trong Phần 1 của loạt bài này không có các khiếm khuyết bảo mật đã biết. Xem lại lần cuối Ứng dụng Web Wealth có thể được tải lên một máy chủ Web Internet, mà bạn không phải bận tâm đến việc nó bị hack ở cấp độ ứng dụng Web. Song song với bài hướng dẫn này, bạn đã học được tầm quan trọng của bảo mật ứng dụng Web, bỏ thời gian để thực hiện chiến lược triển khai Rational AppScan, tùy biến một mẫu quét, cách tiến hành quét, giải trình các kết quả, sửa chữa các khiếm khuyết trong mã trình ứng dụng Web, và tạo ra các báo cáo bảo mật.


Tải về

Mô tảTênKích thước
Generated reportsreports.zip875KB

Tài nguyên

Học tập

Lấy sản phẩm và công nghệ

Bình luận

developerWorks: Đăng nhập

Các trường được đánh dấu hoa thị là bắt buộc (*).


Bạn cần một ID của IBM?
Bạn quên định danh?


Bạn quên mật khẩu?
Đổi mật khẩu

Bằng việc nhấn Gửi, bạn đã đồng ý với các điều khoản sử dụng developerWorks Điều khoản sử dụng.

 


Ở lần bạn đăng nhập đầu tiên vào trang developerWorks, một hồ sơ cá nhân của bạn được tạo ra. Thông tin trong bản hồ sơ này (tên bạn, nước/vùng lãnh thổ, và tên cơ quan) sẽ được trưng ra cho mọi người và sẽ đi cùng các nội dung mà bạn đăng, trừ khi bạn chọn việc ẩn tên cơ quan của bạn. Bạn có thể cập nhật tài khoản trên trang IBM bất cứ khi nào.

Thông tin gửi đi được đảm bảo an toàn.

Chọn tên hiển thị của bạn



Lần đầu tiên bạn đăng nhập vào trang developerWorks, một bản trích ngang được tạo ra cho bạn, bạn cần phải chọn một tên để hiển thị. Tên hiển thị của bạn sẽ đi kèm theo các nội dung mà bạn đăng tải trên developerWorks.

Tên hiển thị cần có từ 3 đến 30 ký tự. Tên xuất hiện của bạn phải là duy nhất trên trang Cộng đồng developerWorks và vì lí do an ninh nó không phải là địa chỉ email của bạn.

Các trường được đánh dấu hoa thị là bắt buộc (*).

(Tên hiển thị cần có từ 3 đến 30 ký tự)

Bằng việc nhấn Gửi, bạn đã đồng ý với các điều khoản sử dụng developerWorks Điều khoản sử dụng.

 


Thông tin gửi đi được đảm bảo an toàn.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=70
Zone=Rational, Information Management, Công nghệ Java
ArticleID=424071
ArticleTitle=Tạo các ứng dụng bảo mật Java một cách hiệu quả, Phần 2
publish-date=08282009