"ਮਿਟਾਏ ਜਾਣ" ਤੋਂ ਬਾਅਦ ਵੀ git log ਰਾਜ਼ਾਂ ਦਾ ਪਰਦਾਫਾਸ਼ ਕਿਉਂ ਕਰਦਾ ਹੈ?
ਇੱਕ ਫਾਈਲ ਤੋਂ ਇੱਕ ਲਾਈਨ ਮਿਟਾਉਣਾ ਅਤੇ commitਤਬਦੀਲੀ ਨੂੰ ਦਰਜ ਕਰਨ ਨਾਲ ਅਸਲ ਵਿੱਚ ਤੁਹਾਡੇ ਰੈਪੋ ਤੋਂ ਸੰਵੇਦਨਸ਼ੀਲ ਡੇਟਾ ਨਹੀਂ ਹਟਦਾ। ਜੇਕਰ ਉਹ ਰਾਜ਼, ਇੱਕ API ਕੁੰਜੀ, ਪ੍ਰਮਾਣ ਪੱਤਰ, ਜਾਂ ਟੋਕਨ, ਕਦੇ ਸੀ commitਟੈੱਡ, ਇਹ ਤੁਹਾਡੇ Git ਇਤਿਹਾਸ ਵਿੱਚ ਰਹਿੰਦਾ ਹੈ। ਕੋਈ ਵੀ ਚੱਲ ਰਿਹਾ ਹੈ ਗਿੱਟ ਲੌਗ -ਪੀ, ਗਿੱਟ ਸ਼ੋਅ, ਜਾਂ ਪਿਛਲੇ ਸਮੇਂ ਤੋਂ ਭਿੰਨਤਾਵਾਂ ਦੀ ਜਾਂਚ ਕਰਨਾ commitਉਪਭੋਗਤਾ ਅਜੇ ਵੀ ਇਸਨੂੰ ਪ੍ਰਾਪਤ ਕਰ ਸਕਦੇ ਹਨ।
ਭਾਵੇਂ ਤੁਸੀਂ ਕਿਸੇ ਫਾਈਲ ਨੂੰ ਓਵਰਰਾਈਟ ਕਰਦੇ ਹੋ ਜਾਂ ਮੁੱਲ ਬਦਲਦੇ ਹੋ, git ਲਾਗ ਹਰ ਬਦਲਾਅ ਦੀ ਪੂਰੀ ਵੰਸ਼ ਨੂੰ ਸੁਰੱਖਿਅਤ ਰੱਖਦਾ ਹੈ। ਇਹ ਡਿਜ਼ਾਈਨ ਦੁਆਰਾ ਹੈ। ਗਿੱਟ ਦਾ ਪੂਰਾ ਮਾਡਲ ਅਟੱਲ 'ਤੇ ਅਧਾਰਤ ਹੈ commit ਇਤਿਹਾਸ ਅਤੇ ਵੰਡੀਆਂ ਹੋਈਆਂ ਕਾਪੀਆਂ। ਇਸ ਲਈ ਜਦੋਂ ਤੱਕ ਤੁਸੀਂ ਸਪਸ਼ਟ ਤੌਰ 'ਤੇ ਇਤਿਹਾਸ ਨੂੰ ਦੁਬਾਰਾ ਨਹੀਂ ਲਿਖਦੇ, ਤੁਹਾਡੇ ਭੇਦ ਅਜੇ ਵੀ ਉੱਥੇ ਹੀ ਹਨ। ਇੱਥੇ ਇੱਕ ਵਿਹਾਰਕ ਮਾਮਲਾ ਹੈ:
⚠️ ਵਿਦਿਅਕ ਉਦਾਹਰਣ, ਉਤਪਾਦਨ ਵਿੱਚ ਨਾ ਚਲਾਓ
ਬਹੁਤ ਦੇਰ ਹੋ ਗਈ। git ਲਾਗ ਅਜੇ ਵੀ ਸ਼ੁਰੂਆਤੀ ਵਿੱਚ ਉਹ ਕੁੰਜੀ ਦਿਖਾਉਂਦਾ ਹੈ commit.
ਗਿੱਟ ਸਟੈਸ਼ ਅਤੇ ਗਿੱਟ ਰੀਬੇਸ ਬਾਰੇ ਗਲਤ ਧਾਰਨਾਵਾਂ
ਬਹੁਤ ਸਾਰੇ ਡਿਵੈਲਪਰ ਮੰਨਦੇ ਹਨ ਗਿੱਟ ਸਟੈਸ਼ ਭੇਦ ਲੁਕਾਉਣ ਜਾਂ ਸਾਫ਼ ਕਰਨ ਵਿੱਚ ਮਦਦ ਕਰਦਾ ਹੈ। ਸੱਚ ਨਹੀਂ। ਗਿੱਟ ਸਟੈਸ਼ ਸਿਰਫ਼ ਸ਼ੈਲਫਾਂ ਵਰਕਿੰਗ ਡਾਇਰੈਕਟਰੀ ਅਸਥਾਈ ਤੌਰ 'ਤੇ ਬਦਲਦਾ ਹੈ; ਇਹ ਕਦੇ ਨਹੀਂ ਛੂੰਹਦਾ commit ਇਤਿਹਾਸ। ਜੇ ਕੋਈ ਰਾਜ਼ ਕਦੇ ਹੁੰਦਾ commitਖੈਰ, ਬਾਅਦ ਵਿੱਚ ਬਦਲਾਵਾਂ ਨੂੰ ਛੁਪਾਉਣ ਨਾਲ ਇਸਨੂੰ ਸਾਫ਼ ਕਰਨ ਵਿੱਚ ਕੁਝ ਨਹੀਂ ਆਉਂਦਾ।
ਕੀ ਇਸ ਬਾਰੇ ਗਿੱਟ ਰੀਬੇਸ? ਜਦੋਂ ਕਿ ਇਹ ਇਤਿਹਾਸ ਨੂੰ ਦੁਬਾਰਾ ਲਿਖ ਸਕਦਾ ਹੈ, ਇਹ ਪਹਿਲਾਂ ਕੀਤਾ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈcisਏਲੀ। ਬੱਸ ਦੌੜ ਰਿਹਾ ਹਾਂ git ਰੀਬੇਸ -i ਅਤੇ ਮੁੜ ਕ੍ਰਮਬੱਧ ਕਰਨਾ ਜਾਂ ਸਕੁਐਸ਼ ਕਰਨਾ commits ਰਾਜ਼ਾਂ ਨੂੰ ਉਦੋਂ ਤੱਕ ਨਹੀਂ ਹਟਾਉਂਦਾ ਜਦੋਂ ਤੱਕ ਤੁਸੀਂ ਉਹਨਾਂ ਨੂੰ ਸਪਸ਼ਟ ਤੌਰ 'ਤੇ ਸੰਪਾਦਿਤ ਜਾਂ ਛੱਡ ਨਹੀਂ ਦਿੰਦੇ। ਅਤੇ ਜੇਕਰ ਅਸਲੀ ਨਾਲ ਇੱਕ ਵੀ ਕਲੋਨ ਜਾਂ ਫੋਰਕ ਮੌਜੂਦ ਹੈ commitਹਾਂ, ਤੁਹਾਡਾ ਰਾਜ਼ ਜ਼ਿੰਦਾ ਹੈ।
ਇਸ ਤੋਂ ਵੀ ਮਾੜੀ ਗੱਲ ਇਹ ਹੈ ਕਿ ਸਹੀ ਢੰਗ ਨਾਲ ਜ਼ੋਰ-ਧੱਕਾ ਕੀਤੇ ਬਿਨਾਂ ਜਾਂ ਸਹਿਯੋਗੀਆਂ ਨਾਲ ਮੁੜ ਤਾਲਮੇਲ ਕੀਤੇ ਬਿਨਾਂ ਰੀਬੇਸਿੰਗ, ਵਿਲੀਨਤਾਵਾਂ ਰਾਹੀਂ ਪ੍ਰਗਟ ਕੀਤੇ ਪ੍ਰਮਾਣ ਪੱਤਰਾਂ ਨੂੰ ਦੁਬਾਰਾ ਪੇਸ਼ ਕਰ ਸਕਦੀ ਹੈ।
⚠️ ਵਿਦਿਅਕ ਉਦਾਹਰਣ, ਅਸਲ ਵਾਤਾਵਰਣ ਵਿੱਚ ਨਾ ਵਰਤੋ
⚠️ ਵਿਦਿਅਕ ਉਦਾਹਰਣ, ਉਤਪਾਦਨ ਰਿਪੋਜ਼ 'ਤੇ ਨਾ ਚਲਾਓ
ਸੰਪਾਦਿਤ ਕਰੋ commit ਰਾਜ਼ ਰੱਖਦਾ ਹੈ, ਪਰ ਇਸਨੂੰ ਹਟਾਉਣਾ ਭੁੱਲ ਜਾਓ। ਤੁਹਾਡਾ git ਲਾਗ ਸ਼ਾਇਦ ਵੇਖੋ ਸਾਫ਼, ਪਰ ਸੰਵੇਦਨਸ਼ੀਲ ਸਮੱਗਰੀ ਅਜੇ ਵੀ ਮੁੜ ਪ੍ਰਾਪਤ ਕੀਤੀ ਜਾ ਸਕਦੀ ਹੈ।
ਗਿੱਟ ਇਤਿਹਾਸ ਵਿੱਚ ਭੁੱਲੇ ਹੋਏ ਪ੍ਰਮਾਣ ਪੱਤਰਾਂ ਤੋਂ ਅਸਲ-ਸੰਸਾਰ ਦੇ ਜੋਖਮ
ਇਹ ਸਿਧਾਂਤਕ ਨਹੀਂ ਹੈ। ਹਮਲਾਵਰ ਜਨਤਕ ਅਤੇ ਨਿੱਜੀ ਰਿਪੋਜ਼ਿਟਾਂ ਨੂੰ ਸਰਗਰਮੀ ਨਾਲ ਸਕੈਨ ਕਰਦੇ ਹਨ ਕਿ ਉਹਨਾਂ ਵਿੱਚ ਲੁਕੇ ਹੋਏ ਰਾਜ਼ ਕੀ ਹਨ commit ਇਤਿਹਾਸ। GitHub ਫੋਰਕ, ਮਿਰਰ ਰਿਪੋ, ਅਤੇ ਕੈਸ਼ਡ CI/CD pipelineਸਾਰੇ ਉਪਭੋਗਤਾ ਉਹਨਾਂ ਭੁੱਲੇ ਹੋਏ ਟੋਕਨਾਂ ਨੂੰ ਰੱਖ ਸਕਦੇ ਹਨ।
- ਇੱਕ ਪੁਰਾਣੇ ਤੋਂ ਲੀਕ ਹੋਈ API ਕੁੰਜੀ git ਲਾਗ ਇੱਕ ਸਟਾਰਟਅੱਪ ਲਈ ਹਜ਼ਾਰਾਂ ਕਲਾਉਡ ਬਿਲਿੰਗ ਦਾ ਕਾਰਨ ਬਣਿਆ।
- OAuth ਟੋਕਨ committed, ਫਿਰ "ਮਿਟਾਏ ਗਏ", ਉਪਭੋਗਤਾ ਖਾਤਿਆਂ ਨੂੰ ਹਾਈਜੈਕ ਕਰਨ ਲਈ ਵਰਤੇ ਗਏ ਸਨ।
- ਓਪਨ ਸੋਰਸ ਪ੍ਰੋਜੈਕਟਾਂ ਦੇ ਕਾਂਟੇ ਵਿੱਚ ਡੂੰਘੇ ਦੱਬੇ ਹੋਏ ਰਾਜ਼ਾਂ ਨੇ ਵੱਡੀਆਂ ਸੁਰੱਖਿਆ ਘਟਨਾਵਾਂ ਨੂੰ ਜਨਮ ਦਿੱਤਾ।
ਇਹ ਸਮੱਸਿਆਵਾਂ ਇਸ ਵਿੱਚ ਫੈਲਦੀਆਂ ਹਨ CI/CD. ਹਰ ਕੰਮ ਜੋ ਰੈਪੋ ਨੂੰ ਕਲੋਨ ਕਰਦਾ ਹੈ, ਚੱਲਦਾ ਹੈ git ਲਾਗ ਹੁੱਡ ਦੇ ਹੇਠਾਂ, ਅਤੇ ਹਰੇਕ ਬਿਲਡ ਆਰਟੀਫੈਕਟ ਵਿੱਚ ਸੰਭਾਵੀ ਤੌਰ 'ਤੇ ਉਜਾਗਰ ਹੋਏ ਰਾਜ਼ਾਂ ਦੇ ਨਿਸ਼ਾਨ ਸ਼ਾਮਲ ਹੋ ਸਕਦੇ ਹਨ।
ਗਿੱਟ ਫਿਲਟਰ-ਰੇਪੋ ਨਾਲ ਸੰਵੇਦਨਸ਼ੀਲ ਡੇਟਾ ਨੂੰ ਸਾਫ਼ ਕਰਨਾ
ਜੇਕਰ ਨੁਕਸਾਨ ਹੋ ਗਿਆ ਹੈ, ਤਾਂ ਇਸਨੂੰ ਸਾਫ਼ ਕਰਨ ਦਾ ਸਭ ਤੋਂ ਭਰੋਸੇਮੰਦ ਸਾਧਨ ਹੈ git ਫਿਲਟਰ-ਰੇਪੋ. ਉਲਟ ਗਿੱਟ ਰੀਬੇਸ, ਜੋ ਦੁਬਾਰਾ ਲਿਖਦਾ ਹੈ ਵਿਅਕਤੀਗਤ commits, git ਫਿਲਟਰ-ਰੇਪੋ ਪੂਰਾ ਦੁਬਾਰਾ ਲਿਖ ਸਕਦਾ ਹੈ commit ਫਾਈਲ ਮਾਰਗਾਂ, ਪੈਟਰਨਾਂ, ਜਾਂ ਸਮੱਗਰੀ 'ਤੇ ਅਧਾਰਤ ਇਤਿਹਾਸ।
ਉਦਾਹਰਨ: ਸਾਰੀਆਂ ਘਟਨਾਵਾਂ ਨੂੰ ਰਗੜਨਾ config.json ਜਿਸ ਵਿੱਚ ਭੇਦ ਹੋ ਸਕਦੇ ਹਨ:
⚠️ ਵਿਦਿਅਕ ਉਦਾਹਰਣ, ਉਤਪਾਦਨ ਵਿੱਚ ਵਰਤਣ ਤੋਂ ਪਹਿਲਾਂ ਇੱਕ ਟੈਸਟ ਰੈਪੋ ਵਿੱਚ ਪੁਸ਼ਟੀ ਕਰੋ
ਜਾਂ ਸਭ ਨੂੰ ਹਟਾਉਣ ਲਈ commits ਜਿਸ ਵਿੱਚ ਇੱਕ ਖਾਸ ਸਤਰ ਸ਼ਾਮਲ ਹੁੰਦੀ ਹੈ (ਜਿਵੇਂ ਕਿ, AWS_SECRET_ACCESS_KEY):
⚠️ ਵਿਦਿਅਕ ਉਦਾਹਰਣ, ਉਤਪਾਦਨ ਵਿੱਚ ਵਰਤਣ ਤੋਂ ਪਹਿਲਾਂ ਇੱਕ ਟੈਸਟ ਰੈਪੋ ਵਿੱਚ ਪੁਸ਼ਟੀ ਕਰੋ
ਸਾਵਧਾਨ ਰਹੋ: ਇਹ ਦੁਬਾਰਾ ਲਿਖੇਗਾ commit ਹੈਸ਼। ਤੁਹਾਨੂੰ ਜ਼ਬਰਦਸਤੀ ਧੱਕਾ ਦੇਣਾ ਪਵੇਗਾ ਅਤੇ ਸਾਰੇ ਸਹਿਯੋਗੀਆਂ ਨੂੰ ਸੂਚਿਤ ਕਰਨਾ ਪਵੇਗਾ। ਕੋਈ ਵੀ ਆਟੋਮੇਸ਼ਨ ਜਾਂ ਡਿਪਲਾਇਮੈਂਟ ਕੁੰਜੀਆਂ ਜੋ commit ਹੈਸ਼ ਟੁੱਟ ਜਾਣਗੇ।
ਨਾਲ ਹੀ, ਟੂਲ ਜਿਵੇਂ ਕਿ BFG ਰੈਪੋ-ਕਲੀਨਰ ਸਮਾਨ ਸਮਰੱਥਾਵਾਂ ਦੀ ਪੇਸ਼ਕਸ਼ ਕਰਦੇ ਹਨ ਪਰ ਘੱਟ ਲਚਕਦਾਰ ਹਨ ਅਤੇ ਹੁਣ ਗੁੰਝਲਦਾਰ ਮਾਮਲਿਆਂ ਲਈ ਪੁਰਾਣੇ ਮੰਨੇ ਜਾਂਦੇ ਹਨ।
ਗੁਪਤ ਲੀਕ ਨੂੰ ਗਿੱਟ ਤੱਕ ਪਹੁੰਚਣ ਤੋਂ ਪਹਿਲਾਂ ਰੋਕਣਾ
ਰੋਕਥਾਮ ਸਫਾਈ ਤੋਂ ਵੀ ਵਧੀਆ ਹੈ। ਇੱਥੇ ਦੱਸਿਆ ਗਿਆ ਹੈ ਕਿ ਭੇਤਾਂ ਨੂੰ ਕਦੇ ਵੀ ਪ੍ਰਭਾਵਿਤ ਹੋਣ ਤੋਂ ਕਿਵੇਂ ਰੋਕਿਆ ਜਾਵੇ। git ਲਾਗ:
1. Pre-commit Hooks
ਵਰਗੇ ਸਾਧਨਾਂ ਦੀ ਵਰਤੋਂ ਕਰੋ pre-commit, ਗਿਟਲਿਕਸ, ਜ ਤਵੀਤ ਪਹਿਲਾਂ ਭੇਦ ਖੋਜਣ ਲਈ commits:
2. CI/CD Pipeline ਲਾਗੂ ਕਰਨਾ
ਇਕਮੁੱਠ ਕਰੋ ਗੁਪਤ ਖੋਜ ਆਪਣੀਆਂ CI ਨੌਕਰੀਆਂ ਵਿੱਚ। ਜਦੋਂ ਰਾਜ਼ ਲੱਭੇ ਜਾਂਦੇ ਹਨ ਤਾਂ ਅਸਫਲਤਾ ਬਣਦੀ ਹੈ। ਇਸਨੂੰ ਇੱਕ ਨੀਤੀ ਬਣਾਓ।
3. ਭੇਦ ਪ੍ਰਬੰਧਨ
ਕਦੇ ਵੀ ਕ੍ਰੇਡੇੰਸ਼ਿਅਲ ਹਾਰਡਕੋਡ ਨਾ ਕਰੋ। ਪਹਿਲੇ ਦਿਨ ਤੋਂ ਹੀ ਵਾਤਾਵਰਣ ਵੇਰੀਏਬਲ, ਵਾਲਟ, ਜਾਂ ਗੁਪਤ ਪ੍ਰਬੰਧਕਾਂ ਦੀ ਵਰਤੋਂ ਕਰੋ।
4. ਆਡਿਟ ਨਿਰਭਰਤਾਵਾਂ
ਤੀਜੀ-ਧਿਰ ਦੇ ਪੈਕੇਜਾਂ 'ਤੇ ਅੰਨ੍ਹੇਵਾਹ ਭਰੋਸਾ ਨਾ ਕਰੋ। ਭੇਤ ਲੀਕ ਹੋ ਸਕਦੇ ਹਨ npm, PyPI, ਜਾਂ ਡੌਕਰ ਲੇਅਰਾਂ ਰਾਹੀਂ।
ਅੰਤਿਮ ਹੱਲ: ਗਿੱਟ ਫਿਲਟਰ-ਰੇਪੋ ਨਾਲ ਸਕ੍ਰੱਬ ਸੀਕਰੇਟਸ
ਕੋਡ ਵਿੱਚੋਂ ਭੇਦ ਮਿਟਾਉਣਾ ਕਾਫ਼ੀ ਨਹੀਂ ਹੈ। git ਲਾਗ ਜਦੋਂ ਤੱਕ ਤੁਸੀਂ ਇਤਿਹਾਸ ਨੂੰ ਦੁਬਾਰਾ ਲਿਖਣ ਲਈ ਜਾਣਬੁੱਝ ਕੇ ਕਾਰਵਾਈ ਨਹੀਂ ਕਰਦੇ, ਪੂਰਾ ਰਿਕਾਰਡ ਰੱਖਦਾ ਹੈ। ਇਸ 'ਤੇ ਭਰੋਸਾ ਨਾ ਕਰੋ ਗਿੱਟ ਸਟੈਸ਼ ਜਾਂ ਅੱਧਾ ਪੱਕਿਆ ਹੋਇਆ ਗਿੱਟ ਰੀਬੇਸ ਕੋਸ਼ਿਸ਼ਾਂ। ਵਰਤੋਂ git ਫਿਲਟਰ-ਰੇਪੋ ਜਦੋਂ ਤੁਹਾਨੂੰ ਡੂੰਘੀ ਸਫਾਈ ਦੀ ਲੋੜ ਹੋਵੇ, ਅਤੇ ਗੁਪਤ ਜਾਣਕਾਰੀ ਤੁਹਾਡੇ ਭੰਡਾਰ ਤੱਕ ਪਹੁੰਚਣ ਤੋਂ ਪਹਿਲਾਂ ਨੀਤੀਆਂ ਅਤੇ ਸਕੈਨਿੰਗ ਨੂੰ ਲਾਗੂ ਕਰੋ।
ਸਰਗਰਮ ਗੁਪਤ ਖੋਜ ਲਈ, ਵਰਗੇ ਸਾਧਨਾਂ ਦੀ ਵਰਤੋਂ ਕਰਨ 'ਤੇ ਵਿਚਾਰ ਕਰੋ ਜ਼ਾਇਗੇਨੀ ਆਪਣੇ ਨੂੰ ਸੁਰੱਖਿਅਤ ਕਰਨ ਲਈ pipelines, ਲਾਗੂ ਕਰੋ commit ਸਫਾਈ, ਅਤੇ ਮਹਿੰਗੇ ਲੀਕ ਨੂੰ ਸਾਹਮਣੇ ਆਉਣ ਤੋਂ ਪਹਿਲਾਂ ਹੀ ਰੋਕੋ। ਗਿੱਟ ਕਦੇ ਨਹੀਂ ਭੁੱਲਦਾ, ਪਰ ਤੁਸੀਂ ਇਹ ਯਕੀਨੀ ਬਣਾ ਸਕਦੇ ਹੋ ਕਿ ਇਹ ਤੁਹਾਡੇ ਭੇਦ ਕਦੇ ਵੀ ਯਾਦ ਨਾ ਰੱਖੇ।





