Bảo mật ứng dụng web doanh nghiệp: 10 điểm kiểm tra trước khi lên production

Ứng dụng nội bộ thường được cho là an toàn vì chỉ nhân viên dùng, nhưng đa số sự cố bắt đầu từ bên trong. Mười điểm kiểm tra và những việc nên làm định kỳ.

Bảo mật ứng dụng web doanh nghiệp: 10 điểm kiểm tra trước khi lên production

Ứng dụng nội bộ thường được cho là an toàn vì "chỉ nhân viên dùng". Thực tế, đa số sự cố bắt đầu từ bên trong: một tài khoản bị lộ mật khẩu, một đường dẫn đoán được, một tệp đính kèm tải về không kiểm tra quyền. Dưới đây là mười điểm nên kiểm tra trước khi đưa một ứng dụng quản trị lên môi trường thật.

1. Mặc định từ chối ở phía máy chủ

Mọi endpoint phải yêu cầu quyền tường minh. Endpoint mới quên gắn quyền thì phải bị chặn, không phải mở cho tất cả. Kiểm tra bằng cách gọi thử toàn bộ endpoint bằng một tài khoản không có quyền nào và xác nhận đều bị từ chối.

2. Kiểm tra quyền trên từng bản ghi

Chặn theo màn hình là chưa đủ. Với mỗi yêu cầu có định danh bản ghi, máy chủ phải kiểm tra người gọi có được xem bản ghi cụ thể đó không. Đây là lỗ hổng phổ biến nhất trong ứng dụng doanh nghiệp: đổi một con số trên đường dẫn là xem được hồ sơ của phòng khác.

3. Phiên đăng nhập và mã thông báo

  • Thời hạn ngắn cho mã truy cập, kèm cơ chế làm mới; thu hồi được khi nhân sự nghỉ việc.
  • Đăng xuất phải vô hiệu hoá phía máy chủ, không chỉ xoá ở trình duyệt.
  • Giới hạn số lần đăng nhập sai theo tài khoản và theo địa chỉ mạng, để chống dò mật khẩu.
  • Bật xác thực hai yếu tố cho nhóm tài khoản quyền cao.

4. Dữ liệu đầu vào

Kiểm tra dữ liệu ở phía máy chủ, luôn luôn — kiểm tra ở trình duyệt chỉ để trải nghiệm tốt hơn, không có giá trị bảo mật. Với truy vấn dữ liệu, dùng tham số thay vì ghép chuỗi. Với nội dung do người dùng nhập và sẽ hiển thị lại trên trang, phải làm sạch theo danh sách thẻ được phép, không theo danh sách thẻ bị cấm.

5. Tệp tải lên

  • Kiểm tra định dạng bằng các byte đầu tệp, không tin phần mở rộng.
  • Giới hạn dung lượng và số lượng.
  • Lưu ngoài thư mục web, đặt tên theo định danh sinh ra chứ không theo tên người dùng gửi lên.
  • Khi tải xuống, kiểm tra quyền như mọi dữ liệu khác; đường dẫn tệp không được là thứ đoán ra.

6. Bí mật cấu hình

Chuỗi kết nối, khoá ký, mật khẩu dịch vụ không nằm trong mã nguồn và không nằm trong tệp cấu hình đưa lên kho mã. Dùng biến môi trường hoặc kho bí mật, và đổi khoá định kỳ. Một lần vô ý đẩy khoá lên kho mã công khai là đủ để phải đổi toàn bộ.

7. Ghi nhật ký đúng mức

Nhật ký phải đủ để dựng lại chuyện đã xảy ra, nhưng không được trở thành nơi rò rỉ dữ liệu.
  • Ghi: ai, làm gì, lúc nào, trên bản ghi nào, thành công hay bị từ chối.
  • Không ghi: mật khẩu, mã thông báo, số thẻ, nội dung nhạy cảm.
  • Đặc biệt ghi lại các lần bị từ chối quyền — chuỗi từ chối bất thường là dấu hiệu sớm của sự cố.

8. Xử lý lỗi không lộ thông tin

Thông báo lỗi trả về người dùng phải ngắn và trung tính. Vết ngăn xếp, tên bảng, câu truy vấn chỉ nên nằm trong nhật ký máy chủ. Trang lỗi mặc định của framework nên tắt ở môi trường thật.

9. Kết nối và tiêu đề bảo vệ

  • Bắt buộc HTTPS, chuyển hướng toàn bộ lưu lượng, bật HSTS.
  • Đặt chính sách nguồn nội dung để hạn chế mã kịch bản từ bên ngoài.
  • Cấu hình CORS theo danh sách tên miền cụ thể, không dùng dấu sao cho ứng dụng có xác thực.
  • Giới hạn tần suất gọi cho những điểm nhạy cảm như đăng nhập, quên mật khẩu, gửi biểu mẫu công khai.

10. Sao lưu và diễn tập khôi phục

Sao lưu chưa từng khôi phục thử thì chưa phải sao lưu. Ít nhất một lần, hãy dựng lại toàn bộ hệ thống từ bản sao lưu trên một máy khác và đo xem mất bao lâu. Con số đó mới là thời gian khôi phục thật của doanh nghiệp bạn.

Việc nên làm định kỳ

  • Cập nhật thư viện và nền tảng — phần lớn lỗ hổng bị khai thác là lỗ hổng đã có bản vá.
  • Rà soát danh sách tài khoản, đặc biệt là tài khoản của người đã nghỉ và tài khoản dịch vụ.
  • Kiểm tra lại quyền của nhóm quản trị mỗi quý.
  • Diễn tập một tình huống sự cố: ai phát hiện, báo cho ai, khoá hệ thống bằng cách nào.

Bảo mật không phải một hạng mục làm xong rồi thôi, mà là vài thói quen nhỏ lặp lại đều đặn. Mười điểm trên không yêu cầu công cụ đắt tiền — chủ yếu là kỷ luật khi viết mã và khi vận hành.

Quay lại danh sách bài viết

Cần tư vấn cho bài toán cụ thể của bạn?

Những gì viết ở đây là nguyên tắc chung. Doanh nghiệp của bạn có bối cảnh riêng — hãy để đội ngũ NinePlus trao đổi trực tiếp.