Khi phát triển ứng dụng web, có một số lĩnh vực chính cần tập trung về bảo mật mạng:
Bảo vệ dữ liệu
- Mã hóa dữ liệu nhạy cảm cả khi truyền tải và lưu trữ
- Sử dụng HTTPS cho tất cả các giao tiếp
- Triển khai kiểm soát truy cập thích hợp
Xác thực và Ủy quyền (Authentication and Authorization)
- Sử dụng chính sách mật khẩu mạnh
- Triển khai xác thực đa yếu tố (multi-factor authentication)
- Quản lý phiên người dùng (user session) đúng cách
- Áp dụng nguyên tắc đặc quyền tối thiểu
Xác thực và Làm sạch đầu vào
- Xác thực tất cả đầu vào của người dùng ở cả phía máy khách và máy chủ
- Làm sạch dữ liệu để ngăn chặn các cuộc tấn công tiêm (SQL, XSS, v.v.)
def create_user
username = params[:username]
if username =~ /\A[a-zA-Z0-9_]+\z/
# Tên người dùng hợp lệ, tiếp tục
else
render json: { error: "Tên người dùng không hợp lệ" }, status: :unprocessable_entity
end
end
Bảo mật API
Xử lý lỗi và Ghi nhật ký
- Triển khai xử lý lỗi phù hợp mà không tiết lộ thông tin nhạy cảm
- Thiết lập các phương pháp ghi nhật ký an toàn
begin
# Một số hoạt động có thể gây ra ngoại lệ
rescue StandardError => e
Rails.logger.error("Đã xảy ra lỗi: #{e.message}")
render json: { error: "Đã xảy ra lỗi không mong muốn" }, status: :internal_server_error
end
Phụ thuộc bên thứ ba
Chia sẻ tài nguyên giữa các nguồn gốc (CORS)
Cấu hình chính sách CORS đúng cách để ngăn chặn truy cập trái phép
Bảo mật header
Triển khai các bảo mật header như Content Security Policy, X-Frame-Options, v.v.
# Trong config/initializers/secure_headers.rb
SecureHeaders::Configuration.default do |config|
config.x_frame_options = "DENY"
config.x_content_type_options = "nosniff"
config.x_xss_protection = "1; mode=block"
config.content_security_policy = {
default_src: %w('none'),
script_src: %w('self' 'unsafe-inline'),
connect_src: %w('self'),
img_src: %w('self'),
style_src: %w('self' 'unsafe-inline'),
font_src: %w('self')
}
end
Tải lên tệp
- Xác thực loại và kích thước tệp
- Quét các tệp đã tải lên để tìm phần mềm độc hại
Bảo mật cơ sở dữ liệu
- Sử dụng truy vấn tham số hóa (parameterized queries) để ngăn chặn SQL injection
- Triển khai kiểm soát truy cập thích hợp ở cấp độ cơ sở dữ liệu
Cấu hình máy chủ
- Bảo mật cài đặt máy chủ và vô hiệu hóa các dịch vụ không cần thiết
- Giữ phần mềm máy chủ luôn cập nhật
Kiểm tra và đánh giá bảo mật thường xuyên
- Tiến hành kiểm tra thâm nhập và đánh giá mã
- Sử dụng các công cụ quét bảo mật tự động