𝗧𝗵𝗲 𝗗𝗮𝘆 𝗪𝗲 𝗙𝗶𝘅𝗲𝗱 𝗢𝘂𝗿 𝗦𝗶𝗴𝗻𝘂𝗽 𝗣𝗶𝗽𝗲𝗹𝗶𝗻𝗲
ਸਾਡੇ ਸਾਈਨਅੱਪ ਦੇ ਅੰਕੜੇ ਹਰ ਹਫ਼ਤੇ ਵਧ ਰਹੇ ਸਨ। ਟੀਮ ਉਤਸ਼ਾਹਿਤ ਸੀ। ਪਰ ਡੇਟਾ ਕੁਝ ਗਲਤ ਲੱਗ ਰਿਹਾ ਸੀ। ਯੂਜ਼ਰਜ਼ ਕਦੇ ਵਾਪਸ ਨਹੀਂ ਆਉਂਦੇ ਸਨ। ਈਮੇਲ ਐਡਰੈੱਸ ਅਜੀਬ ਲੱਗ ਰਹੇ ਸਨ। ਸਾਡਾ ਐਕਟੀਵੇਸ਼ਨ ਰੇਟ (activation rate) ਡਿੱਗ ਗਿਆ ਸੀ।
ਮੈਂ ਡੇਟਾ ਦੀ ਜਾਂਚ ਕੀਤੀ। ਮੈਨੂੰ ਵਿਕਾਸ (growth) ਨਹੀਂ ਮਿਲਿਆ। ਮੈਨੂੰ ਸਿਰਫ਼ ਸ਼ੋਰ (noise) ਮਿਲਿਆ।
The Problem
ਮੈਂ IP ਐਡਰੈੱਸ ਅਨੁਸਾਰ ਸਾਈਨਅੱਪਸ ਨੂੰ ਗਰੁੱਪ ਕਰਨ ਲਈ ਇੱਕ ਕੁਐਰੀ (query) ਚਲਾਈ। ਇੱਕ IP ਐਡਰੈੱਸ ਨੇ 24 ਘੰਟਿਆਂ ਵਿੱਚ ਸੈਂਕੜੇ ਖਾਤੇ ਰਜਿਸਟਰ ਕੀਤੇ। ਇਹ ਇੱਕੋ ਬ੍ਰਾਊਜ਼ਰ ਫਿੰਗਰਪ੍ਰਿੰਟ (browser fingerprint) ਦੀ ਵਰਤੋਂ ਕਰ ਰਿਹਾ ਸੀ। ਇੱਕ ਸਕ੍ਰਿਪਟ ਸਾਡੇ ਰਜਿਸਟਰ ਐਂਡਪੁਆਇੰਟ (register endpoint) 'ਤੇ ਹਮਲਾ ਕਰ ਰਹੀ ਸੀ। ਇਹ ਥਰੋਅਵੇਅ (throwaway) ਈਮੇਲ ਡੋਮੇਨਾਂ ਦੀ ਵਰਤੋਂ ਕਰ ਰਹੀ ਸੀ। ਇਹ ਇੱਕ ਬੋਟ (bot) ਸੀ, ਕੋਈ ਇਨਸਾਨ ਨਹੀਂ।
ਸਾਡੀ ਸਾਈਨਅੱਪ ਪਾਈਪਲਾਈਨ ਪੂਰੀ ਤਰ੍ਹਾਂ ਖੁੱਲ੍ਹੀ ਹੋਈ ਸੀ।
The Solution
ਅਸੀਂ ਇੱਕ ਸਪ੍ਰਿੰਟ (sprint) ਵਿੱਚ ਸੁਰੱਖਿਆ ਦੀਆਂ ਤਿੰਨ ਪਰਤਾਂ (layers) ਤਿਆਰ ਕੀਤੀਆਂ।
Layer 1: Throttling
ਅਸੀਂ ਦੋ ਤਰ੍ਹਾਂ ਦੀ ਰੇਟ ਲਿਮਿਟਿੰਗ (rate limiting) ਦੀ ਵਰਤੋਂ ਕੀਤੀ।
- ਪ੍ਰਤੀ-IP ਥਰੌਟਲਿੰਗ: ਅਸੀਂ ਇੱਕ ਛੋਟੇ ਸਮੇਂ ਦੇ ਅੰਦਰ ਇੱਕ IP ਤੋਂ ਸਾਈਨਅੱਪ ਦੀਆਂ ਕੋਸ਼ਿਸ਼ਾਂ ਨੂੰ ਸੀਮਤ ਕਰਦੇ ਹਾਂ।
- ਪ੍ਰਤੀ-ਡੋਮੇਨ ਥਰੌਟਲਿੰਗ: ਅਸੀਂ ਲੰਬੇ ਸਮੇਂ ਦੇ ਅੰਦਰ ਇੱਕੋ ਈਮੇਲ ਡੋਮੇਨ ਤੋਂ ਸਾਈਨਅੱਪਸ ਨੂੰ ਸੀਮਤ ਕਰਦੇ ਹਾਂ। ਇਹ ਇੱਕੋ ਡੋਮੇਨ ਨਾਲ ਵੱਖ-ਵੱਖ IP ਦੀ ਵਰਤੋਂ ਕਰਨ ਵਾਲੇ ਬੋਟਸ ਨੂੰ ਰੋਕਦਾ ਹੈ।
Layer 2: Blocklists
- ਬਲੌਕ ਕੀਤੇ ਗਏ ਈਮੇਲ ਡੋਮੇਨ: ਅਸੀਂ ਡਿਸਪੋਜ਼ੇਬਲ (disposable) ਈਮੇਲ ਡੋਮੇਨਾਂ ਦੀ ਵਰਤੋਂ ਕਰਨ ਵਾਲੇ ਕਿਸੇ ਵੀ ਰਜਿਸਟ੍ਰੇਸ਼ਨ ਨੂੰ ਰੱਦ ਕਰ ਦਿੰਦੇ ਹਾਂ।
- ਬਲੌਕ ਕੀਤੇ ਗਏ ਯੂਜ਼ਰ ਏਜੰਟਸ: ਅਸੀਂ ਨਾਨ-ਬ੍ਰਾਊਜ਼ਰ ਟੂਲਜ਼ ਤੋਂ ਆਉਣ ਵਾਲੀਆਂ ਬੇਨਤੀਆਂ ਨੂੰ ਰੱਦ ਕਰ ਦਿੰਦੇ ਹਾਂ। ਅਸੀਂ ਹਮਲਾਵਰ ਨੂੰ ਕੋਈ ਜਾਣਕਾਰੀ ਨਹੀਂ ਦਿੰਦੇ।
Layer 3: IP Blocklist
ਕੁਝ IP ਲਗਾਤਾਰ ਹਮਲੇ ਕਰਦੇ ਹਨ। ਉਹ ਸਾਡੇ ਸਿਸਟਮ ਦੇ ਕਈ ਹਿੱਸਿਆਂ ਦੀ ਦੁਰਵਰਤੋਂ ਕਰਦੇ ਹਨ। ਅਸੀਂ ਇੱਕ ਹਾਰਡ ਬਲੌਕਲਿਸਟ (hard blocklist) ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹਾਂ। ਇਹਨਾਂ IP ਨੂੰ ਹਰ ਬੇਨਤੀ ਲਈ ਰੱਦ ਕਰ ਦਿੱਤਾ ਜਾਂਦਾ ਹੈ। ਮਿਡਲਵੇਅਰ (middleware) ਉਹਨਾਂ ਨੂੰ ਤੁਰੰਤ ਰੋਕ ਦਿੰਦਾ ਹੈ।
The Results
ਸੁਧਾਰ ਤੋਂ ਪਹਿਲਾਂ:
- ਇੱਕ IP ਨੇ ਇੱਕ ਦਿਨ ਵਿੱਚ ਸੈਂਕੜੇ ਖਾਤੇ ਬਣਾਏ।
- ਜ਼ਿਆਦਾਤਰ ਸਾਈਨਅੱਪ ਡਿਸਪੋਜ਼ੇਬਲ ਡੋਮੇਨਾਂ ਰਾਹੀਂ ਹੋਏ ਸਨ।
- ਫਰਜ਼ੀ ਖਾਤਿਆਂ ਨੇ ਸਾਡਾ ਐਕਟੀਵੇਸ਼ਨ ਰੇਟ ਘਟਾ ਦਿੱਤਾ।
- ਸਾਡਾ ਡੇਟਾ ਗਲਤ ਸੀ।
ਸੁਧਾਰ ਤੋਂ ਬਾਅਦ:
- ਰਜਿਸਟ੍ਰੇਸ਼ਨ ਫਾਰਮਿੰਗ (Registration farming) ਜ਼ੀਰੋ ਹੋ ਗਈ।
- ਡਿਸਪੋਜ਼ੇਬਲ ਡੋਮੇਨ ਸਾਈਨਅੱਪ ਰੁਕ ਗਏ।
- ਸਾਈਨਅੱਪ ਦੇ ਅੰਕੜਿਆਂ ਨੇ ਅਸਲੀ ਮਨੁੱਖੀ ਇਰਾਦੇ ਨੂੰ ਦਰਸਾਇਆ।
- ਸਾਡਾ ਐਕਟੀਵੇਸ਼ਨ ਰੇਟ ਵਾਪਸ ਆ ਗਿਆ।
Lessons Learned
- ਵੌਲਯੂਮ (volume) ਨਾਲੋਂ ਸਿਗਨਲ (signal) ਜ਼ਿਆਦਾ ਮਹੱਤਵਪੂਰਨ ਹੈ। ਬੋਟਸ ਰਿਟੈਂਸ਼ਨ (retention) ਅਤੇ ਰੈਵੇਨਿਊ (revenue) ਵਰਗੇ ਮੈਟ੍ਰਿਕਸ ਨੂੰ ਭਰੋਸੇਯੋਗ ਨਹੀਂ ਰਹਿਣ ਦਿੰਦੇ।
- ਛੋਟੇ ਕੋਡ ਫਿਕਸ ਵੱਡੀਆਂ ਸਮੱਸਿਆਵਾਂ ਨੂੰ ਹੱਲ ਕਰਦੇ ਹਨ। ਅਸੀਂ ਤਿੰਨ ਸਰਲ ਵਿਧੀਆਂ ਦੀ ਵਰਤੋਂ ਕੀਤੀ।
- ਪਰਤਾਂ ਜ਼ਰੂਰੀ ਹਨ। ਇੱਕ ਸੀਮਾ ਕਾਫ਼ੀ ਨਹੀਂ ਹੈ। ਇੱਕ ਸੁਮੇਲ ਜ਼ਿਆਦਾ ਖੇਤਰ ਨੂੰ ਕਵਰ ਕਰਦਾ ਹੈ।
- ਆਪਣੀਆਂ ਪ੍ਰਤੀਕਿਰਿਆਵਾਂ (responses) ਨੂੰ ਕੰਟਰੋਲ ਕਰੋ। ਜਾਇਜ਼ ਯੂਜ਼ਰਜ਼ ਨੂੰ ਫੀਡਬੈਕ ਦਿਓ। ਬੁਰੇ ਅਨਸਰਾਂ (bad actors) ਨੂੰ ਚੁੱਪ ਕਰਵਾ ਦਿਓ।
ਵਿਕਾਸ (Growth) ਸਿਰਫ਼ ਯੂਜ਼ਰਜ਼ ਪ੍ਰਾਪਤ ਕਰਨ ਬਾਰੇ ਨਹੀਂ ਹੈ। ਇਹ ਅਸਲੀ ਯੂਜ਼ਰਜ਼ ਪ੍ਰਾਪਤ ਕਰਨ ਬਾਰੇ ਹੈ। ਤੁਹਾਡੇ ਉਤਪਾਦ ਦੇ ਫੈਸਲੇ ਚੰਗੇ ਡੇਟਾ 'ਤੇ ਨਿਰਭਰ ਕਰਦੇ ਹਨ। ਉਹ ਡੇਟਾ ਤੁਹਾਡੇ ਰਜਿਸਟ੍ਰੇਸ਼ਨ ਐਂਡਪੁਆਇੰਟ ਤੋਂ ਸ਼ੁਰੂ ਹੁੰਦਾ ਹੈ।
Source: https://dev.to/ogeobubu/the-day-we-fixed-our-signup-pipeline-3664