Post đang nóng trên r/vibecoding chạm đúng một lỗi rất đời thường: anh em build giao diện quá nhanh bằng AI, deploy xong thấy mọi thứ mượt mà, nhưng chỉ cần ai đó mở Inspect là lòi ra cả waitlist email hoặc dữ liệu nội bộ nằm ngay ở frontend.
Đây không phải chuyện hiếm. Nó cũng không hẳn là lỗi của AI. Gốc rễ thường là mình đã tăng tốc phần "làm ra thứ nhìn giống sản phẩm" trước khi hiểu đủ phần "dữ liệu đang chạy thế nào".
Vì sao lỗi này xuất hiện ngày càng nhiều
Vibe coding giúp anh em đi từ ý tưởng tới bản chạy được cực nhanh. Nhưng tốc độ đó có một tác dụng phụ: nó che giấu cảm giác nguy hiểm.
Khi app render đẹp, form submit được, dashboard hiện số, mình rất dễ nghĩ là hệ thống đã ổn. Trong khi thực tế có thể đang tồn tại các vấn đề như:
- API key hoặc token bị nhét nhầm vào client bundle
- Danh sách email, user profile hoặc dữ liệu test bị trả thẳng về trình duyệt
- Query nội bộ được gọi trực tiếp từ frontend mà không có lớp kiểm soát ở server
- Prompt tạo code sinh ra flow "chạy được" nhưng không tách bạch public data với private data
Nói ngắn gọn: sản phẩm trông hoàn chỉnh không có nghĩa là kiến trúc đã an toàn.
Lỗi nằm ở thứ tự học và thứ tự build
Điểm mình thấy post Reddit nói rất đúng là đây là vấn đề về thứ tự. Nhiều anh em đang học theo chuỗi sai:
- Nghĩ ra ý tưởng
- Dùng AI dựng UI, auth, database, dashboard thật nhanh
- Có người dùng thử
- Sau đó mới quay lại hỏi client là gì, server là gì, dữ liệu nào nên lộ ra ngoài
Chuỗi này nguy hiểm vì lúc mình phát hiện vấn đề thì sản phẩm đã có người dùng, đã có dữ liệu thật, thậm chí đã gắn analytics, CRM hoặc danh sách khách hàng tiềm năng.
Thứ tự an toàn hơn thường là:
- Hiểu dữ liệu nào là public, dữ liệu nào là private
- Xác định phần nào chạy ở client, phần nào bắt buộc đi qua server
- Thiết kế API và permission tối thiểu trước
- Sau đó mới dùng AI để tăng tốc UI, logic và tự động hóa phần lặp lại
AI rất giỏi tăng tốc. Nhưng nó không tự chịu trách nhiệm thay mình về ranh giới bảo mật.
Một checklist ngắn để tránh kiểu "mở Inspect là thấy hết"
Nếu anh em đang vibe code landing page, SaaS mini tool hay MVP có form đăng ký, mình nghĩ nên tự rà 5 câu này trước khi bấm publish:
1. Dữ liệu này có thật sự cần xuất hiện ở trình duyệt không?
Nếu câu trả lời là không chắc, mặc định đừng gửi xuống client.
Frontend chỉ nên nhận đúng thứ nó cần để hiển thị. Không nên trả cả object lớn chỉ để lấy một vài trường nhỏ.
2. Request này có thể bị gọi trực tiếp mà không qua kiểm soát không?
Nhiều app để frontend gọi thẳng vào nguồn dữ liệu hoặc endpoint quá rộng. Nếu một request có thể bị copy từ DevTools rồi chạy lại dễ dàng, mình cần xem lại auth, permission và scope dữ liệu.
3. Có biến môi trường nào đang bị expose nhầm không?
Rất nhiều anh em mới làm dễ nhầm giữa env phía server và env được bundle ra client. Chỉ cần đặt sai prefix hoặc dùng sai chỗ là key nội bộ đi thẳng ra ngoài.
4. Có đang dùng dữ liệu test như thể đó là dữ liệu an toàn không?
Trong giai đoạn đầu, nhiều team đẩy luôn email thật, user thật hoặc webhook thật vào môi trường test. Khi AI nối các phần lại với nhau, dữ liệu đó có thể bị hiển thị ở chỗ mình không ngờ tới.
5. Nếu người lạ mở tab Network và Inspect trong 3 phút, họ sẽ thấy gì?
Đây là cách kiểm tra thực chiến nhất. Đừng kiểm tra như người xây sản phẩm. Hãy kiểm tra như người tò mò đang cố xem hệ thống của mình hớ ở đâu.
Điều anh em nên học đủ chắc trước khi phụ thuộc vào AI
Không cần biến mình thành security engineer rồi mới được vibe code. Nhưng có vài nền tảng rất đáng đầu tư sớm:
- HTML, JavaScript và cách browser thực thi code
- HTTP, API, request/response và status code
- Khác biệt giữa client-side và server-side
- Authentication, authorization và session cơ bản
- Cách tách secret, config và dữ liệu nhạy cảm
Chỉ cần chắc mấy khối này, chất lượng prompt mình viết cũng tăng lên hẳn. Mình sẽ không còn hỏi AI kiểu mơ hồ "làm app đăng ký cho tôi", mà sẽ hỏi rõ hơn như:
- tạo endpoint server để nhận email waitlist
- validate input ở server
- chỉ trả về trạng thái thành công/thất bại cho client
- không trả danh sách email về frontend
- log lỗi nhưng không lộ dữ liệu nhạy cảm
Khi prompt rõ về ranh giới hệ thống, code AI tạo ra thường đỡ nguy hiểm hơn rất nhiều.
Góc nhìn vận hành: lỗi xấu hổ nhỏ có thể thành vấn đề lớn
Một danh sách email bị lộ trên frontend nghe có vẻ chỉ là "quê một chút". Nhưng ở góc vận hành, nó kéo theo nhiều hệ quả:
- mất niềm tin từ người đăng ký sớm
- tự làm bẩn dữ liệu vì phải xử lý lại hoặc xóa khẩn cấp
- tạo rủi ro pháp lý nếu dính thông tin cá nhân
- khiến team phải vá nóng những phần đáng ra nên thiết kế đúng từ đầu
MVP không cần hoàn hảo. Nhưng MVP vẫn cần biết đâu là phần không được phép làm ẩu.
Kết luận
Thông điệp mình rút ra từ post này khá thẳng: vibe coding không làm nền tảng kỹ thuật bớt quan trọng, mà ngược lại còn khiến nền tảng quan trọng hơn. Vì khi tốc độ build tăng mạnh, sai lầm cơ bản cũng được nhân lên nhanh hơn.
Anh em cứ ship nhanh. Nhưng trước khi ship, nên tự hỏi một câu rất đơn giản: thứ mình đang đẩy lên production là giao diện đẹp, hay là một hệ thống mình thật sự hiểu nó đang lộ gì và giữ gì.
Top comments (0)