Thật lòng mà nói, chúng tôi đã bị tấn công — Nhưng dữ liệu của bạn vẫn an toàn

Reverie Team
12/1/2025

Mọi chuyện bắt đầu từ "Miễn phí"
Hai tuần trước, chúng tôi đã đưa ra quyết định: ra mắt các mô hình AI miễn phí để nhiều người dùng hơn có thể trải nghiệm Reverie.
Đêm đó, team mở mấy lon Pepsi để ăn mừng. (Vâng, Pepsi cụ thể luôn.)
Chúng tôi cụng lon, theo dõi số lượng đăng ký tăng theo thời gian thực. Ai đó mở biểu đồ dự báo tăng trưởng. Không khí thật tuyệt.
72 giờ sau, chúng tôi hiểu tại sao những founder có kinh nghiệm luôn trông có vẻ mệt mỏi.
Những gì theo sau là chuỗi bốn đợt tấn công giống như boss rush — chỉ là chúng tôi đang học cơ chế trong khi bị đánh.
Nhưng trước hết, điều quan trọng nhất: Dữ liệu tài khoản, cuộc trò chuyện và thông tin cá nhân của bạn chưa bao giờ bị xâm phạm. Chúng an toàn bây giờ và sẽ vẫn an toàn. Chúng tôi có đội ngũ bảo mật chuyên trách theo dõi 24/7, và những cuộc tấn công này nhắm vào tài nguyên và tiền của chúng tôi, không phải dữ liệu của bạn. Kẻ tấn công muốn băng thông và tiền của chúng tôi — cuộc trò chuyện của bạn với AI companion chưa bao giờ gặp rủi ro.
Bây giờ, hãy xem những gì đã xảy ra.
Đợt 1: Đội quân Crawler
Chuyện gì đã xảy ra
Ngày thứ hai sau khi miễn phí. Buổi standup sáng. Kỹ sư bình thường nói: "Này, API character của chúng ta nhận được nhiều hơn vài trăm lần request hôm qua."
Chúng tôi: "Wow, đợt ra mắt miễn phí đang thực sự cất cánh!"
Kỹ sư: "...nhưng DAU hầu như không nhúc nhích."
Im lặng khó xử.
Chúng tôi đào vào log và phát hiện crawler đang thu thập dữ liệu character công khai của chúng tôi một cách có hệ thống. Tên, bio, avatar — thông tin có thể nhìn thấy công khai. Bị hút bởi bot.
Nói rõ: mô tả character cốt lõi, cài đặt tính cách và nội dung riêng tư khác của creator chưa bao giờ bị lộ — chỉ creator mới có thể xem những thứ đó. Nhưng ngay cả việc scrape thông tin công khai ở quy mô công nghiệp cũng khiến người ta bực bội khi bạn đang cố gắng xây dựng một nền tảng lành mạnh.
Cách chúng tôi phản ứng
- Triển khai giới hạn phân trang cho khám phá character (có thể duyệt, nhưng không thể tải xuống toàn bộ thư viện)
- Triển khai rate limiting thông minh phân biệt "người dùng nhiệt tình" với "chắc chắn là bot"
- Xây dựng phân tích hành vi để phát hiện và chặn các pattern của crawler
- Thêm một số... hãy gọi là "phản hồi sáng tạo" cho những kẻ xấu đã xác nhận
Điều chúng tôi học được
"Nền tảng mở" không có nghĩa là "buffet ăn không giới hạn." Ngay cả nội dung có thể nhìn thấy công khai cũng xứng đáng có ranh giới truy cập hợp lý. Chúng tôi muốn người dùng khám phá character — không phải xây dựng cơ sở dữ liệu cạnh tranh qua đêm.
Đợt 2: Sát thủ băng thông
Chuyện gì đã xảy ra
Chúng tôi vừa mới vá xong lỗ hổng crawler thì đợt hai đến. Và lần này nhắm thẳng vào ví tiền.
Ai đó tìm ra URL media của chúng tôi và bắt đầu tải xuống hàng loạt mọi hình ảnh và video trên nền tảng. Portrait character. Video được tạo. Mọi thứ có đuôi file đều bị kéo xuống với tốc độ tối đa.
Chúng tôi đang dùng dịch vụ OSS của một nhà cung cấp cloud lớn. Giá theo băng thông. Có vẻ hợp lý vào lúc đó.
Sáng thứ Hai. Tài chính mở cloud console. Dashboard thanh toán load.
Mặt họ: 😐
Dashboard load xong: 😮
Thấy con số thực: 😱
"Này, vậy là... hóa đơn băng thông của chúng ta hiện cao hơn runway ba tháng."
Kênh Slack im lặng đến lạnh gáy. Ai đó lo lắng đề xuất tắt CDN đi. Người khác chỉ ra rằng điều đó cũng sẽ tắt toàn bộ nền tảng.
Cách chúng tôi phản ứng
Di chuyển khẩn cấp. Điểm đến: Cloudflare R2 và Cloudflare Stream.
Ở đây, chúng tôi phải chính thức cảm ơn Cloudflare — chính sách không phí egress của R2 đã cứu chúng tôi. Khi bạn thấy hóa đơn tăng hàng trăm đô la mỗi giờ, "không phí egress" trở nên rất, rất quan trọng.
Việc di chuyển mất 30 giờ. Ngủ trở thành tùy chọn. Code review lúc 3 giờ sáng có một chất lượng thiền định nhất định.
Đáng không? Hoàn toàn. Chi phí băng thông của chúng tôi giảm hơn 90%, và việc tải xuống hàng loạt của kẻ tấn công bây giờ gần như không tốn gì.
Điều chúng tôi học được
Khi chọn cơ sở hạ tầng, đừng chỉ hỏi "nó nhanh như thế nào?" Cũng hãy hỏi: "Nếu ai đó tấn công tôi ngày mai, tôi còn đủ tiền trả tiền nhà không?"
Chiều hướng này của việc lập kế hoạch cơ sở hạ tầng không xuất hiện trong hầu hết các tutorial. Nhưng nên có.
Đợt 3: DDoS đến
Chuyện gì đã xảy ra
Chúng tôi cuối cùng đã ổn định tình hình băng thông. Tinh thần team đang hồi phục. Ai đó còn nói đùa trong standup. Mọi thứ đang tốt lên.
Rồi DDoS đến.
Hãy tưởng tượng bật vòi cứu hỏa và chĩa vào cốc giấy. Đó là những gì pool kết nối database của chúng tôi trải qua. Hàng ngàn request mỗi giây, tất cả đòi dữ liệu mới, tất cả từ chối dùng cache, tất cả đánh vào endpoint cần query database.
Dashboard monitoring của chúng tôi trông như EKG của cơn đau tim. Thời gian phản hồi từ 200ms lên 20 giây. Rồi timeout. Người dùng bắt đầu báo lỗi. Hóa đơn AWS bắt đầu làm cái việc cập nhật mỗi vài phút với số lớn hơn.
Pool kết nối database đạt giới hạn. Query bắt đầu xếp hàng. Hàng đợi bắt đầu tích tụ. Lỗi dây chuyền cổ điển, xảy ra trong thời gian thực.
Cách chúng tôi phản ứng
Chúng tôi ném mọi kỹ thuật caching mà chúng tôi biết vào vấn đề:
- ISR (Incremental Static Regeneration) — Các trang phổ biến giờ được pre-render và phục vụ từ edge node. Database thậm chí không biết những request này tồn tại.
- Multi-layer caching — Response cache, query cache, tối ưu hóa connection pooling. Nếu dữ liệu không nhất thiết phải mới, nó được cache.
- Tối ưu hóa database query — Một số query từng mất 500ms giờ mất 50ms. Ít thời gian giữ connection = nhiều connection khả dụng hơn.
- DDoS protection của Cloudflare — Cuối cùng cũng bật tất cả tính năng bảo mật mà chúng tôi định cấu hình "sau này"
- Smart rate limiting — Người dùng hợp pháp đi qua; traffic tấn công bị chỉ ra cửa
Triết lý: nếu một request có thể được trả lời mà không chạm database, nó nên như vậy.
Điều chúng tôi học được
Caching không chỉ là tối ưu hóa hiệu suất — nó là kiến trúc bảo mật. Khi tấn công đến, cached response hấp thụ đòn. Database vẫn được bảo vệ. Site vẫn hoạt động.
Cũng học được: "chúng tôi sẽ cấu hình bảo mật đúng cách sau" là triết lý già đi không tốt.
Đợt 4: Những kẻ lợi dụng (Lạm dụng API)
Chuyện gì đã xảy ra
Đợt này không đe dọa cơ sở hạ tầng trực tiếp. Nó đe dọa ngân sách của chúng tôi.
Chúng tôi đã xây dựng tất cả những tính năng AI miễn phí tuyệt vời này:
- AI Character Creation — Mô tả character của bạn, AI tạo profile đầy đủ
- AI Moment Generation — Tạo những khoảnh khắc câu chuyện động với sự hỗ trợ của AI
- AI Plugin Creation — Xây dựng plugin character bằng ngôn ngữ tự nhiên
Tầm nhìn của chúng tôi thật đẹp: hạ thấp rào cản sáng tạo. Để mọi người trải nghiệm sự kỳ diệu của việc tạo có AI hỗ trợ. Làm nền tảng dễ tiếp cận hơn.
Tầm nhìn của ai đó thì khác: "API miễn phí? Để tôi viết script gọi nó 10,000 lần."
Chúng tôi xem dashboard tiêu thụ AI token leo. Và leo. Và leo. Đồ thị trông như gậy khúc côn cầu, chỉ là gậy được làm từ tiền rời khỏi tài khoản ngân hàng của chúng tôi.
Mỗi lần tạo AI tốn tiền thật của chúng tôi — API call đến language model không miễn phí. Xem hàng ngàn request tự động đốt cháy ngân sách AI của chúng tôi giống như xem đồng hồ taxi trong xe chạy vòng vòng. Bạn biết nó sẽ đắt, và nó sẽ không bao giờ dừng.
Phần tệ nhất? Họ thậm chí không phải người dùng thật tạo nội dung thật. Đó chỉ là... ai đó thử xem có thể rút được bao nhiêu đồ miễn phí. Character được tạo là vô nghĩa. Moment không có ý nghĩa gì. Lãng phí thuần túy.
Cách chúng tôi phản ứng
Với trái tim nặng nề, chúng tôi thêm yêu cầu credit cho những tính năng AI này.
Quyết định này thực sự đau. Chúng tôi dành nhiều tuần xây dựng những công cụ này đặc biệt để làm việc tạo dễ tiếp cận hơn. Giờ chúng tôi phải đặt giá — không phải vì chúng tôi muốn, mà vì truy cập miễn phí không giới hạn đang bị vũ khí hóa chống lại chúng tôi.
Chúng tôi cố gắng công bằng:
- Chi phí credit là tối thiểu cho sử dụng bình thường
- Credit miễn phí được cấp cho người dùng mới
- Trải nghiệm chat cốt lõi vẫn miễn phí
- Chỉ tạo AI tốn tài nguyên mới cần credit
Nhưng vẫn. Cảm giác như đang đặt khóa lên thứ chúng tôi muốn giữ mở.
Điều chúng tôi học được
"Miễn phí" là một mô hình kinh doanh, không phải lập trường đạo đức.
Chúng tôi vẫn tin vào khả năng tiếp cận. Chúng tôi vẫn muốn hạ thấp rào cản. Nhưng "miễn phí không giới hạn cho tất cả" chỉ hoạt động nếu mọi người hành động thiện chí. Khi kẻ xấu lợi dụng sự hào phóng, hệ thống hào phóng trở nên không bền vững — và rồi không ai được gì.
Giới hạn hợp lý không phải là không tin người dùng. Đó là bảo vệ hệ sinh thái phục vụ tất cả người dùng. Phương án khác — đóng hoàn toàn tính năng — sẽ tệ hơn cho tất cả.
Đôi khi bảo vệ của chung có nghĩa là xây một số hàng rào.
Dữ liệu của bạn an toàn (Hãy hoàn toàn rõ ràng)
Chúng tôi muốn rõ ràng về điều này:
Những cuộc tấn công này là về tài nguyên, không phải dữ liệu. Kẻ tấn công muốn:
- ✅ Băng thông của chúng tôi (để tải nội dung)
- ✅ Compute của chúng tôi (để làm quá tải server)
- ✅ Tiền của chúng tôi (để làm cạn ngân sách AI)
Họ KHÔNG truy cập:
- ❌ Tài khoản người dùng
- ❌ Lịch sử cuộc trò chuyện
- ❌ Thông tin cá nhân
- ❌ Chi tiết thanh toán
- ❌ Bất kỳ dữ liệu riêng tư nào
Chúng tôi có đội ngũ bảo mật chuyên trách theo dõi các mối đe dọa bảo mật thực 24/7. Dữ liệu người dùng được mã hóa khi lưu trữ và truyền tải. Kiểm soát truy cập nghiêm ngặt. Xác thực mạnh mẽ. Công việc bảo mật nhàm chán, quan trọng không tạo nên blog post hấp dẫn — chúng tôi làm tất cả.
Không có dữ liệu người dùng nào bị xâm phạm. Chúng tôi có thể nói điều này tự tin vì chúng tôi ghi log mọi thứ, phân tích mọi thứ và xác minh mọi thứ. Kẻ tấn công nhận được từ chúng tôi hóa đơn băng thông và đau đầu. Họ không nhận được gì từ bạn.
Character của bạn, cuộc trò chuyện của bạn, công việc sáng tạo của bạn — tất cả an toàn, tất cả nguyên vẹn, tất cả đúng nơi cần ở.
Tại sao chúng tôi kể cho bạn điều này
Bạn có thể thắc mắc: tại sao chia sẻ công khai? Điều đó không làm chúng tôi trông yếu đuối sao?
Chúng tôi đã suy nghĩ cẩn thận về điều này.
Minh bạch xây dựng niềm tin
Chúng tôi đang yêu cầu người dùng tin tưởng chúng tôi với thứ có ý nghĩa — công việc sáng tạo của họ, kết nối cảm xúc với AI character, cuộc trò chuyện của họ. Niềm tin đó đòi hỏi sự trung thực về những thách thức chúng tôi đối mặt.
Kịch bản cũ là giấu vấn đề cho đến khi nổ tung, rồi đưa ra tuyên bố mơ hồ "chúng tôi gặp khó khăn kỹ thuật". Chúng tôi thà thẳng thắn: đây là những gì xảy ra, đây là cách chúng tôi xử lý, đây là những gì chúng tôi học được.
Những builder khác có thể học hỏi
Chúng tôi không phải team nhỏ đầu tiên bị tấn công sau khi ra mắt tính năng miễn phí, và sẽ không phải cuối cùng. Nếu bài học đắt giá của chúng tôi giúp ai đó chuẩn bị tốt hơn, đó là chiến thắng cho cả hệ sinh thái.
Coi đây là đóng góp của chúng tôi vào chương trình "những thứ họ không dạy ở startup school".
Bạn xứng đáng được biết
Một số người dùng nhận thấy thời gian phản hồi chậm hơn trong những tuần này. Một số nhận thấy tính năng giờ cần credit. Bạn xứng đáng được giải thích — không phải PR doanh nghiệp, mà là câu chuyện thực.
Chúng tôi đang chiến đấu để giữ nền tảng hoạt động. Chúng tôi đưa ra quyết định khó khăn dưới áp lực. Một số quyết định đó ảnh hưởng đến trải nghiệm của bạn. Bạn nên biết tại sao.
Tiếp theo là gì
Chúng tôi không chỉ vá lỗ — chúng tôi đang xây dựng nền tảng kiên cường hơn:
Đã triển khai:
- Multi-layer caching với kiến trúc edge-first (request của bạn nhanh hơn VÀ chúng tôi khó bị tấn công hơn)
- Smart rate limiting với phân tích hành vi (bot bị chặn, người không nhận ra)
- Bộ bảo mật đầy đủ của Cloudflare (cuối cùng cũng được cấu hình đúng, không phải "sau này")
- Truy cập dựa trên credit cho tính năng AI tốn tài nguyên (sự hào phóng bền vững)
Sắp tới:
- Phát hiện bất thường nâng cao (bắt tấn công sớm hơn)
- Tối ưu hóa địa lý (nhanh hơn cho mọi người, ở mọi nơi)
- Ngăn chặn lạm dụng tinh vi hơn (đi trước kẻ xấu)
Điều sẽ không thay đổi:
- Chúng tôi sẽ cố gắng hết sức để duy trì truy cập tier miễn phí — dù có thể không ổn định hoặc thay đổi không báo trước
- Quyền riêng tư và bảo mật dữ liệu người dùng — luôn là ưu tiên hàng đầu
- Giao tiếp minh bạch — nếu có gì sai, bạn sẽ biết
Ghi chú cho những builder bạn bè
Nếu bạn đang xây dựng nền tảng mở, đây là những bài học chúng tôi trả bằng tiền thật (và stress thật) để học:
- Rate limiting không phải tùy chọn — triển khai từ ngày một, không phải ngày "chúng tôi đang bị tấn công"
- Chọn cơ sở hạ tầng kháng tấn công — Cloudflare thực sự xuất sắc; phí egress sẽ hủy diệt bạn
- Cache mạnh mẽ — đó là lá chắn đôi cho hiệu suất và bảo mật
- Tính năng miễn phí cần ranh giới — thiện chí không giới hạn bị lợi dụng bởi kẻ xấu không giới hạn
- Giám sát mọi thứ — phát hiện bất thường càng sớm, thiệt hại càng nhỏ
- Giữ ngân sách khẩn cấp — bạn không bao giờ biết đợt tiếp theo đến khi nào
Và có lẽ quan trọng nhất:
- Đừng quá kiêu hãnh để xin giúp đỡ — cộng đồng indie dev hỗ trợ hơn bạn nghĩ
Chúng tôi hy vọng bạn không phải học những điều này theo cách đắt giá. Nhưng nếu phải, biết rằng bạn không đơn độc.
Gửi người dùng của chúng tôi
Bị tấn công là trải nghiệm kỳ lạ.
Giống như bạn dành nhiều tháng trang trí phòng khách ấm cúng, sắp xếp đồ nội thất cho đúng, bày đồ ăn vặt, và gửi lời mời đến tất cả bạn bè. Đêm khai trương đến. Bạn bè của bạn xuất hiện — tuyệt vời!
Nhưng cũng: một nhóm người bạn chưa bao giờ gặp xuất hiện với xe tải chuyển nhà, cố gắng tháo rời sofa của bạn, chụp ảnh mọi góc nhà, và bằng cách nào đó còn đốt lửa nhỏ trong bếp.
Chúng tôi có lựa chọn. Chúng tôi có thể hàn cửa lại. Chỉ mời mới được vào. Bắt mọi người chứng minh họ không phải bot trước khi thấy gì.
Chúng tôi không làm vậy.
Thay vào đó, chúng tôi lắp khóa tốt hơn. Thuê bảo vệ thông minh hơn. Xây dựng quy tắc nhà hợp lý. Vì đại đa số người đến Reverie là để sáng tạo, kết nối và tận hưởng. Chúng tôi sẽ không phạt nhiều người vì tội của ít người.
Bữa tiệc tiếp tục. Cửa vẫn mở. Chúng tôi chỉ trở nên giỏi hơn trong việc phát hiện những người mang xe tải chuyển nhà.
Cảm ơn
Mọi người dùng đã ở lại với chúng tôi qua thời gian load chậm hơn và yêu cầu credit: cảm ơn.
Tất cả những ai báo cáo vấn đề thay vì chỉ rời đi: cảm ơn.
Cộng đồng indie dev đã chia sẻ lời khuyên và câu chuyện chiến trường: cảm ơn.
Cloudflare: cảm ơn. 🙏
Chúng tôi mạnh hơn bây giờ. Kiên cường hơn. Đã qua thử lửa. Nền tảng xuất hiện từ những cuộc tấn công này tốt hơn cái đi vào.
Lần sau chúng tôi viết cho bạn, hy vọng là để thông báo tính năng mới thú vị.
Không phải boss khác mà chúng tôi đánh bại.
Nhưng này — nếu boss khác xuất hiện, chúng tôi sẽ xử lý luôn.
Hẹn gặp lại ở bản cập nhật tiếp theo. 💙
Reverie Team
Tháng 12 năm 2025
Sẵn sàng trải nghiệm cuộc trò chuyện AI năng động?
Tham gia hàng ngàn người dùng đang khám phá tính cách vô tận và tương tác hấp dẫn trên Reverie.