𝗬𝗼𝘂𝗿 𝗦𝗮𝗮𝗦 𝗜𝘀 𝗟𝗲𝗮𝗸𝗶𝗻𝗴 𝗠𝗼𝗻𝗲𝘆

ਜ਼ਿਆਦਾਤਰ ਡਿਵੈਲਪਰ ਆਪਣਾ SaaS ਲਾਂਚ ਕਰਦੇ ਹਨ ਅਤੇ ਅੱਗੇ ਵਧ ਜਾਂਦੇ ਹਨ। ਉਹ ਸੁਰੱਖਿਆ (security) ਨੂੰ ਬਾਅਦ ਲਈ ਇੱਕ ਕੰਮ ਵਜੋਂ ਦੇਖਦੇ ਹਨ। ਉਹ ਅਸਲ ਯੂਜ਼ਰਸ ਜਾਂ ਅਸਲ ਪੈਸੇ ਦੇ ਆਉਣ ਦੀ ਉਡੀਕ ਕਰਦੇ ਹਨ।

ਅਸਲ ਵਿੱਤੀ ਨੁਕਸਾਨ ਅਕਸਰ ਸਧਾਰਨ ਗਲਤੀਆਂ ਕਾਰਨ ਹੁੰਦੇ ਹਨ। ਇਹ ਕੋਈ ਗੁੰਝਲਦਾਰ ਹੈਕਸ (hacks) ਨਹੀਂ ਹਨ। ਇਹ ਤੁਹਾਡੇ ਕੋਡ ਵਿੱਚ ਲੌਜਿਕ ਦੀਆਂ ਗਲਤੀਆਂ (logic errors) ਹਨ।

ਇੱਥੇ ਪੈਸਾ ਗਵਾਉਣ ਦੇ ਚਾਰ ਆਮ ਤਰੀਕੇ ਹਨ:

  1. Credit Systems ਵਿੱਚ Race Conditions ਤੁਸੀਂ ਯੂਜ਼ਰ ਦੇ ਬੈਲੇਂਸ ਨੂੰ ਪੜ੍ਹਦੇ ਹੋ, ਉਸਦੀ ਜਾਂਚ ਕਰਦੇ ਹੋ, ਅਤੇ ਫਿਰ ਨਵਾਂ ਬੈਲੇਂਸ ਲਿਖਦੇ ਹੋ। ਜੇਕਰ ਕੋਈ ਯੂਜ਼ਰ ਇੱਕੋ ਸਮੇਂ ਦੋ ਰਿਕੁਐਸਟਾਂ (requests) ਭੇਜਦਾ ਹੈ, ਤਾਂ ਪਹਿਲੀ ਰਿਕੁਐਸਟ ਡਾਟਾਬੇਸ ਨੂੰ ਅਪਡੇਟ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਦੋਵੇਂ ਰਿਕੁਐਸਟਾਂ ਜਾਂਚ ਵਿੱਚੋਂ ਲੰਘ ਸਕਦੀਆਂ ਹਨ। ਤੁਸੀਂ ਇੱਕ ਦੀ ਕੀਮਤ 'ਤੇ ਦੋ ਸੇਵਾਵਾਂ ਦੇ ਰਹੇ ਹੋਵੋਗੇ।

ਹੱਲ: Atomic database operations ਦੀ ਵਰਤੋਂ ਕਰੋ। ਪੜ੍ਹਨ ਅਤੇ ਫਿਰ ਲਿਖਣ ਦੀ ਬਜਾਏ, ਇੱਕ ਸਿੰਗਲ ਕਮਾਂਡ ਦੀ ਵਰਤੋਂ ਕਰੋ ਤਾਂ ਜੋ ਬੈਲੇਂਸ ਉਦੋਂ ਹੀ ਅਪਡੇਟ ਹੋਵੇ ਜੇਕਰ ਯੂਜ਼ਰ ਕੋਲ ਲੋੜੀਂਦੇ ਕ੍ਰੈਡਿਟਸ ਹਨ।

  1. Identity ਲਈ Client Input 'ਤੇ ਭਰੋਸਾ ਕਰਨਾ ਤੁਸੀਂ checkout ਦੌਰਾਨ request body ਤੋਂ ਈਮੇਲ ਐਡਰੈੱਸ ਲੈਂਦੇ ਹੋ। ਇੱਕ authenticated ਯੂਜ਼ਰ ਉਸ ਈਮੇਲ ਨੂੰ ਕਿਸੇ ਹੋਰ ਦੇ ਐਡਰੈੱਸ ਵਿੱਚ ਬਦਲ ਸਕਦਾ ਹੈ। ਇਹ ਉਹਨਾਂ ਨੂੰ ਗਲਤ ਖਾਤਿਆਂ ਲਈ ਬਿਲਿੰਗ ਸੈਸ਼ਨ ਬਣਾਉਣ ਜਾਂ ਤੁਹਾਡੇ ਸਿਸਟਮ ਦੀ ਜਾਂਚ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦਾ ਹੈ।

ਹੱਲ: Request body ਤੋਂ identity 'ਤੇ ਕਦੇ ਵੀ ਭਰੋਸਾ ਨਾ ਕਰੋ। ਆਪਣੇ ਸਰਵਰ 'ਤੇ verified session token ਤੋਂ ਈਮੇਲ ਕੱਢੋ।

  1. Broken Annual Billing Logic ਬਹੁਤ ਸਾਰੇ ਡਿਵੈਲਪਰ Stripe payment events ਨੂੰ ਸੁਣ ਕੇ ਯੂਜ਼ਰ ਕ੍ਰੈਡਿਟਸ ਨੂੰ ਰੀਸੈੱਟ ਕਰਦੇ ਹਨ। ਇਹ ਮਾਸਿਕ (monthly) ਪਲਾਨਾਂ ਲਈ ਕੰਮ ਕਰਦਾ ਹੈ। ਇਹ ਸਾਲਾਨਾ (annual) ਪਲਾਨਾਂ ਲਈ ਫੇਲ ਹੋ ਜਾਂਦਾ ਹੈ। Stripe ਹਰ ਸਾਲ ਇੱਕ event ਭੇਜਦਾ ਹੈ। ਤੁਹਾਡੇ ਯੂਜ਼ਰਾਂ ਨੂੰ ਪਹਿਲੇ ਦਿਨ ਕ੍ਰੈਡਿਟਸ ਮਿਲਦੇ ਹਨ ਅਤੇ ਅਗਲੇ ਗਿਆਰਾਂ ਮਹੀਨਿਆਂ ਲਈ ਕੁਝ ਨਹੀਂ ਮਿਲਦਾ।

ਹੱਲ: Credit resets ਨੂੰ billing events ਤੋਂ ਵੱਖ ਕਰੋ। ਇਹ ਚੈੱਕ ਕਰਨ ਲਈ ਕਿ ਕਿਹੜੇ ਯੂਜ਼ਰਾਂ ਨੂੰ ਰੀਸੈੱਟ ਡੇਟ ਦੇ ਅਧਾਰ 'ਤੇ ਰੀਸੈੱਟ ਦੀ ਲੋੜ ਹੈ, ਇੱਕ daily cron job ਦੀ ਵਰਤੋਂ ਕਰੋ।

  1. Insecure Token Storage ਤੁਸੀਂ password reset tokens ਨੂੰ localStorage ਵਿੱਚ ਸਟੋਰ ਕਰਦੇ ਹੋ। ਤੁਹਾਡੇ ਪੇਜ 'ਤੇ ਕੋਈ ਵੀ script localStorage ਤੱਕ ਪਹੁੰਚ ਸਕਦੀ ਹੈ। ਇਸ ਵਿੱਚ ਬ੍ਰਾਊਜ਼ਰ ਐਕਸਟੈਂਸ਼ਨਾਂ ਅਤੇ third-party analytics ਸ਼ਾਮਲ ਹਨ।

ਹੱਲ: Recovery tokens ਨੂੰ ਸੰਭਾਲਣ ਲਈ ਆਪਣੇ authentication SDK ਦੀ ਵਰਤੋਂ ਕਰੋ। ਲਾਇਬ੍ਰੇਰੀ ਨੂੰ token ਨੂੰ local storage ਵਿੱਚ ਸਟੋਰ ਕੀਤੇ ਬਿਨਾਂ ਆਪਣੇ ਆਪ ਪ੍ਰੋਸੈਸ ਕਰਨ ਦਿਓ।

ਸਮੱਸਿਆ ਹਮੇਸ਼ਾ ਇੱਕੋ ਜਿਹੀ ਹੁੰਦੀ ਹੈ: ਤੁਸੀਂ client 'ਤੇ ਭਰੋਸਾ ਕਰਦੇ ਹੋ। ਤੁਸੀਂ ਭਰੋਸਾ ਕਰਦੇ ਹੋ ਕਿ ਰਿਕੁਐਸਟਾਂ ਇੱਕ ਸਮੇਂ 'ਤੇ ਇੱਕ ਕਰਕੇ ਆਉਂਦੀਆਂ ਹਨ। ਤੁਸੀਂ ਭਰੋਸਾ ਕਰਦੇ ਹੋ ਕਿ ਬਿਲਿੰਗ events ਹਰ ਮਾਮਲੇ ਨੂੰ ਕਵਰ ਕਰਦੇ ਹਨ।

ਇਹਨਾਂ ਸਮੱਸਿਆਵਾਂ ਨੂੰ ਸੁਧਾਰਨ ਵਿੱਚ ਇੱਕ ਦਿਨ ਤੋਂ ਵੀ ਘੱਟ ਸਮਾਂ ਲੱਗਦਾ ਹੈ। ਪੈਸਾ ਗਵਾਉਣ ਤੋਂ ਪਹਿਲਾਂ ਆਪਣੇ ਕੋਡ ਦਾ ਆਡਿਟ (audit) ਕਰੋ।

Source: https://dev.to/manolito99/your-saas-is-probably-leaking-money-right-now-and-you-dont-know-it-1g38