API và tích hợp
Kiểm tra dữ liệu nhận vào tại ranh giới hệ thống
Dữ liệu nhập có thể đúng định dạng nhưng vẫn sai quyền sở hữu hoặc quy tắc nghiệp vụ. Kiểm tra cấu trúc, ý nghĩa, quyền và trạng thái quy trình trước khi thay đổi bản ghi hay tạo tác động ngoài.
Tích hợp nhận tệp trông hợp lệ rồi cập nhật nhầm tài khoản. Các trường có thể đúng kiểu, nhưng điều đó không khiến tham chiếu được cấp quyền hay chuyển trạng thái nghiệp vụ hợp lệ. Hãy coi dữ liệu nhập là yêu cầu từ bên ngoài, kể cả khi đến từ đối tác quen thuộc.
Kiểm tra theo các lớp riêng biệt
OWASP khuyến nghị kiểm tra độ dài, phạm vi, định dạng và kiểu đầu vào, cùng giới hạn kích thước yêu cầu.[7] Bắt đầu với giới hạn truyền tải và bộ phân tích trước khi xử lý nội dung lớn. Chỉ nhận loại nội dung và phiên bản schema được hỗ trợ. Báo cấu trúc sai thay vì chuyển sâu hơn vào ứng dụng.
Sau đó kiểm tra ý nghĩa: đơn vị, tiền tệ, múi giờ, giá trị cho phép và quan hệ giữa các trường. Tách xác thực và phân quyền khỏi kiểm tra cấu trúc. Biết đối tác nào gửi không chứng minh đối tác được sửa mọi tài khoản được tham chiếu. Áp dụng kiểm tra quyền trên bản ghi đích và thao tác thực tế.
Nêu rõ quy tắc nghiệp vụ
Nên có bước lưu trung gian cho lượt nhập cần người sửa hoặc ảnh hưởng nhiều bản ghi. Phân tích nội dung thành dạng kiểm soát được, gắn kết quả kiểm tra và cho xem trước khi ghi chính thức. Quyết định trường nào bên ngoài được cung cấp thay vì tự gán mọi thuộc tính nhận vào.
Kiểm tra chuyển trạng thái đề xuất bên cạnh giá trị cuối của trường. Yêu cầu chốt một mục chưa duyệt không được qua chỉ vì đã chốt là trạng thái được công nhận. Xác định lượt nhập phải thành công toàn bộ hay chấp nhận từng dòng. Chấp nhận từng phần cần kết quả dòng được lưu bền vững và cách gửi lại phần sửa mà không lặp thao tác đã chấp nhận.
Với lượt nhập kéo dài, kiểm tra lại quyền và trạng thái quan trọng khi ghi chính thức. Bản xem trước hợp lệ không nên trở thành quyền vĩnh viễn để áp dụng thay đổi sau khi quyền sở hữu hoặc trạng thái phê duyệt đã đổi.
Trả phản hồi hữu ích, có giới hạn
Dùng vị trí trường và nhóm lỗi ổn định để bên gửi sửa dữ liệu. Tránh lặp lại bí mật hoặc cả dòng nhạy cảm trong nhật ký và phản hồi. Lượt nhập lớn cũng cần giới hạn thời gian kiểm tra và lượng lỗi trả về, không chỉ số byte.
- Giới hạn số byte, số dòng, độ sâu lồng nhau và định dạng được hỗ trợ.
- Kiểm tra trường bắt buộc, quan hệ chéo, tham chiếu và quyền sở hữu theo khách hàng.
- Quy định rõ cách xử lý trường chưa biết và cách chuẩn hóa.
- Kiểm thử lỗi từng phần, gửi trùng và thay đổi giữa kiểm tra với ghi chính thức.
Ví dụ giả định: nhập giá nhà cung cấp
Ví dụ giả định: nền tảng mua hàng nhận bảng giá nhà cung cấp. Một dòng có giá thập phân dương, nhưng tiền tệ khác thỏa thuận và mặt hàng thuộc nhà cung cấp khác. Chỉ kiểm tra cấu trúc sẽ chấp nhận cả hai giá trị.
Báo cáo trung gian chỉ rõ dòng và từ chối tham chiếu không có quyền. Dòng hợp lệ vẫn chưa được ghi chính thức cho đến khi người mua duyệt chính sách nhập. Cách này thêm bước rà soát và có thể không cần cho nguồn tự động ít rủi ro với kiểm soát mạnh tương đương. Hãy bắt đầu bằng cách nêu những tác động không thể đảo ngược mà lượt nhập có thể tạo, rồi đặt kiểm tra và phê duyệt trước các tác động đó, không phải sau.