12/08/2018, 14:53

Cách để kiểm thử tính bảo mật của ứng dụng web và desktop- Các kỹ thuật kiểm thử bảo mật

Ngành công nghiệp phần mềm đã đạt được sự công nhận bền vững trong thời đại này. Các hệ thống ERP dựa trên nền tảng web được sử dụng ngày nay là bằng chứng tốt nhất cho thấy CNTT đã cách mạng hóa toàn cầu của chúng ta. Ngày nay, các trang web không chỉ dành cho quảng cáo hoặc tiếp thị mà còn là ...

Ngành công nghiệp phần mềm đã đạt được sự công nhận bền vững trong thời đại này. Các hệ thống ERP dựa trên nền tảng web được sử dụng ngày nay là bằng chứng tốt nhất cho thấy CNTT đã cách mạng hóa toàn cầu của chúng ta. Ngày nay, các trang web không chỉ dành cho quảng cáo hoặc tiếp thị mà còn là những công cụ mạnh hơn để đáp ứng nhu cầu kinh doanh cần thiết. Các hệ thống tính lương dựa trên Web, các Trung tâm Mua sắm, Ngân hàng, Thương mại không chỉ được sử dụng bởi các tổ chức mà còn được bán như các sản phẩm hiện nay. Điều này có nghĩa là các ứng dụng trực tuyến đã thu được sự tin tưởng của khách hàng và người dùng về tính năng quan trọng chủa chúng được biết đến với cái tên Bảo mật. Không nghi ngờ gì nữa, yếu tố bảo mật là giá trị cốt lõi cho các ứng dụng desktop. Tuy nhiên, khi chúng ta nói về web, tầm quan trọng của bảo mật tăng theo cấp số nhân. Nếu một hệ thống trực tuyến không thể bảo vệ dữ liệu giao dịch, không một ai nghĩ đến việc sử dụng nó. Bảo mật không phải là một từ để tìm kiếm định nghĩa của nó, cũng không phải là một khái niệm tinh tế. Tuy nhiên, tôi muốn liệt kê một số thành phần của bảo mật. Một số ví dụ về các lỗi bảo mật trong một ứng dung:

  1. Hệ thống Quản lý Sinh viên không an toàn nếu nhánh 'Nhập học' có thể chỉnh sửa dữ liệu của nhánh 'Kiểm tra'
  2. Một hệ thống ERP không an toàn nếu DEO (nhà điều hành nhập dữ liệu) có thể tạo ra 'Báo cáo'
  3. Trung tâm mua sắm trực tuyến không có bảo mật nếu Chi tiết thẻ tín dụng của khách hàng không được mã hóa
  4. Một phần mềm tùy chỉnh có tính bảo mật không đầy đủ nếu một truy vấn SQL truy xuất mật khẩu thực sự của người dùng Định nghĩa về kiểm thử bảo mật: Bây giờ, tôi trình bày cho bạn một định nghĩa đơn giản nhất về Bảo mật theo cách riêng của tôi. "Bảo mật có nghĩa là truy câp được phép thì được cấp quyền để bảo vệ dữ liệu và những người truy cập trái phép bị hạn chế". Vì vậy, nó có hai khía cạnh chính; Đầu tiên là bảo vệ dữ liệu và thứ hai là truy cập vào dữ liệu đó. Hơn nữa, cho dù ứng dụng desktop hay ứng dụng web, bảo mật xoay quanh hai khía cạnh nói trên. Chúng ta hãy có cái nhìn tổng quan về các khía cạnh bảo mật cho cả ứng dụng desktop và ứng dụng . Kiểm thử bảo mật ứng dụng web và ứng dụng desktop: Một ứng dụng desktop nên được bảo mật không chỉ liên quan đến truy cập của nó mà còn đối với việc tổ chức và việc lưu trữ dữ liệu của nó. Tương tự, một ứng dụng web đòi hỏi sự bảo mật nhiều hơn về truy cập của nó, cùng với việc bảo vệ dữ liệu. Nhà phát triển web nên làm cho ứng dụng miễn nhiễm với SQL Injections, Brute Force Attacks và XSS (cross-site scripting). Tương tự như vậy, nếu ứng dụng web tạo điều kiện cho các điểm truy cập từ xa thì những điều này cũng phải được đảm bảo.

Bây giờ tôi sẽ giải thích làm thế nào các tính năng của bảo mật được thực hiện trong ứng dụng phần mềm và làm thế nào để kiểm thử bảo mật. Tôi tập trung vào Whats và Hows của thử nghiệm bảo mật. Các kỹ thuật kiểm thử bảo mật: 1)Truy cập tới ứng dụng Cho dù đó là ứng dụng trên desktop hay ứng dung web, bảo mật truy cập được thực hiện bởi 'các roles và Quản lý Quyền'. Nó thường được thực hiện ngầm trong khi đang bao phủ các chức năng, ví dụ như một Hệ thống Quản lý Bệnh viện, một nhân viên tiếp tân ít quan tâm nhất đến các bài kiểm tra trong phòng thí nghiệm vì công việc của họ chỉ là đăng ký bệnh nhân và lên lịch hẹn với bác sĩ. Vì vậy, tất cả các menu, các forms và màn hình liên quan đến các bài kiểm tra trong phòng thí nghiệm sẽ không có sẵn cho role 'tiếp tân'. Do đó, việc thực hiện đúng role và quyền sẽ đảm bảo tính an toàn của việc tiếp cận. Làm thế nào để kiểm thử: Để kiểm thử điều này, kiểm thử kỹ lưỡng tất cả các roles và các quyền nên được thực hiện. Người kiểm thử nên tạo nhiều tài khoản người dùng với các roles khác nhau cũng như nhiều roles. Sau đó, người kiểm thử nên sử dụng ứng dụng với sự giúp đỡ của các tài khoản này và phải xác minh rằng mọi role đều có quyền truy cập vào các mô-đun, màn hình, các forms và menu riêng của mình. Nếu người kiểm thử tìm thấy bất kỳ xung đột thì phải log một vấn đề bảo mật 2. Bảo vệ dữ liệu:

Có thêm ba khía cạnh của bảo mật dữ liệu. Đầu tiên là người dùng có thể xem hoặc chỉ sử dụng dữ liệu mà họ được cho sử dụng. Điều này cũng được bảo đảm bởi các vai trò và quyền, ví dụ: Một TSR (đại diện bán hàng qua điện thoại) của một công ty có thể xem dữ liệu cổ phiếu có sẵn, nhưng không thể thấy được nguyên liệu thô được mua để sản xuất.

Vì vậy, thử nghiệm về khía cạnh này đã được giải thích ở trên. Khía cạnh thứ hai của bảo vệ dữ liệu liên quan đến cách dữ liệu được lưu trữ trong DB. Tất cả dữ liệu nhạy cảm phải được mã hóa để đảm bảo an toàn. Sự mã hóa nên mạnh mẽ một cách đặc biệt cho các dữ liệu nhạy cảm như mật khẩu của tài khoản người dùng, số thẻ tín dụng hoặc các thông tin quan trọng khác của doanh nghiệp. Thứ ba và khía cạnh cuối là mở rộng khía cạnh thứ hai này. Các biện pháp bảo mật thích hợp phải được thông qua khi luồng dữ liệu nhạy cảm hoặc dữ liệu kinh doanh quan trọng xảy ra. Cho dù dữ liệu này trôi nổi giữa các mô đun khác nhau của cùng một ứng dụng, hoặc được truyền đến các ứng dụng khác nhau, nó phải được mã hóa để làm cho nó an toàn. Làm thế nào để kiểm tra sự bảo vệ dữ liệu: Người kiểm thử nên truy vấn cơ sở dữ liệu cho 'mật khẩu' của tài khoản người dùng, thông tin thanh toán của khách hàng, dữ liệu kinh doanh quan trọng và nhạy cảm khác và phải xác minh rằng tất cả các dữ liệu đó được lưu ở dạng mã hoá trong DB. Tương tự như vậy, người kiểm thử phải xác minh rằng giữa các forms khác nhau hoặc màn hình, dữ liệu được truyền sau khi mã hóa thích hợp. Hơn nữa, người kiểm thử phải đảm bảo rằng các dữ liệu được mã hóa được giải mã đúng tại đích. Cần lưu ý đặc biệt về các hành động 'submit' khác nhau. Người kiểm thử phải xác minh rằng khi thông tin được truyền giữa client và server, nó không được hiển thị trong thanh địa chỉ của trình duyệt web ở định dạng dễ hiểu. Nếu bất kỳ xác minh nào thất bại, ứng dụng chắc chắn có lỗ hổng bảo mật. 3. Tấn công Brute-Force:

Brute Force Attack hầu hết được thực hiện bởi một số công cụ phần mềm. Khái niệm này là sử dụng ID người dùng hợp lệ, phần mềm cố gắng đoán mật khẩu liên quan bằng cách cố gắng đăng nhập nhiều lần. Một ví dụ đơn giản về bảo mật chống lại các cuộc tấn công như vậy là đình chỉ tài khoản trong một khoảng thời gian ngắn như tất cả các ứng dụng gửi thư như 'Yahoo' và 'Hotmail' đều làm. Nếu, một số lần cố gắng liên tục (chủ yếu là 3) không đăng nhập thành công, thì tài khoản đó bị chặn lại trong một khoảng thời gian (30 phút đến 24 giờ). Cách kiểm tra Cuộc tấn công Brute-Force: Người kiểm thử phải xác minh rằng có một số cơ chế tạm ngưng tài khoản có sẵn và đang làm việc chính xác. Người kiểm thử cố gắng để đăng nhập với ID người dùng và Mật khẩu không hợp lệ để đảm bảo rằng phần mềm ứng dụng chặn các tài khoản liên tục cố gắng đăng nhập với thông tin không hợp lệ. Nếu ứng dụng đang làm như vậy, nó là an toàn chống lại cuộc tấn công Brute-Force. Nếu không, lỗ hổng bảo mật này phải được người kiểm thử báo cáo.

Ba khía cạnh bảo mật trên cần được tính đến cho cả ứng dụng web và ứng dụng desktop, các điểm dưới đây chỉ liên quan đến các ứng dụng web. 4. SQL Injection và XSS (cross-site scripting):

Về mặt khái niệm, chủ đề của cả hai nỗ lực tấn công này là tương tự nhau, vì vậy chúng được thảo luận cùng nhau. Trong cách tiếp cận này, các hacker sử dụng mã độc để vận dụng trang web. Có một số cách chống lại những nỗ lực đó. Đối với tất cả các trường đầu vào của trang web, độ dài trường nên được xác định đủ nhỏ để hạn chế nhập vào bất kỳ scipt nào ví dụ:Trường Last Name phải có chiều dài 30 thay vì 255. Có thể có một số trường input nơi có dữ liệu nhập lớn, đối với các trường đó thì việc validation dữ liệu hợp lệ phải được thực hiện trước khi lưu dữ liệu trong ứng dụng. Hơn nữa, trong các trường như vậy, bất kỳ thẻ html hoặc đầu vào thẻ script phải bị cấm. Để kích hoạt các cuộc tấn công XSS, ứng dụng nên loại bỏ script trực tiếp từ các ứng dụng không xác định hoặc không đáng tin cậy. Làm thế nào để kiểm tra SQL Injection và XSS: Người kiểm thử phải đảm bảo rằng độ dài tối đa của tất cả các trường input được xác định và thực hiện và nên đảm bảo rằng chiều dài quy định của các trường đầu vào không chứa bất kỳ input script cũng như input thẻ. Cả hai đều có thể được kiểm tra một cách dễ dàng Nếu 20 là độ dài tối đa được chỉ định cho trường 'Tên'; Và chuỗi đầu vào "<p> thequickbrownfoxjumpsoverthelazydog" có thể xác minh cả hai ràng buộc này. Nó cũng phải được xác minh bởi người kiểm thử rằng ứng dụng không hỗ trợ phương pháp truy cập nặc danh. Trong trường hợp bất kỳ lỗ hổng nào tồn tại, ứng dụng đang gặp nguy hiểm.

  1. Các Điểm Truy cập Dịch vụ (Niêm phong và Bảo mật Mở)

Ngày nay, các doanh nghiệp phụ thuộc và hợp tác với nhau, cũng giống như những ứng dụng đặc biệt là các trang web. Trong trường hợp này, cả cộng tác viên cần xác định và công bố một số điểm truy cập cho nhau. Cho đến nay kịch bản này có vẻ khá đơn giản và minh bạch nhưng đối với một số sản phẩm dựa trên web như giao dịch chứng khoán, mọi việc không đơn giản và dễ dàng. Khi có rất nhiều đối tượng mục tiêu, các điểm truy cập phải mở đủ để tạo thuận lợi cho tất cả người dùng, đủ sức đáp ứng yêu cầu của tất cả người dùng và đủ an toàn để đối phó với bất kỳ thử nghiệm bảo mật nào.

Làm thế nào để kiểm thử điểm truy cập dịch vụ: Để tôi giải thích nó với ví dụ về ứng dụng web giao dịch chứng khoán; Một nhà đầu tư (những người muốn mua cổ phần) nên có quyền truy cập vào dữ liệu hiện tại và dữ liệu lịch sử của giá cổ phiếu. Người dùng phải đưa ra điều kiện để tải dữ liệu lịch sử này. Điều này đòi hỏi ứng dụng phải được mở đủ. Bằng cách đảm bảo và đảm bảo an toàn, tôi muốn nói rằng ứng dụng nên tạo điều kiện cho các nhà đầu tư tự do buôn bán (theo quy định của pháp luật). Họ có thể mua hoặc bán 24/7 và dữ liệu của các giao dịch phải miễn nhiễm với bất kỳ tấn công nào. Hơn nữa, một số lượng lớn người dùng sẽ tương tác với ứng dụng một cách đồng thời, vì vậy ứng dụng cần cung cấp đủ số điểm truy cập để giải trí cho tất cả người dùng.

Trong một số trường hợp, các điểm truy cập này có thể được niêm phong cho các ứng dụng hoặc người không mong muốn. Điều này phụ thuộc vào lĩnh vực kinh doanh của ứng dụng và người dùng của nó, ví dụ: Một tùy chỉnh hệ thống quản lý văn phòng dựa trên Web có thể nhận ra người dùng dựa trên Địa chỉ IP và từ chối thiết lập kết nối với tất cả các hệ thống khác không phải nằm trong dải IP hợp lệ cho ứng dụng đó.

Người kiểm thử phải đảm bảo rằng tất cả các truy cập liên mạng và mạng nội bộ đến ứng dụng là từ các ứng dụng, máy (IP) và người dùng tin cậy. Để xác minh rằng một điểm truy cập mở là đủ an toàn, người thử phải cố gắng truy cập nó từ các máy khác nhau có cả địa chỉ IP tin cậy và không đáng tin cậy. Các loại giao dịch thời gian thực khác nhau nên được thử nghiệm với số lượng lớn để có thể tin tưởng vào hiệu suất của ứng dụng. Bằng cách đó, sức chứa của các điểm truy cập của ứng dụng cũng sẽ được quan sát một cách rõ ràng.

Người kiểm thử phải đảm bảo rằng ứng dụng giải quyết tất cả các yêu cầu truyền thông từ các IP và ứng dụng tin cậy trong khi tất cả các yêu cầu khác bị từ chối. Tương tự, nếu ứng dụng có một số điểm truy cập mở, thì người kiểm tra phải đảm bảo rằng nó cho phép (nếu cần) tải lên dữ liệu của người dùng theo cách an toàn. Bằng cách an toàn này tôi muốn nói đến :giới hạn kích cỡ file,sự hạn chế cách kiểu file và việc quét file đã tải lên cho vi rút hoặc các mối đe dọa bảo mật khác. Đây là tất cả các cách mà một người kiểm thử có thể kiểm tra tính bảo mật của một ứng dụng đối với các điểm truy cập của nó.

Refer: http://www.softwaretestinghelp.com/how-to-test-application-security-web-and-desktop-application-security-testing-techniques/

0