Xác thực (Validation)
Quá trình kiểm tra xem dữ liệu đầu vào có đáp ứng các định dạng, phạm vi và ràng buộc đã quy định hay không. Bao gồm giới hạn số ký tự, kiểm tra loại ký tự, xác thực định dạng và nhiều hơn nữa.
Xác thực (validation) là quá trình kiểm tra xem dữ liệu do người dùng nhập hoặc dữ liệu trao đổi giữa các hệ thống có đáp ứng các điều kiện mong đợi hay không. Địa chỉ email nhập vào biểu mẫu có đúng định dạng không, mật khẩu có đủ số ký tự tối thiểu không, số điện thoại có chỉ chứa chữ số không - tất cả đều là ví dụ cụ thể của xác thực.
Xác thực được chia thành hai loại theo vị trí thực thi. Xác thực phía client (client-side) trả về phản hồi ngay lập tức trên trình duyệt, cải thiện trải nghiệm người dùng. Các thuộc tính HTML5 như required, maxlength, pattern và kiểm tra động bằng JavaScript thuộc loại này. Xác thực phía server (server-side) thực hiện kiểm tra cuối cùng trên máy chủ, đảm bảo an ninh. Vì kiểm tra phía client có thể dễ dàng bị vượt qua bằng công cụ phát triển, xác thực phía server không thể bỏ qua.
Xác thực liên quan đến số ký tự là mẫu cơ bản và phổ biến nhất. Giới hạn 280 ký tự của Twitter (nay là X), giới hạn 70 ký tự (tiếng Nhật) của SMS, giới hạn cột VARCHAR trong cơ sở dữ liệu - mọi hệ thống đều có ràng buộc về số ký tự. Vấn đề ở đây là "đếm gì là 1 ký tự." Emoji 👨👩👧👦 trông như 1 ký tự nhưng trong Unicode gồm 7 code point (4 emoji người + 3 ZWJ). Tùy nền tảng mà đếm là 1 hay 7 ký tự, nên khi triển khai xác thực cần định nghĩa rõ ràng cách đếm ký tự.
Xác thực loại ký tự cũng quan trọng. Trong biểu mẫu tiếng Nhật, thường gặp các ràng buộc như "chỉ katakana toàn chiều rộng" hay "chỉ chữ-số nửa chiều rộng." Kiểm tra bằng biểu thức chính quy như /^[\u30A0-\u30FF]+$/ (katakana) hoặc /^[a-zA-Z0-9]+$/ (chữ-số nửa chiều rộng), nhưng cần chú ý các trường hợp đặc biệt của tiếng Nhật như ký tự kết hợp dakuten/handakuten và dấu kéo dài "ー". Với tiếng Việt, cần lưu ý các dấu thanh (sắc, huyền, hỏi, ngã, nặng) có thể được biểu diễn dưới dạng ký tự kết hợp (combining character) hoặc ký tự đã tổ hợp sẵn (precomposed), ảnh hưởng đến kết quả xác thực.
Xác thực định dạng kiểm tra các mẫu như địa chỉ email, URL, ngày tháng, mã bưu chính. Biểu thức chính quy cho email nếu tuân thủ hoàn toàn RFC 5321 sẽ cực kỳ phức tạp, nên trong thực tế thường dùng mẫu đơn giản để kiểm tra và cuối cùng xác minh khả năng gửi bằng email xác nhận.
Thiết kế thông báo lỗi xác thực cũng ảnh hưởng trực tiếp đến chất lượng. Thay vì "Lỗi nhập liệu", hãy viết cụ thể "Mật khẩu phải từ 8 ký tự trở lên, bao gồm cả chữ cái và số" để người dùng biết vấn đề là gì và cách khắc phục. Bản thân thông báo lỗi cũng có ràng buộc về số ký tự (chiều rộng hiển thị trên màn hình di động, độ dài tối đa của tooltip), đòi hỏi cách diễn đạt ngắn gọn nhưng rõ ràng.