Lộ trình Bảo mật API
Hướng dẫn từng bước để trở thành một nhà phát triển Android.
Hỏi AI về Lộ trình Bảo mật API
Chú giải
Đề xuất
Lựa chọn thay thế
Tùy chọn
1 Xác thực
Chung:
Tránh 'Xác thực cơ bản', sử dụng các giao thức tiêu chuẩn (ví dụ: JWT, OAuth).
Đừng phát minh lại bánh xe trong các cơ chế xác thực.
Sử dụng 'Thử lại tối đa' và tính năng khóa trong Đăng nhập.
Sử dụng mã hóa trên tất cả dữ liệu nhạy cảm.
JWT (JSON Web Token):
Sử dụng 'JWT Secret' tốt để gây khó khăn cho các cuộc tấn công brute force.
Không trích xuất thuật toán từ header; sử dụng backend.
Đặt thời gian hết hạn token (TTL, RTTL) càng ngắn càng tốt.
Tránh lưu trữ dữ liệu nhạy cảm trong payload của JWT.
Giữ payload nhỏ để giảm kích thước của token JWT.
OAuth:
Luôn xác thực 'redirect_uri' ở phía máy chủ.
Tránh 'response_type=token' và cố gắng đổi lấy code.
Sử dụng tham số 'state' để ngăn chặn các cuộc tấn công CSRF.
Có một scope mặc định và xác thực scope cho mỗi ứng dụng.
2 Kiểm soát truy cập
Giới hạn yêu cầu (throttling) để tránh các cuộc tấn công DDoS / Brute Force.
Sử dụng HTTPS ở phía máy chủ và các bộ mã hóa an toàn.
Sử dụng header HSTS với SSL để tránh các cuộc tấn công SSL Strip.
Tắt liệt kê thư mục.
API riêng tư chỉ nên được truy cập từ các IP trong danh sách trắng.
3 Đầu vào & Xử lý
Xác thực đầu vào:
Sử dụng các phương thức HTTP phù hợp cho hoạt động (GET, POST, PUT, DELETE).
Xác thực 'content-type' trên header của yêu cầu.
Xác thực đầu vào của người dùng để tránh các lỗ hổng phổ biến (ví dụ: XSS, SQLi).
Sử dụng header Authorization tiêu chuẩn cho dữ liệu nhạy cảm.
Sử dụng dịch vụ API Gateway để bật bộ nhớ đệm và giới hạn tốc độ.
Xử lý & Đầu ra:
Chỉ sử dụng mã hóa phía máy chủ.
Ưu tiên sử dụng UUID hơn là ID tự tăng trong URL tài nguyên.
Tắt phân tích thực thể nếu bạn đang phân tích XML để tránh các cuộc tấn công XXE.
Sử dụng CDN để tải tệp lên.
Tắt chế độ gỡ lỗi trong môi trường sản xuất.
Gửi header 'X-Content-Type-Options: nosniff'.
Gửi header 'X-Frame-Options: deny'.
Gửi header 'Content-Security-Policy: default-src 'none''.
Xóa các header nhận dạng (ví dụ: X-Powered-By).
Bắt buộc 'content-type' cho phản hồi của bạn.
Tránh trả về dữ liệu nhạy cảm (thông tin xác thực, token bảo mật, v.v.).
Trả về mã phản hồi phù hợp theo hoạt động.
4 CI & CD
Kiểm tra thiết kế và triển khai của bạn bằng các bài kiểm tra đơn vị/tích hợp.
Sử dụng quy trình xem xét mã và không chấp nhận tự phê duyệt.
Liên tục chạy phân tích bảo mật trên mã của bạn.
Kiểm tra các phụ thuộc của bạn để tìm các lỗ hổng đã biết.
Thiết kế một giải pháp khôi phục cho các lần triển khai.
5 Giám sát
Sử dụng đăng nhập tập trung cho tất cả các dịch vụ và thành phần.
Sử dụng các tác nhân để giám sát tất cả các yêu cầu, phản hồi và lỗi.
Sử dụng cảnh báo cho SMS, Slack, Email, Kibana, Cloudwatch, v.v.
Đảm bảo rằng bạn không ghi nhật ký bất kỳ dữ liệu nhạy cảm nào.
Sử dụng hệ thống IDS và/hoặc IPS để giám sát mọi thứ.