Spots

Your App Is Probably Leaking User Data to AI APIs and Ad Trackers — A Practical…

Tuần này trên Hacker News có một paper khá gắt: các công ty AI đang để lộ dữ liệu người dùng cho bên quảng cáo, qua tracking pixel, analytics script và những URL chứa nội dung hội thoại. Đọc xong mình giật mình. Lý do không phải chuyện của OpenAI hay Google, mà là mình nhận ra chính team mình cũng đang làm y hệt. Chatbot CSKH gửi nguyên tin nhắn khách hàng (có số điện thoại, số CCCD) lên LLM API. Trang checkout gắn Meta Pixel, mà URL lại có ?email=.... Log production thì ghi nguyên request body.

Bài này không bàn đạo đức. Mình chia

Bài này không bàn đạo đức. Mình chia sẻ cách mình audit và chặn rò rỉ PII (Personally Identifiable Information) trong một app Node.js + Python thực tế. Từ 1/1/2026, Luật Bảo vệ dữ liệu cá nhân đã có hiệu lực ở Việt Nam, nên đây không còn là chuyện "làm cho đẹp" nữa. 1. Dữ liệu rò rỉ qua những đường nào? Trước khi fix, cần vẽ ra dữ liệu người dùng đang đi đâu. Với phần lớn app mình từng làm, có 4 "lỗ" chính:

Điểm chung là dữ liệu ra khỏi hệ

Điểm chung là dữ liệu ra khỏi hệ thống của bạn, sang server của bên thứ ba, và bạn không kiểm soát được họ lưu bao lâu, train model hay chia sẻ cho ai. Nguyên tắc mình áp dụng rất đơn giản: bên thứ ba chỉ nhận đúng lượng dữ liệu tối thiểu nó cần để làm việc. LLM cần hiểu ý định của khách, không cần biết số CCCD thật của khách. 2. Redact PII trước khi gửi lên LLM API

Đây là chỗ rò rỉ nhiều nhất năm

Đây là chỗ rò rỉ nhiều nhất năm 2026, vì team nào cũng đang nhét LLM vào sản phẩm. Cách mình làm là reversible redaction: thay PII bằng token trước khi gửi, rồi thay ngược lại khi nhận response. Bản tối giản bằng Python 3.12, chỉ dùng re, không cần thư viện ngoài: Vài bài học xương máu khi đưa cái này lên production:

Mapping chỉ sống trong memory của request. Đừng

Mapping chỉ sống trong memory của request. Đừng cache mapping vào Redis mà không có TTL. Làm vậy là bạn vừa tạo ra một kho PII mới.

Regex không bắt được tên người và địa

Regex không bắt được tên người và địa chỉ. Muốn bắt những thứ này thì phải thêm NER. Microsoft Presidio (presidio-analyzer 2.2.x) cho phép viết custom recognizer. Với tiếng Việt, bạn có thể ghép model NER của underthesea vào làm recognizer.

Viết system prompt dặn LLM giữ nguyên token

Viết system prompt dặn LLM giữ nguyên token, ví dụ "Giữ nguyên các placeholder dạng , không sửa, không dịch". Không có dòng này, model thỉnh thoảng sẽ "sáng tạo" ra <Phone_2> và bước restore sẽ fail. Viết unit test với dữ liệu thật đã được anonymize. Mình từng gặp regex số thẻ ăn nhầm mã đơn hàng 16 chữ số. 3. Kiểm soát tracking script ở frontend

Lỗi kinh điển là đưa PII lên URL

Lỗi kinh điển là đưa PII lên URL: /checkout/[email protected]&phone=09.... Pixel quảng cáo nào cũng tự gửi document.location.href về server của nó, thế là email khách hàng nằm trong hệ thống ad. Paper trên HN chỉ ra đúng pattern này ở nhiều sản phẩm AI: nội dung chat hoặc ID nhạy cảm nằm trong URL, rồi bị pixel gửi đi.

Cách fix thứ nhất: không bao giờ để

Cách fix thứ nhất: không bao giờ để PII trong URL. Chuyển sang POST body hoặc lưu ở server session. Nếu codebase cũ quá lớn chưa refactor kịp, thì scrub URL trước khi đẩy event:

Nhiều người nghĩ hash email bằng SHA-256 rồi

Nhiều người nghĩ hash email bằng SHA-256 rồi gửi đi là "ẩn danh". Sai. Hash của email vẫn là một định danh ổn định, và bên ad match được ngay vì họ cũng có danh sách email đã hash. Hash chỉ là pseudonymization, không phải anonymization. Chỉ gửi khi bạn có consent rõ ràng.

News

Your App Is Probably Leaking User Data to AI APIs and Ad Trackers — A Practical Guide to Stop It

Tuần này trên Hacker News có một paper khá gắt: các công ty AI đang để lộ dữ liệu người dùng cho bên quảng cáo, qua tracking pixel, analytics script và những URL chứa nội dung hội thoại.

@spots #dev
Source: Dev.to
See more like this