Tổng kết các biện pháp phòng thủ

Một phần của tài liệu bài tập môn học an ninh hệ thống mạng máy tính đề tài WEB APPLICATION SECURITY (Trang 39 - 42)

II. Một số cách tấn công ứng dụng web

9.Tổng kết các biện pháp phòng thủ

9.1. Đối với những nhà quản trị mạng

Người quản trị hệ thống cần xác định rõ những đối tượng nào là quan trọng nhất trong hệ thống cần bảo vệ, xác định rõ mức độ ưu tiên đối với những đối tượng đó. Ví dụ các đối tượng cần bảo vệ trên một hệ thống có thể là : Các máy chủ dịch vụ, các router, các điểm truy nhập hệ thống, các chương trình ứng dụng, hệ quản trị CSDL, các dịch vụ cung cấp, …

Cấu hình cho những ứng dụng: Thận trọng trong việc cấu hình trình chủ và một số ứng dụng. Trình chủ nên hay khơng nên cho thực thi những câu lệnh SSI. Ngoài ra phải thiết lập quyền cho ứng dụng chỉ chạy với một số quyền hạn nhất định như trong hệ quản trị cơ sở dữ liệu (không nên chạy với quyền admin) tránh trường hợp hacker có thể lợi dụng chạy những câu lệnh điều khiển hệ thống.

Xác định nguy cơ đối với hệ thống chính là xác định các lỗ hổng bảo mật các dịch vụ, ứng dụng trên lỗ hổng đó. Việc xác định đúng đắn các nguy cơ này giúp người quản trị có thể tránh được những cuộc tấn cơng mạng, hoặc có biện pháp bảo vệ đúng đắn bằng cách thường xuyên cập nhật tin tức trên các nhóm tin về bảo mật và từ nhà cung cấp phần mềm để phát hiện những lỗi của phần mềm sử dụng. Khi phát hiện lỗi cần cập nhật những phần mềm mới nhất để tránh trường hợp hacker sử dụng những lỗ hổng trong phiên bản phần mềm cũ.

Nắm được hoạt động của các phần mềm ứng dụng, ý nghĩa của các file cấu hình quan trọng(như etc/password), áp dụng các biện pháp bảo vệ cấu hình như sử dụng phương thức mã hóa hashing code(MD5).

Sử dụng mơt vài cơng cụ có thể phát hiện ra các hoạt động truy nhập không hợp lệ vào một hệ thống như logfile.

Kiểm soát chặt chẽ các quyền của tài khoản trên hệ thống, không sử dụng quyền root trong các trường hợp không cần thiết. Đối với các tài khoản không sử dụng trên hệ thống cần đổi mật khẩu hoặc hủy bỏ.

Quản lý mật khẩu một cách chặt chẽ:

 Buộc người sử dụng đổi mật khẩu trong một thời gian nhất định. Hầu hết các hệ thống hiện này đều hỗ trợ cơ chế này, nếu không thay đổi mật khẩu, tài khoản đó

khơng cịn giá trị trên hệ thống.

 Trong trường hợp người sử dụng bị mất mật khẩu, để cấp lại cần có các thủ tục khác để xác thực người xử dụng.

 Cần giám sát và theo dõi chặt chẽ các chương trình đổi mật khẩu, đây thường là mục tiêu để tấn công.

9.2. Đối với người thiết kế ứng dụng web

Người lập trình ứng dụng cần có những kĩ năng và hình thành thói quen lập trình bảo mật đúng đắn và chú ý quan trọng nhất ở những điểm sau đây:

- Kiểm tra đầu vào hợp lệ. - Bảo vệ hệ thống tập tin. - Bảo vệ cơ sở dữ liệu.

- Bảo vệ dữ liệu phiên làm việc.

- Bảo vệ trước các nguy cơ của kiểu tấn công Cross-Site-Script – XSS. - Kiểm tra các form gửi dữ liệu lên.

- Bảo vệ trước các yêu cầu giả mạo (Cross-Site-Request Forgeries - CSRF).

Kiểm tra đầu vào hợp lệ:

Kiểm tra đầu vào hợp lệ là thói quen quan trọng nhất mà bạn nên tuân thủ khi lập trình bảo mật, đơn giản là: Đừng tin tưởng vào người sử dụng. Người sử dụng ứng dụng hầu hết sử dụng ứng dụng theo đúng mong muốn nhưng cũng có những kẻ lợi dụng đầu vào để đưa vào hệ thống những dữ liệu có khả năng gây tổn hại đến hệ thống và những người dùng khác. Người lập trình cần bảo vệ hệ thống và thông tin người dùng trước những nguy cơ này.

 Sử dụng danh sách các giá trị đầu vào hợp lệ (white-list)  Kiểm tra hợp lệ lại các giá trị bị hạn chế

 Sử dụng các hàm thoát lập sẵn  Kiểm tra kiểu dữ liệu

Bảo vệ hệ thống tập tin

Ứng dụng của bạn nếu thiết kế cho phép xem các tập tin với nội dung nhập vào mà người sử dụng có thể thay đổi được thì ứng dụng đã đứng trước nguy cơ bị lộ thông tin của các tập tin quan trọng nếu trình chủ khơng được cấu hình hợp lý để bảo vệ hệ thống các tập tin. Nhưng đứng ở lập trường của một nhà lập trình ứng dụng, bạn nên tránh hồn tồn nguy cơ đó bằng việc lập trình ứng dụng trong việc sử lý tập tin một cách an toàn. Nên dùng các biểu thức chính quy để đảm bảo đầu vào hợp lệ hoặc tránh dùng biến động trong các câu lệnh gọi tập tin,...

Truy xuất CSDL trong ứng dụng web là một phần không thể thiếu đối với web động, nhưng việc truy xuất CSDL cũng có những nguy cơ tiềm tàng về bảo mật nếu bạn khơng kiểm sốt chặt chẽ được các truy vấn, khiến hacker có thể tùy biến nội dung câu truy vấn và lấy thông tin từ CSDL hoặc nghiêm trọng hơn là chỉnh sửa hay xóa hồn tồn CSDL của bạn. Vậy để an toàn trong trường hợp này, bạn nên tránh việc đưa các biến động vào câu truy vấn, dùng các hàm lọc dữ liệu như mysql_real_escape_string() để đảm bảo câu truy vấn theo đúng ý bạn.

Bảo vệ dữ liệu phiên làm việc

Phiên làm việc là một cách hữu hiệu để xác nhận user, nó được lưu trữ ở một thư mục tạm thời, nên nó cũng là mục đích của nhiều hacker, để đảm bảo dữ liệu chứa trong phiên làm việc được an toàn, bạn nên mã hóa chúng, nhưng cũng có một cách khác là lưu trữ dữ liệu phiên làm việc ở một nơi an toàn hơn như CSDL.

Bảo vệ trước các nguy cơ của kiểu tấn công Cross-Site-Script - XSS

Lỗ hổng XSS chiếm một tỷ lệ lớn trong tất cả các lỗ hổng của web application, XSS được thực hiện khi hacker có khả năng thêm vào mã nguồn của bạn 1 đoạn html, đoạn mã html đó có thể chứa javasript, mức độ nguy hiểm của hình thức này rất đa dạng tùy vào khả năng của người khai thác nó. Vậy để trang web của bạn đảm bảo an toàn trước hình thức tấn cơng này, bạn nên lọc những tham số đầu vào nhằm loại bỏ những đoạn mã nguy hiểm, và mã hóa các biến trước khi được in ra trình duyệt bằng hàm htmlentities().

Kiểm tra các form gửi dữ liệu lên

Form là thành phần thu thập thơng tin từ người dùng, nó có thể dễ dàng bị giả mạo bằng cách lưu nội dung form về máy tính và chỉnh sửa các tham số, nên việc tin tưởng hoàn toàn vào dữ liệu từ form là một sai lầm nghiêm trọng. Ta có thể thấy một trường hợp là các hộp thả xuống hoặc những nút radio trong form, bạn chắc đã nghĩ rằng đầu vào đã được giới hạn theo ý bạn, nhưng chúng hồn tồn có thể bị thay đổi với những form giả mạo. Ta có một cách để khá hữu hiệu để tránh trường hợp này đó là dùng thẻ bài (token) sử dụng một lần, thẻ bài này thay đổi liên tục và điều đó làm cho việc giả mạo form trở nên bất khả thi hoặc vơ cùng khó để giả mạo (adsbygoogle = window.adsbygoogle || []).push({});

Bảo vệ ứng dụng trước các yêu cầu giả mạo (Cross-Site-Request Forgeries)

Người sử dụng có thể thực hiện các hành động nhạy cảm mà không hề hay biết nếu bị hacker lừa đảo với hình thức tấn cơng CSRF này. Hacker lợi dùng quyền của người dùng trên hệ thống để thực hiện những hành động mà chúng không thể làm được. Và để chống lại hình thức tấn công này, thẻ bài sử dụng 1 lần cũng là 1 cách thức rất hữu hiệu.

Đưa ra những lời cảnh báo cho người sử dụng web rủi ro có thể xáy ra, đặc biệt nên chú ý khi cho phép trình duyệt thực thi ngơn ngữ trình khách trên máy chủ, vì khả năng lợi dụng ngôn ngữ này để thực hiện các hình thức tấn cơng như XSS hay sessionID.

Sau khi dùng xong ứng dụng cần thoát ra khỏi hệ thống theo quy định (log out) để tránh những nội dung quan trọng bị lưu lại, tránh khả năng hacker dùng nhưng thơng tin đó để tiếp tục sử dụng ứng dụng.

Quản lý tài khoản:

Người sử dụng cần nhận thức được vai trò quan trọng trong việc bảo vệ tài khoản các nhân. Các hoạt động quản ý tài khoản bảo gồm việc đặt mật khẩu, thay đổi mật khẩu định kì, …

Nên có những kiến thức nhất định để có thể phát hiện ra nếu có người khác sử dụng tài khoản của mình thực hiện những hành động khác

Một phần của tài liệu bài tập môn học an ninh hệ thống mạng máy tính đề tài WEB APPLICATION SECURITY (Trang 39 - 42)