Ngày chúng tôi khắc phục xong quy trình đăng ký (Signup Pipeline)
Số lượng đăng ký của chúng tôi tăng lên mỗi tuần. Cả đội cảm thấy rất hào hứng. Nhưng dữ liệu có vẻ không đúng. Người dùng không bao giờ quay lại. Các địa chỉ email trông rất lạ. Tỷ lệ kích hoạt (activation rate) của chúng tôi giảm xuống.
Tôi đã xem xét dữ liệu. Tôi không tìm thấy sự tăng trưởng. Tôi chỉ thấy những nhiễu loạn (noise).
Vấn đề
Tôi đã chạy một truy vấn để nhóm các lượt đăng ký theo địa chỉ IP. Một địa chỉ IP đã đăng ký hàng trăm tài khoản chỉ trong 24 giờ. Nó sử dụng cùng một dấu vân tay trình duyệt (browser fingerprint). Một đoạn script đang liên tục gửi yêu cầu đến endpoint đăng ký của chúng tôi. Nó sử dụng các tên miền email dùng một lần. Đó là một bot, không phải con người.
Quy trình đăng ký của chúng tôi đang bị bỏ ngỏ hoàn toàn.
Giải pháp
Chúng tôi đã xây dựng ba lớp bảo vệ chỉ trong một sprint.
Lớp 1: Throttling
Chúng tôi sử dụng hai loại rate limiting:
- Throttling theo IP: Chúng tôi giới hạn số lần thử đăng ký từ một IP trong một khoảng thời gian ngắn.
- Throttling theo tên miền: Chúng tôi giới hạn các lượt đăng ký từ cùng một tên miền email trong một khoảng thời gian dài hơn. Điều này ngăn chặn các bot sử dụng các IP khác nhau nhưng dùng chung một tên miền.
Lớp 2: Blocklists
- Chặn tên miền email: Chúng tôi từ chối bất kỳ lượt đăng ký nào sử dụng các tên miền email dùng một lần (disposable email domains).
- Chặn user agent: Chúng tôi từ chối các yêu cầu từ các công cụ không phải trình duyệt. Chúng tôi không cung cấp bất kỳ chi tiết nào cho kẻ tấn công.
Lớp 3: IP Blocklist
Một số IP rất dai dẳng. Chúng lạm dụng nhiều phần khác nhau trong hệ thống của chúng tôi. Chúng tôi sử dụng một danh sách chặn cứng (hard blocklist). Các IP này sẽ bị từ chối trong mọi yêu cầu. Middleware sẽ chặn chúng ngay lập tức.
Kết quả
Trước khi khắc phục:
- Một IP tạo ra hàng trăm tài khoản trong một ngày.
- Các tên miền dùng một lần chiếm phần lớn lượt đăng ký.
- Các tài khoản giả mạo làm giảm tỷ lệ kích hoạt của chúng tôi.
- Dữ liệu của chúng tôi bị sai lệch.
Sau khi khắc phục:
- Tình trạng tạo tài khoản hàng loạt (registration farming) giảm xuống bằng không.
- Việc đăng ký bằng tên miền dùng một lần đã bị chặn đứng.
- Số lượng đăng ký cho thấy ý định thực sự của con người.
- Tỷ lệ kích hoạt của chúng tôi đã phục hồi.
Bài học rút ra
- Tín hiệu (signal) quan trọng hơn khối lượng (volume). Bot khiến các chỉ số như tỷ lệ giữ chân (retention) và doanh thu trở nên không đáng tin cậy.
- Những thay đổi nhỏ trong mã nguồn có thể giải quyết các vấn đề lớn. Chúng tôi chỉ sử dụng ba cơ chế đơn giản.
- Các lớp bảo vệ là cần thiết. Một lớp giới hạn là không đủ. Sự kết hợp giữa các lớp sẽ bao quát được nhiều trường hợp hơn.
- Kiểm soát các phản hồi của bạn. Hãy cung cấp phản hồi cho người dùng hợp lệ. Hãy giữ im lặng đối với những kẻ có ý đồ xấu.
Tăng trưởng không chỉ là việc có thêm người dùng. Đó là việc có được những người dùng thực sự. Các quyết định về sản phẩm của bạn phụ thuộc vào dữ liệu tốt. Và dữ liệu đó bắt đầu từ chính endpoint đăng ký của bạn.
Nguồn: https://dev.to/ogeobubu/the-day-we-fixed-our-signup-pipeline-3664