Một tên công ty bắt đầu bằng dấu bằng vẫn có thể là chuỗi văn bản hợp lệ trong cơ sở dữ liệu. Khi xuất CSV rồi mở bằng bảng tính, chuỗi đó có thể được hiểu thành công thức. Chống formula injection CSV vì thế là quyết định ở ranh giới xuất dữ liệu, không chỉ là thêm dấu ngoặc kép cho file.
Trước hết hỏi file được dùng để làm gì
File để nhân viên đọc bằng Excel và file để một hệ thống khác nhập lại có yêu cầu khác nhau. Bản đọc cần giữ dữ liệu như văn bản tại ô có nguy cơ; bản trao đổi cần bảo toàn giá trị theo hợp đồng của bên nhận. Một ký tự được thêm để ngăn thực thi công thức có thể trở thành dữ liệu thật ở lần import sau. Không dùng một bản đã biến đổi cho cả hai mục đích mà không ghi rõ.
OWASP cảnh báo dữ liệu không tin cậy trong CSV có thể kích hoạt công thức và một số cách escape không bền qua thao tác lưu rồi mở lại. Đây không phải cam kết rằng cứ có dấu cộng hoặc dấu trừ là dữ liệu độc hại. Một số âm trong cột số có thể hoàn toàn đúng; chính sách phải phân biệt kiểu cột và nơi sử dụng.
Ma trận xuất file để chốt với người nhận
| Đầu ra | Điều cần bảo toàn | Bằng chứng cần có |
|---|---|---|
| Bản đọc bằng bảng tính | Nội dung hiển thị như văn bản ở cột tự do | Ứng dụng và phiên bản đã mở thử |
| Bản nhập lại | Giá trị gốc, kiểu cột, mã hóa | Readback từ môi trường nhận được phép |
| Bản lưu nguồn | Không ghi đè bằng giá trị đã escape | Hash và phiên bản nguồn |

Ví dụ giả định: mã tham chiếu giống công thức
Một phiếu có mã văn bản =1+2. Trong bản nguồn, mã vẫn phải giữ nguyên nếu đó là dữ liệu nghiệp vụ được xác nhận. Bản dùng để đọc cần biểu diễn mã như văn bản theo cách đã kiểm chứng với phần mềm nhận. Lần nhập lại phải lấy bản trao đổi đã thống nhất, không lấy một file người dùng vừa mở và lưu bằng bảng tính. Ví dụ này chỉ minh họa dữ liệu, không phải kết quả kiểm thử một sản phẩm Onter.
Kiểm tra cả vòng đời, không chỉ lần mở đầu
- Lập tập mẫu gồm ô văn bản tự do, số âm, dấu phân cách, dấu ngoặc kép và ký tự xuống dòng.
- Ghi phần mềm nhận, thiết lập vùng và cách mở file; không suy từ một máy cho toàn bộ tổ chức.
- Quan sát giá trị và kiểu ô sau mở, sau lưu rồi mở lại, và sau nhập vào hệ thống nhận.
- So sánh với nguồn theo định danh; đánh dấu mọi ký tự thêm hoặc bị mất.
Không yêu cầu nhân viên tắt cảnh báo bảo mật để hoàn tất nghiệm thu. Nếu không thể chứng minh một định dạng đáp ứng đồng thời nhu cầu đọc và nhập lại, hãy tách hai đầu ra với tên và hướng dẫn rõ ràng. Quyết định tốt là giảm nhập nhằng cho người dùng, không phải hứa có một hàm làm sạch an toàn ở mọi nơi.
Đưa yêu cầu xuất file vào phạm vi phần mềm
Khi trao đổi luồng xuất dữ liệu trong phần mềm doanh nghiệp, hãy mang theo một mẫu đã che dữ liệu riêng tư và ma trận người nhận. Nếu vấn đề nằm ở kiểm tra dữ liệu đầu vào, dùng thêm quy trình kiểm tra CSV trước khi import; đó là bước khác với bảo vệ người mở file xuất.
Nguồn tham khảo và giới hạn
OWASP CSV Injection (đọc ngày 13/10/2026). Các biểu mẫu và tình huống trong bài là hướng dẫn biên tập hoặc ví dụ giả định; không phải kết quả kiểm thử, dữ liệu khách hàng hay cam kết năng lực đã triển khai. Cách áp dụng cần đối chiếu nền tảng và quyền thực tế.

