{"id":28295,"date":"2026-08-26T00:10:41","date_gmt":"2026-08-26T00:10:41","guid":{"rendered":"https:\/\/umang.pk\/2026\/08\/26\/%d9%84%db%8c%da%a9-%d8%b4%d8%af%db%81-api-%da%a9%d9%84%db%8c%d8%af-%da%a9%d9%88-%da%a9%db%8c%d8%b3%db%92-%d9%b9%da%be%db%8c%da%a9-%da%a9%db%8c%d8%a7-%d8%ac%d8%a7%d8%a6%db%92-%da%af%d9%b9-%d8%b3%db%8c\/"},"modified":"2026-08-26T00:10:41","modified_gmt":"2026-08-26T00:10:41","slug":"%d9%84%db%8c%da%a9-%d8%b4%d8%af%db%81-api-%da%a9%d9%84%db%8c%d8%af-%da%a9%d9%88-%da%a9%db%8c%d8%b3%db%92-%d9%b9%da%be%db%8c%da%a9-%da%a9%db%8c%d8%a7-%d8%ac%d8%a7%d8%a6%db%92-%da%af%d9%b9-%d8%b3%db%8c","status":"publish","type":"post","link":"https:\/\/umang.pk\/en_us\/2026\/08\/26\/%d9%84%db%8c%da%a9-%d8%b4%d8%af%db%81-api-%da%a9%d9%84%db%8c%d8%af-%da%a9%d9%88-%da%a9%db%8c%d8%b3%db%92-%d9%b9%da%be%db%8c%da%a9-%da%a9%db%8c%d8%a7-%d8%ac%d8%a7%d8%a6%db%92-%da%af%d9%b9-%d8%b3%db%8c\/","title":{"rendered":"\u0644\u06cc\u06a9 \u0634\u062f\u06c1 API \u06a9\u0644\u06cc\u062f \u06a9\u0648 \u06a9\u06cc\u0633\u06d2 \u0679\u06be\u06cc\u06a9 \u06a9\u06cc\u0627 \u062c\u0627\u0626\u06d2: \u06af\u0679 \u0633\u06cc\u06a9\u06cc\u0648\u0631\u0679\u06cc \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u06cc\u06a9 \u0688\u0648\u06cc\u0644\u067e\u0631 \u06af\u0627\u0626\u06cc\u0688"},"content":{"rendered":"\n<div id=\"\">\n<p>\u0627\u0633 \u06a9\u0627 \u062a\u0635\u0648\u0631 \u06a9\u0631\u06cc\u06ba\u06d4 \u0622\u067e \u062f\u06cc\u0631 \u0633\u06d2 \u06a9\u0627\u0645 \u06a9\u0631 \u0631\u06c1\u06d2 \u06c1\u06cc\u06ba \u0627\u0648\u0631 \u0622\u067e \u06a9\u0627 \u06a9\u0648\u0688 \u0622\u062e\u0631 \u06a9\u0627\u0631 \u06a9\u0627\u0645 \u06a9\u0631 \u0631\u06c1\u0627 \u06c1\u06d2 \u0627\u0648\u0631 GitHub \u067e\u0631 \u062c\u0627\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u062a\u06cc\u0627\u0631 \u06c1\u06d2\u06d4<\/p>\n<p>\u0686\u0644\u0627\u0626\u06cc\u06ba:<\/p>\n<pre><code class=\"language-bash\">git add .\ngit commit -m \"Fix API integration\"\ngit push\n<\/code><\/pre>\n<p>\u0686\u0646\u062f \u0645\u0646\u0679\u0648\u06ba \u06a9\u06d2 \u0628\u0639\u062f\u060c \u0622\u067e \u0646\u06d2 \u06a9\u0686\u06be \u0639\u062c\u06cc\u0628 \u0645\u062d\u0633\u0648\u0633 \u06a9\u06cc\u0627\u06d4 API \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u0627\u0686\u0627\u0646\u06a9 \u0628\u0691\u06be \u06af\u06cc\u0627 \u06c1\u06d2\u06d4 \u0622\u067e \u06a9\u06d2 \u067e\u0627\u0633 \u063a\u06cc\u0631 \u0645\u062a\u0648\u0642\u0639 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u06cc\u06ba\u060c \u0646\u0626\u06d2 \u06a9\u0644\u0627\u0624\u0688 \u0648\u0633\u0627\u0626\u0644\u060c \u06cc\u0627 \u0628\u0644\u0632 \u06c1\u0648 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba \u062c\u0648 \u062a\u0648\u0642\u0639 \u0633\u06d2 \u06a9\u06c1\u06cc\u06ba \u0632\u06cc\u0627\u062f\u06c1 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u067e\u06be\u0631 \u0622\u067e \u0627\u0633\u06d2 \u062a\u0644\u0627\u0634 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba:<\/p>\n<pre><code class=\"language-javascript\">const apiKey = \"sk_live_123456789\";\n<\/code><\/pre>\n<p>\u0622\u067e \u06a9\u06cc API \u06a9\u0644\u06cc\u062f \u0622\u067e \u06a9\u06d2 Git \u0630\u062e\u06cc\u0631\u06c1 \u0645\u06cc\u06ba \u06c1\u06d2\u06d4<\/p>\n<p>\u06cc\u06c1 \u0635\u0648\u0631\u062a \u062d\u0627\u0644 \u062f\u0628\u0627\u0624 \u06c1\u06d2\u060c \u0644\u06cc\u06a9\u0646 \u06cc\u06c1 \u062f\u0631\u0633\u062a \u06c1\u06d2.<\/p>\n<p>\u0633\u0628 \u0633\u06d2 \u0627\u06c1\u0645 \u0642\u0648\u0627\u0646\u06cc\u0646 \u06c1\u06cc\u06ba:<\/p>\n<blockquote>\n<p><strong>\u0627\u06af\u0631 \u0622\u067e \u06a9\u06cc API \u06a9\u0644\u06cc\u062f \u06af\u0679 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0645\u0631\u062a\u06a9\u0628 \u06c1\u0648\u0626\u06cc \u06c1\u06d2 \u062a\u0648 \u0641\u0631\u0636 \u06a9\u0631\u06cc\u06ba \u06a9\u06c1 \u0627\u0633 \u06a9\u06cc \u06a9\u0627\u067e\u06cc \u0627\u0648\u0631 \u062e\u0631\u0627\u0628 \u06c1\u0648 \u06af\u0626\u06cc \u06c1\u06d2\u060c \u0686\u0627\u06c1\u06d2 \u0622\u067e \u0627\u0633\u06d2 \u0641\u0648\u0631\u06cc \u0637\u0648\u0631 \u067e\u0631 \u062d\u0630\u0641 \u06a9\u0631 \u062f\u06cc\u06ba\u06d4<\/strong><\/p>\n<\/blockquote>\n<p>\u0641\u0627\u0626\u0644 \u06a9\u06d2 \u0646\u0626\u06d2 \u0648\u0631\u0698\u0646 \u0633\u06d2 \u06a9\u0644\u06cc\u062f \u06a9\u0648 \u062d\u0630\u0641 \u06a9\u0631\u0646\u0627 \u0627\u0633 \u0628\u0627\u062a \u06a9\u0648 \u06cc\u0642\u06cc\u0646\u06cc \u0646\u06c1\u06cc\u06ba \u0628\u0646\u0627\u062a\u0627 \u06a9\u06c1 \u067e\u0631\u0627\u0646\u06cc \u06a9\u0644\u06cc\u062f \u0645\u062d\u0641\u0648\u0638 \u0631\u06c1\u06d2\u06d4 Git \u0641\u0627\u0626\u0644\u0648\u06ba \u06a9\u06d2 \u067e\u0686\u06be\u0644\u06d2 \u0648\u0631\u0698\u0646 \u06a9\u0648 \u0627\u067e\u0646\u06cc \u062a\u0627\u0631\u06cc\u062e \u0645\u06cc\u06ba \u0631\u06a9\u06be\u062a\u0627 \u06c1\u06d2\u060c \u0627\u0648\u0631 \u0628\u06d2 \u0646\u0642\u0627\u0628 \u0627\u0633\u0646\u0627\u062f \u06a9\u0648 \u062e\u0648\u062f\u06a9\u0627\u0631 \u0633\u06a9\u06cc\u0646\u0631\u0632 \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u0628\u0627\u0632\u06cc\u0627\u0641\u062a \u06a9\u06cc\u0627 \u062c\u0627 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u0633 \u06af\u0627\u0626\u06cc\u0688 \u0645\u06cc\u06ba \u0622\u067e \u0633\u06cc\u06a9\u06be\u06cc\u06ba \u06af\u06d2:<\/p>\n<p>\u06c1\u0645 \u067e\u0648\u0631\u06d2 \u0645\u0636\u0645\u0648\u0646 \u0645\u06cc\u06ba \u062f\u0631\u062c \u0630\u06cc\u0644 \u0628\u0646\u06cc\u0627\u062f\u06cc \u0648\u0631\u06a9 \u0641\u0644\u0648 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba:<\/p>\n<pre><code class=\"language-text\">Invalidate \u2192 Investigate \u2192 Remove \u2192 Replace \u2192 Prevent\n<\/code><\/pre>\n<p>\u0627\u0633 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u06a9\u06c1 \u06c1\u0645 \u0633\u0628 \u0633\u06d2 \u0627\u06c1\u0645 \u062d\u0635\u06d2 \u067e\u0631 \u067e\u06c1\u0646\u0686\u06cc\u06ba: \u0627\u0633 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u06a9\u06cc\u0627 \u06a9\u0631\u0646\u0627 \u06c1\u06d2\u060c \u0622\u0626\u06cc\u06d2 \u0627\u0633 \u0633\u06d2 \u0634\u0631\u0648\u0639 \u06a9\u0631\u06cc\u06ba \u06a9\u06c1 API \u06a9\u0644\u06cc\u062f \u0627\u0635\u0644 \u0645\u06cc\u06ba \u06a9\u06cc\u0627 \u06c1\u06d2\u06d4 <strong>\u0627\u0628\u06be\u06cc<\/strong> \u0686\u0627\u0628\u06cc \u0628\u06d2 \u0646\u0642\u0627\u0628 \u06c1\u0648\u0646\u06d2 \u06a9\u06d2 \u0628\u0639\u062f\u06d4<\/p>\n<h2 id=\"heading-what-is-an-api-key\">API \u06a9\u0644\u06cc\u062f \u06a9\u06cc\u0627 \u06c1\u06d2\u061f<\/h2>\n<p>API \u06a9\u06cc\u0632 \u0648\u06c1 \u0627\u0633\u0646\u0627\u062f \u06c1\u06cc\u06ba \u062c\u0648 \u0622\u067e \u06a9\u06cc \u0627\u06cc\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u06a9\u0648 \u062f\u0648\u0633\u0631\u06cc \u0633\u0631\u0648\u0633\u0632 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0628\u0627\u062a \u0686\u06cc\u062a \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0627\u062c\u0627\u0632\u062a \u062f\u06cc\u062a\u06cc \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u0645\u062b\u0627\u0644 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631\u060c \u0622\u067e \u06a9\u06cc \u0627\u06cc\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0631\u0633\u0627\u0626\u06cc \u06a9\u06d2 \u0644\u06cc\u06d2 API \u06a9\u0644\u06cc\u062f \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631 \u0633\u06a9\u062a\u06cc \u06c1\u06d2:<\/p>\n<p>\u0686\u0627\u0628\u06cc\u0627\u06ba \u06c1\u06cc\u06ba:<\/p>\n<pre><code class=\"language-javascript\">const apiKey = \"your-real-api-key\";\n<\/code><\/pre>\n<p>\u06cc\u0627 \u06cc\u06c1 \u06a9\u0646\u0641\u06cc\u06af\u0631\u06cc\u0634\u0646 \u0641\u0627\u0626\u0644 \u0645\u06cc\u06ba \u0638\u0627\u06c1\u0631 \u06c1\u0648 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-json\">{\n  \"apiKey\": \"your-real-api-key\",\n  \"databasePassword\": \"your-real-password\"\n}\n<\/code><\/pre>\n<p>API \u06a9\u06cc\u0632 \u06a9\u0648 \u0627\u06a9\u062b\u0631 \u06a9\u06c1\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4 <strong>\u062f\u06be\u0628\u06d2<\/strong> \u06a9\u06cc\u0648\u0646\u06a9\u06c1 \u0627\u0633 \u06a9\u0627 \u0645\u0627\u0644\u06a9 \u06c1\u0648\u0646\u0627 \u06a9\u0633\u06cc \u06a9\u0648 \u0628\u06be\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u06cc\u06ba \u06a9\u0631\u0646\u06d2\u060c \u0622\u067e \u06a9\u06d2 \u0688\u06cc\u0679\u0627 \u062a\u06a9 \u0631\u0633\u0627\u0626\u06cc\u060c \u0648\u0633\u0627\u0626\u0644 \u0628\u0646\u0627\u0646\u06d2 \u0627\u0648\u0631 \u0622\u067e \u06a9\u06d2 \u0627\u06a9\u0627\u0624\u0646\u0679 \u0633\u06d2 \u0686\u0627\u0631\u062c \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0627\u062c\u0627\u0632\u062a \u062f\u06cc\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u062a\u0645\u0627\u0645 API \u06a9\u06cc\u0632 \u06cc\u06a9\u0633\u0627\u06ba \u0637\u0648\u0631 \u067e\u0631 \u062d\u0633\u0627\u0633 \u0646\u06c1\u06cc\u06ba \u06c1\u06cc\u06ba\u06d4 \u06a9\u0686\u06be \u062e\u062f\u0645\u0627\u062a \u0628\u0631\u0627\u0624\u0632\u0631 \u06a9\u06cc \u0686\u0627\u0628\u06cc\u0627\u06ba \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u06cc \u06c1\u06cc\u06ba \u062c\u0648 \u0635\u0627\u0631\u0641 \u06a9\u0648 \u062c\u0627\u0646 \u0628\u0648\u062c\u06be \u06a9\u0631 \u0646\u0638\u0631 \u0622\u062a\u06cc \u06c1\u06cc\u06ba\u06d4 \u0627\u0646 \u06a9\u0644\u06cc\u062f\u0648\u06ba \u0645\u06cc\u06ba \u0627\u0628 \u0628\u06be\u06cc \u0645\u0646\u0627\u0633\u0628 \u062d\u062f\u0648\u062f\u060c \u06a9\u0648\u0679\u06d2 \u0627\u0648\u0631 \u0627\u062c\u0627\u0632\u062a\u06cc\u06ba \u06c1\u0648\u0646\u06cc \u0686\u0627\u06c1\u0626\u06cc\u06ba\u06d4<\/p>\n<p>\u06cc\u06c1 \u0639\u0627\u0645 \u0637\u0648\u0631 \u067e\u0631 \u0627\u0633 \u0637\u0631\u062d \u06c1\u06d2:<\/p>\n<blockquote>\n<p><strong>\u0627\u06af\u0631 \u0627\u0633\u0646\u0627\u062f \u0630\u0627\u062a\u06cc \u0688\u06cc\u0679\u0627 \u062a\u06a9 \u0631\u0633\u0627\u0626\u06cc \u062d\u0627\u0635\u0644 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u0648\u0633\u0627\u0626\u0644 \u062a\u062e\u0644\u06cc\u0642 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u0631\u06cc\u06a9\u0627\u0631\u0688 \u0645\u06cc\u06ba \u062a\u0631\u0645\u06cc\u0645 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u06cc\u0627 \u0686\u0627\u0631\u062c\u0632 \u062a\u06cc\u0627\u0631 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u062a\u0648 \u0627\u0646\u06c1\u06cc\u06ba \u0628\u0631\u0627\u06c1 \u0631\u0627\u0633\u062a \u0633\u0648\u0631\u0633 \u06a9\u0648\u0688 \u0645\u06cc\u06ba \u0645\u062d\u0641\u0648\u0638 \u0646\u06c1\u06cc\u06ba \u06a9\u06cc\u0627 \u062c\u0627\u0646\u0627 \u0686\u0627\u06c1\u06cc\u06d2\u06d4<\/strong><\/p>\n<\/blockquote>\n<h2 id=\"heading-the-emergency-response-what-to-do-first\">\u06c1\u0646\u06af\u0627\u0645\u06cc \u062c\u0648\u0627\u0628: \u067e\u06c1\u0644\u06d2 \u06a9\u06cc\u0627 \u06a9\u0631\u0646\u0627 \u06c1\u06d2\u06d4<\/h2>\n<p>\u0644\u06cc\u06a9 \u06c1\u0648\u0646\u06d2 \u0648\u0627\u0644\u06cc \u0627\u0633\u0646\u0627\u062f \u06a9\u0648 \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0631\u062a\u06d2 \u0648\u0642\u062a\u060c \u0639\u0627\u0645 \u0631\u062f \u0639\u0645\u0644 \u0641\u0627\u0626\u0644 \u0633\u06d2 \u06a9\u0644\u06cc\u062f \u06a9\u0648 \u062d\u0630\u0641 \u06a9\u0631\u0646\u0627 \u0627\u0648\u0631 \u0627\u06cc\u06a9 \u0627\u0648\u0631 \u06a9\u0645\u0679 \u06a9\u0648 \u0622\u06af\u06d2 \u0628\u0691\u06be\u0627\u0646\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0648\u06c1\u0627\u06ba \u0634\u0631\u0648\u0639 \u0646\u06c1 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<p>\u0622\u067e \u06a9\u06cc \u0627\u0648\u0644\u06cc\u0646 \u062a\u0631\u062c\u06cc\u062d \u06c1\u06d2\u06d4 <strong>\u0644\u06cc\u06a9 \u0634\u062f\u06c1 \u0627\u0633\u0646\u0627\u062f \u06a9\u0648 \u0628\u06cc\u06a9\u0627\u0631 \u0628\u0646\u0627 \u062f\u06cc\u062a\u0627 \u06c1\u06d2\u06d4<\/strong>.<\/p>\n<p>\u062f\u0631\u062c \u0630\u06cc\u0644 \u06a9\u0627\u0645 \u06a9\u06cc \u062a\u0631\u062a\u06cc\u0628 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba:<\/p>\n<pre><code class=\"language-text\">1. Invalidate the leaked credential\n2. Investigate suspicious activity\n3. Remove the secret from your code\n4. Replace it with a new credential\n5. Clean the Git history if necessary\n6. Verify the cleanup\n7. Add protections against future leaks\n<\/code><\/pre>\n<p>\u0627\u067e\u0646\u06cc API \u06a9\u0644\u06cc\u062f \u06a9\u06d2 \u0628\u0627\u0631\u06d2 \u0645\u06cc\u06ba \u0633\u0648\u0686\u06cc\u06ba \u062c\u06cc\u0633\u06d2 \u06af\u06be\u0631 \u06a9\u06cc \u0686\u0627\u0628\u06cc \u06a9\u0633\u06cc \u0645\u0635\u0631\u0648\u0641 \u0633\u0691\u06a9 \u067e\u0631 \u06af\u0631\u0627 \u062f\u06cc \u06af\u0626\u06cc \u06c1\u0648\u06d4<\/p>\n<p>\u0627\u06af\u0631 \u06a9\u0633\u06cc \u0646\u06d2 \u067e\u06c1\u0644\u06d2 \u06c1\u06cc \u0641\u0632\u06cc\u06a9\u0644 \u06a9\u0644\u06cc\u062f \u0627\u0679\u06be\u0627 \u0644\u06cc \u06c1\u06d2\u060c \u062a\u0648 \u06a9\u0644\u06cc\u062f\u06cc \u062a\u0635\u0648\u06cc\u0631 \u06a9\u0648 \u062d\u0630\u0641 \u06a9\u0631\u0646\u06d2 \u0633\u06d2 \u06a9\u0648\u0626\u06cc \u0641\u0631\u0642 \u0646\u06c1\u06cc\u06ba \u067e\u0691\u062a\u0627\u06d4<\/p>\n<p><strong>\u067e\u06c1\u0644\u06d2 \u0627\u067e\u0646\u06d2 \u062a\u0627\u0644\u06d2 \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0631\u06cc\u06ba\u06d4<\/strong><\/p>\n<h2 id=\"heading-step-1-revoke-or-rotate-the-leaked-key\">\u0645\u0631\u062d\u0644\u06c1 1: \u0644\u06cc\u06a9 \u0634\u062f\u06c1 \u06a9\u06cc\u0632 \u06a9\u0648 \u06a9\u0627\u0644\u0639\u062f\u0645 \u06cc\u0627 \u06af\u06be\u0645\u0627\u0626\u06cc\u06ba\u06d4<\/h2>\n<p>\u0627\u0633 \u0633\u0631\u0648\u0633 \u06a9\u06d2 \u0688\u06cc\u0634 \u0628\u0648\u0631\u0688 \u067e\u0631 \u062c\u0627\u0626\u06cc\u06ba \u062c\u0633 \u0646\u06d2 \u0622\u067e \u06a9\u06cc \u0627\u0633\u0646\u0627\u062f \u062c\u0627\u0631\u06cc \u06a9\u06cc \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u0622\u067e \u06a9\u06d2 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0646\u0646\u062f\u06c1 \u067e\u0631 \u0645\u0646\u062d\u0635\u0631 \u06c1\u06d2\u060c \u0622\u067e \u06cc\u06c1 \u0627\u062e\u062a\u06cc\u0627\u0631\u0627\u062a \u062f\u06cc\u06a9\u06be \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba:<\/p>\n<ul>\n<li>\n<p>\u0645\u0646\u0633\u0648\u062e\u06cc<\/p>\n<\/li>\n<li>\n<p>\u062d\u0630\u0641 \u06a9\u0631\u06cc\u06ba<\/p>\n<\/li>\n<li>\n<p>\u063a\u06cc\u0631 \u0641\u0639\u0627\u0644<\/p>\n<\/li>\n<li>\n<p>\u06af\u0631\u062f\u0634<\/p>\n<\/li>\n<li>\n<p>\u062f\u0648\u0628\u0627\u0631\u06c1 \u067e\u06cc\u062f\u0627 \u06a9\u0631\u0646\u0627<\/p>\n<\/li>\n<li>\n<p>\u0627\u06cc\u06a9 \u0646\u0626\u06cc \u06a9\u0644\u06cc\u062f \u0628\u0646\u0627\u0626\u06cc\u06ba<\/p>\n<\/li>\n<\/ul>\n<p>\u0627\u06af\u0631 \u0622\u067e \u06a9\u0627 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0646\u0646\u062f\u06c1 \u06a9\u0644\u06cc\u062f\u06cc \u06af\u0631\u062f\u0634 \u06a9\u06cc \u062d\u0645\u0627\u06cc\u062a \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u0627\u06af\u0631 \u0645\u0645\u06a9\u0646 \u06c1\u0648 \u062a\u0648\u060c \u067e\u0631\u0627\u0646\u06d2 \u06a9\u0648 \u063a\u06cc\u0631 \u0641\u0639\u0627\u0644 \u06a9\u0631\u0646\u06d2 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u0645\u062a\u0628\u0627\u062f\u0644 \u0627\u0633\u0646\u0627\u062f \u0628\u0646\u0627\u0626\u06cc\u06ba\u06d4 \u06a9\u0646\u0641\u06cc\u06af\u0631\u06cc\u0634\u0646 \u06a9\u0648 \u0627\u067e \u0688\u06cc\u0679 \u06a9\u0631\u062a\u06d2 \u0648\u0642\u062a \u06cc\u06c1 \u0627\u06cc\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0688\u0627\u0624\u0646 \u0679\u0627\u0626\u0645 \u06a9\u0648 \u06a9\u0645 \u06a9\u0631 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u06c1\u0645 \u0628\u0627\u062a \u06cc\u06c1 \u06c1\u06d2 \u06a9\u06c1 \u0622\u067e \u06a9\u06cc \u0627\u0635\u0644 \u0627\u0633\u0646\u0627\u062f \u0627\u0628 \u062f\u0633\u062a\u06cc\u0627\u0628 \u0646\u06c1\u06cc\u06ba \u06c1\u06cc\u06ba\u06d4<\/p>\n<p><strong>\u0644\u06cc\u06a9 \u0634\u062f\u06c1 \u0686\u0627\u0628\u06cc\u0627\u06ba \u062f\u0648\u0628\u0627\u0631\u06c1 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u0646\u06c1 \u06a9\u0631\u06cc\u06ba\u06d4<\/strong> \u0628\u0631\u0627\u0626\u06d2 \u0645\u06c1\u0631\u0628\u0627\u0646\u06cc \u0646\u0627\u0645 \u062a\u0628\u062f\u06cc\u0644 \u0646\u06c1 \u06a9\u0631\u06cc\u06ba\u06d4 \u0627\u0646\u06a9\u0648\u0688 \u0646\u06c1 \u06a9\u0631\u06cc\u06ba\u06d4 \u0627\u0633\u06d2 \u06a9\u0633\u06cc \u062f\u0648\u0633\u0631\u06cc \u0641\u0627\u0626\u0644 \u0645\u06cc\u06ba \u0645\u062a \u0645\u0646\u062a\u0642\u0644 \u06a9\u0631\u06cc\u06ba \u0627\u0648\u0631 \u0641\u0631\u0636 \u06a9\u0631\u06cc\u06ba \u06a9\u06c1 \u06cc\u06c1 \u0645\u062d\u0641\u0648\u0638 \u06c1\u06d2\u06d4 \u06cc\u06c1 \u0645\u062a \u0633\u0645\u062c\u06be\u0648 \u06a9\u06c1 \u0627\u0633\u06d2 \u06a9\u0633\u06cc \u0646\u06d2 \u0646\u06c1\u06cc\u06ba \u062f\u06cc\u06a9\u06be\u0627\u06d4<\/p>\n<p>\u0646\u0642\u0635\u0627\u0646 \u067e\u06c1\u0646\u0686\u0627 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631 \u0639\u0644\u0627\u062c \u06a9\u0631\u06cc\u06ba.<\/p>\n<h2 id=\"heading-step-2-investigate-suspicious-activity\">\u0645\u0631\u062d\u0644\u06c1 2: \u0645\u0634\u06a9\u0648\u06a9 \u0633\u0631\u06af\u0631\u0645\u06cc \u06a9\u06cc \u0686\u06be\u0627\u0646 \u0628\u06cc\u0646 \u06a9\u0631\u06cc\u06ba\u06d4<\/h2>\n<p>\u0627\u067e\u0646\u06cc \u0627\u0633\u0646\u0627\u062f \u06a9\u0648 \u063a\u06cc\u0631 \u0641\u0639\u0627\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0628\u0639\u062f\u060c \u0627\u067e\u0646\u06d2 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0646\u0646\u062f\u06c1 \u06a9\u06d2 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0627 \u0688\u06cc\u0634 \u0628\u0648\u0631\u0688 \u0627\u0648\u0631 \u0644\u0627\u06af\u0632 \u0686\u06cc\u06a9 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<p>\u0627\u0633 \u0637\u0631\u062d \u06a9\u0686\u06be \u062a\u0644\u0627\u0634 \u06a9\u0631\u06cc\u06ba:<\/p>\n<ul>\n<li>\n<p>\u062f\u0631\u062e\u0648\u0627\u0633\u062a\u0648\u06ba \u0645\u06cc\u06ba \u0627\u0686\u0627\u0646\u06a9 \u0627\u0636\u0627\u0641\u06c1<\/p>\n<\/li>\n<li>\n<p>\u063a\u06cc\u0631 \u0645\u0627\u0646\u0648\u0633 \u062c\u06af\u06c1\u0648\u06ba \u0633\u06d2 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u06cc\u06ba\u06d4<\/p>\n<\/li>\n<li>\n<p>\u063a\u06cc\u0631 \u0645\u062a\u0648\u0642\u0639 \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u0627\u0633\u062a\u0641\u0633\u0627\u0631<\/p>\n<\/li>\n<li>\n<p>\u0646\u0626\u06d2 \u06a9\u0644\u0627\u0624\u0688 \u0648\u0633\u0627\u0626\u0644<\/p>\n<\/li>\n<li>\n<p>\u0627\u062c\u0627\u0632\u062a\u06cc\u06ba \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<\/li>\n<li>\n<p>\u063a\u06cc\u0631 \u0645\u062a\u0648\u0642\u0639 \u0688\u0627\u0624\u0646 \u0644\u0648\u0688<\/p>\n<\/li>\n<li>\n<p>\u063a\u06cc\u0631 \u0645\u0639\u0645\u0648\u0644\u06cc \u0627\u062f\u0627\u0626\u06cc\u06af\u06cc \u06a9\u06cc \u0633\u0631\u06af\u0631\u0645\u06cc<\/p>\n<\/li>\n<li>\n<p>\u0646\u0626\u06cc \u062a\u0642\u0633\u06cc\u0645<\/p>\n<\/li>\n<li>\n<p>\u062f\u0631\u062e\u0648\u0627\u0633\u062a \u063a\u06cc\u0631 \u0641\u0639\u0627\u0644 \u06c1\u0648\u0646\u06d2 \u067e\u0631<\/p>\n<\/li>\n<\/ul>\n<p>\u0627\u06af\u0631 \u06a9\u0633\u06cc \u0633\u0646\u062f \u0645\u06cc\u06ba \u0648\u0633\u06cc\u0639 \u0645\u0631\u0627\u0639\u0627\u062a \u06c1\u06cc\u06ba\u060c \u062a\u0648 \u0627\u0633 \u0627\u0633\u062a\u062d\u0642\u0627\u0642 \u06a9\u06d2 \u062f\u0627\u0626\u0631\u06c1 \u06a9\u0627\u0631 \u0645\u06cc\u06ba \u0645\u0648\u062c\u0648\u062f \u06c1\u0631 \u0686\u06cc\u0632 \u06c1\u06d2\u06d4 <strong>\u06c1\u0648 \u0633\u06a9\u062a\u0627 \u06c1\u06d2 \u0627\u0633 \u062a\u06a9 \u0631\u0633\u0627\u0626\u06cc \u06cc\u0627 \u062a\u0631\u0645\u06cc\u0645 \u06a9\u06cc \u06af\u0626\u06cc \u06c1\u0648\u06d4<\/strong>.<\/p>\n<p>\u0645\u062b\u0627\u0644 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631\u060c \u0627\u06af\u0631 \u0622\u067e \u0627\u067e\u0646\u06d2 \u06a9\u0644\u0627\u0624\u0688 \u0627\u0633\u0646\u0627\u062f \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0627\u06cc\u06a9 \u0648\u0631\u0686\u0648\u0626\u0644 \u0645\u0634\u06cc\u0646 \u0628\u0646\u0627 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u062a\u0648 \u06cc\u06c1 \u062f\u06cc\u06a9\u06be\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0686\u06cc\u06a9 \u06a9\u0631\u06cc\u06ba \u06a9\u06c1 \u0622\u06cc\u0627 \u06a9\u0648\u0626\u06cc \u063a\u06cc\u0631 \u0645\u062a\u0648\u0642\u0639 \u0645\u0634\u06cc\u0646 \u0628\u0646\u0627\u0626\u06cc \u06af\u0626\u06cc \u062a\u06be\u06cc\u06d4<\/p>\n<p>\u0627\u06af\u0631 \u0622\u067e \u06a9\u06d2 \u0627\u0633\u0646\u0627\u062f \u06a9\u0648 \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u062a\u06a9 \u0631\u0633\u0627\u0626\u06cc \u062d\u0627\u0635\u0644 \u06c1\u06d2 \u062a\u0648 \u062f\u0631\u062c \u0630\u06cc\u0644 \u06a9\u0627 \u062c\u0627\u0626\u0632\u06c1 \u0644\u06cc\u06ba:<\/p>\n<ul>\n<li>\n<p>\u062a\u0648\u062b\u06cc\u0642 \u0644\u0627\u06af<\/p>\n<\/li>\n<li>\n<p>\u0622\u067e\u0631\u06cc\u0634\u0646 \u067e\u0691\u06be\u06cc\u06ba<\/p>\n<\/li>\n<li>\n<p>\u0622\u067e\u0631\u06cc\u0634\u0646 \u0644\u06a9\u06be\u0646\u0627<\/p>\n<\/li>\n<li>\n<p>\u062d\u0630\u0641 \u0634\u062f\u06c1 \u062a\u0627\u0631\u06cc\u062e<\/p>\n<\/li>\n<li>\n<p>\u0628\u0631\u0622\u0645\u062f \u0634\u062f\u06c1 \u0688\u06cc\u0679\u0627<\/p>\n<\/li>\n<li>\n<p>\u0646\u06cc\u0627 \u0628\u0646\u0627\u06cc\u0627 \u06af\u06cc\u0627 \u0627\u06a9\u0627\u0624\u0646\u0679<\/p>\n<\/li>\n<li>\n<p>\u0627\u062c\u0627\u0632\u062a\u06cc\u06ba \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<\/li>\n<\/ul>\n<p>\u0627\u067e\u0646\u06cc \u0628\u0644\u0646\u06af \u06a9\u06cc \u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0628\u06be\u06cc \u0686\u06cc\u06a9 \u06a9\u0631\u06cc\u06ba \u0627\u06af\u0631 \u0622\u067e \u06a9\u06cc \u0627\u0633\u0646\u0627\u062f \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u067e\u0631 \u0645\u0628\u0646\u06cc \u0686\u0627\u0631\u062c\u0632 \u067e\u06cc\u062f\u0627 \u06a9\u0631 \u0633\u06a9\u062a\u06cc \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u0622\u067e \u0646\u06d2 \u062c\u0648 \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u06cc\u0627 \u06c1\u06d2 \u0627\u0633\u06d2 \u0644\u06a9\u06be\u06cc\u06ba\u06d4 \u0627\u06cc\u06a9 \u0633\u0627\u062f\u06c1 \u0679\u0627\u0626\u0645 \u0644\u0627\u0626\u0646 \u0645\u062f\u062f \u06a9\u0631 \u0633\u06a9\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-text\">10:15 - API key committed\n10:23 - Repository pushed publicly\n10:41 - Unusual usage detected\n10:45 - Key revoked\n11:00 - Logs reviewed\n11:30 - Replacement key deployed\n12:00 - Git history cleaned\n<\/code><\/pre>\n<p>\u06cc\u06c1 \u062e\u0627\u0635 \u0637\u0648\u0631 \u067e\u0631 \u0645\u0641\u06cc\u062f \u06c1\u0648 \u0633\u06a9\u062a\u0627 \u06c1\u06d2 \u0627\u06af\u0631 \u0622\u067e \u06a9\u0648 \u0627\u067e\u0646\u06cc \u0679\u06cc\u0645 \u06cc\u0627 \u0633\u0631\u0648\u0633 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0646\u0646\u062f\u06c1 \u06a9\u0648 \u06a9\u0633\u06cc \u0648\u0627\u0642\u0639\u06d2 \u06a9\u06cc \u0627\u0637\u0644\u0627\u0639 \u062f\u06cc\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u0648\u06d4<\/p>\n<h2 id=\"heading-step-3-remove-the-secret-from-your-current-code\">\u0645\u0631\u062d\u0644\u06c1 3: \u0645\u0648\u062c\u0648\u062f\u06c1 \u06a9\u0648\u0688 \u0633\u06d2 \u0631\u0627\u0632 \u06a9\u0648 \u06c1\u0679\u0627 \u062f\u06cc\u06ba\u06d4<\/h2>\n<p>\u0627\u06cc\u06a9 \u0628\u0627\u0631 \u062c\u0628 \u0627\u0635\u0644 \u0627\u0633\u0646\u0627\u062f \u063a\u06cc\u0631 \u0641\u0639\u0627\u0644 \u06c1\u0648 \u062c\u0627\u0626\u06cc\u06ba \u062a\u0648 \u0627\u0646\u06c1\u06cc\u06ba \u0648\u0631\u06a9\u0646\u06af \u0641\u0627\u0626\u0644 \u0633\u06d2 \u06c1\u0679\u0627 \u062f\u06cc\u06ba\u06d4<\/p>\n<p>\u06cc\u06c1 \u0645\u062d\u0641\u0648\u0638 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-javascript\">const apiKey = \"your-real-api-key\";\n<\/code><\/pre>\n<p>\u0627\u0633 \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2\u060c \u0627\u067e\u0646\u06d2 \u0645\u0627\u062d\u0648\u0644 \u0633\u06d2 \u0627\u0633\u0646\u0627\u062f \u0644\u0648\u0688 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-javascript\">const apiKey = process.env.API_KEY;\n\nif (!apiKey) {\n  throw new Error(\"API_KEY is not configured\");\n}\n<\/code><\/pre>\n<p>\u0627\u0632\u06af\u0631 \u0645\u06cc\u06ba:<\/p>\n<pre><code class=\"language-python\">import os\n\napi_key = os.environ.get(\"API_KEY\")\n\nif not api_key:\n    raise RuntimeError(\"API_KEY is not configured\")\n<\/code><\/pre>\n<p>\u0627\u06c1\u0645 \u062e\u06cc\u0627\u0644 \u0633\u0627\u062f\u06c1 \u06c1\u06d2.<\/p>\n<pre><code class=\"language-text\">Source code \u2192 environment variable \u2192 secret value\n<\/code><\/pre>\n<p>\u0628\u062c\u0627\u0626\u06d2:<\/p>\n<pre><code class=\"language-text\">Source code \u2192 hardcoded secret\n<\/code><\/pre>\n<p>\u0645\u0627\u062d\u0648\u0644\u06cc\u0627\u062a \u06a9\u06d2 \u0645\u062a\u063a\u06cc\u0631\u0627\u062a \u0631\u0627\u0632 \u06a9\u0648 \u0645\u0646\u0638\u0645 \u06a9\u0631\u0646\u06d2 \u06a9\u0627 \u0648\u0627\u062d\u062f \u0637\u0631\u06cc\u0642\u06c1 \u0646\u06c1\u06cc\u06ba \u06c1\u06cc\u06ba\u060c \u0628\u0644\u06a9\u06c1 \u06cc\u06c1 \u0645\u0642\u0627\u0645\u06cc \u062a\u0631\u0642\u06cc \u0627\u0648\u0631 \u0628\u06c1\u062a \u0633\u06d2 \u062a\u0639\u06cc\u0646\u0627\u062a\u06cc \u0645\u0627\u062d\u0648\u0644 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u06cc\u06a9 \u0639\u0627\u0645 \u0627\u0648\u0631 \u0639\u0645\u0644\u06cc \u062d\u0644 \u06c1\u06cc\u06ba\u06d4<\/p>\n<h2 id=\"heading-step-4-use-a-env-file-for-local-development\">\u0645\u0631\u062d\u0644\u06c1 4: <code>.env<\/code> \u0639\u0644\u0627\u0642\u0627\u0626\u06cc \u062a\u0631\u0642\u06cc \u06a9\u06d2 \u0644\u06cc\u06d2 \u0641\u0627\u0626\u0644\u06cc\u06ba<\/h2>\n<p>\u0645\u0642\u0627\u0645\u06cc \u062a\u0631\u0642\u06cc \u06a9\u06d2 \u0644\u06cc\u06d2\u060c \u0645\u0627\u062d\u0648\u0644\u06cc\u0627\u062a\u06cc \u0645\u062a\u063a\u06cc\u0631\u0627\u062a \u06a9\u0648 \u0633\u06cc\u0679 \u06a9\u0631\u06cc\u06ba\u06d4 <code>.env<\/code> \u0641\u0627\u0626\u0644<\/p>\n<p>\u0645\u062b\u0627\u0644 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631:<\/p>\n<pre><code class=\"language-env\">API_KEY=your-local-development-key\nDATABASE_URL=your-local-database-url\n<\/code><\/pre>\n<p>Node.js \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 \u062f\u0631\u062c \u0630\u06cc\u0644 \u067e\u06cc\u06a9\u06cc\u062c\u0632 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06a9\u06d2 \u0627\u0646 \u0627\u0642\u062f\u0627\u0631 \u06a9\u0648 \u0644\u0648\u0688 \u06a9\u0631\u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 <code>dotenv<\/code>.<\/p>\n<p>\u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u0627\u0646\u0633\u0679\u0627\u0644 \u06a9\u0631\u06cc\u06ba:<\/p>\n<pre><code class=\"language-bash\">npm install dotenv\n<\/code><\/pre>\n<p>\u067e\u06be\u0631:<\/p>\n<pre><code class=\"language-javascript\">import \"dotenv\/config\";\n\nconst apiKey = process.env.API_KEY;\n<\/code><\/pre>\n<p>\u0627\u06c1\u0645 \u062d\u0635\u06c1 \u06c1\u06d2\u06d4 <code>.env<\/code> \u0639\u0627\u0645 \u0637\u0648\u0631 \u067e\u0631 \u0641\u0627\u0626\u0644 \u062c\u0645\u0639 \u06a9\u0631\u0648\u0627\u0626\u06cc\u06ba\u06d4 <strong>\u0622\u067e \u06a9\u0648 \u06af\u0679 \u06a9\u0627 \u0639\u06c1\u062f \u0646\u06c1\u06cc\u06ba \u06a9\u0631\u0646\u0627 \u0686\u0627\u06c1\u0626\u06d2\u06d4<\/strong>.<\/p>\n<p>\u0627\u0633\u06d2 \u0627\u06af\u0644\u06cc \u0628\u0627\u0631 \u0634\u0627\u0645\u0644 \u06a9\u0631\u06cc\u06ba\u06d4 <code>.gitignore<\/code>:<\/p>\n<pre><code class=\"language-gitignore\"># Environment files\n.env\n.env.*\n!.env.example\n\n# Credential files\n*.pem\n*.key\ncredentials.json\nservice-account.json\n\n# Local development files\n.DS_Store\n<\/code><\/pre>\n<p>\u0644\u06cc\u06a9\u0646 \u06cc\u06c1\u0627\u06ba \u0627\u06cc\u06a9 \u0627\u06c1\u0645 \u062a\u0641\u0635\u06cc\u0644 \u06c1\u06d2\u06d4 <code>.gitignore<\/code> <strong>\u06cc\u06c1 \u0627\u0646 \u0641\u0627\u0626\u0644\u0648\u06ba \u06a9\u0648 \u0646\u06c1\u06cc\u06ba \u06c1\u0679\u0627\u062a\u0627 \u06c1\u06d2 \u062c\u0646 \u06a9\u0648 Git \u067e\u06c1\u0644\u06d2 \u06c1\u06cc \u0679\u0631\u06cc\u06a9 \u06a9\u0631 \u0631\u06c1\u0627 \u06c1\u06d2\u06d4<\/strong><\/p>\n<p>\u0627\u06af\u0631 <code>.env<\/code> \u06cc\u06c1 \u067e\u06c1\u0644\u06d2 \u06c1\u06cc \u067e\u0631\u0639\u0632\u0645 \u06c1\u06d2\u060c \u0644\u06c1\u0630\u0627 \u0645\u06cc\u06ba \u0627\u0633\u06d2 \u0627\u06af\u0644\u0627 \u0634\u0627\u0645\u0644 \u06a9\u0631\u0648\u06ba \u06af\u0627: <code>.gitignore<\/code> \u0627\u0633\u06d2 Git \u0645\u06cc\u06ba \u062d\u0630\u0641 \u0646\u06c1\u06cc\u06ba \u06a9\u06cc\u0627 \u06af\u06cc\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u062c\u0628 \u0622\u067e \u0641\u0627\u0626\u0644\u0648\u06ba \u06a9\u0648 \u0627\u067e\u0646\u06d2 \u06a9\u0645\u067e\u06cc\u0648\u0679\u0631 \u067e\u0631 \u0631\u06a9\u06be\u062a\u06d2 \u06c1\u06cc\u06ba \u062a\u0648 \u0622\u067e \u0679\u0631\u06cc\u06a9\u0646\u06af \u0631\u0648\u06a9 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-bash\">git rm --cached .env\n<\/code><\/pre>\n<p>\u067e\u06be\u0631 \u0639\u06c1\u062f \u06a9\u0631\u06cc\u06ba <code>.gitignore<\/code> \u062a\u0628\u062f\u06cc\u0644\u06cc:<\/p>\n<pre><code class=\"language-bash\">git add .gitignore\ngit commit -m \"Ignore local environment files\"\n<\/code><\/pre>\n<p>\u0644\u06cc\u06a9\u0646 \u06cc\u0627\u062f \u0631\u06a9\u06be\u06cc\u06ba: \u06cc\u06c1 \u0635\u0631\u0641 \u0645\u0633\u062a\u0642\u0628\u0644 \u06a9\u06d2 \u0648\u0639\u062f\u0648\u06ba \u0633\u06d2 \u0641\u0627\u0626\u0644 \u06a9\u0648 \u06c1\u0679\u0627 \u062f\u06d2 \u06af\u0627\u06d4 \u06c1\u0627\u06ba <strong>~ \u0646\u06c1\u06cc\u06ba<\/strong> \u0633\u0627\u0628\u0642\u06c1 \u200b\u200b\u0639\u06c1\u062f \u0633\u06d2 \u0631\u0627\u0632 \u06a9\u0648 \u06c1\u0679\u0627 \u062f\u06cc\u06ba\u06d4<\/p>\n<p>\u06cc\u06c1 \u0648\u06c1 \u062c\u06af\u06c1 \u06c1\u06d2 \u062c\u06c1\u0627\u06ba \u06af\u0679 \u06a9\u06cc \u062a\u0627\u0631\u06cc\u062e \u0622\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-step-5-create-a-safe-envexample\">\u0645\u0631\u062d\u0644\u06c1 5: \u0648\u0627\u0644\u0679 \u0628\u0646\u0627\u0646\u0627 <code>.env.example<\/code><\/h2>\n<p>\u062f\u0648\u0633\u0631\u06d2 \u0688\u0648\u06cc\u0644\u067e\u0631\u0632 \u06a9\u0648 \u0627\u0628 \u0628\u06be\u06cc \u06cc\u06c1 \u062c\u0627\u0646\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2 \u06a9\u06c1 \u0627\u0646 \u06a9\u06cc \u0627\u06cc\u067e\u0644\u06cc \u06a9\u06cc\u0634\u0646 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06a9\u06d2 \u0645\u0627\u062d\u0648\u0644 \u06a9\u06d2 \u0645\u062a\u063a\u06cc\u0631\u0627\u062a \u06a9\u06cc\u0627 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u0639\u06c1\u062f \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0628\u062c\u0627\u0626\u06d2 <code>.env<\/code>\u0628\u0646\u0627\u0646\u0627 <code>.env.example<\/code>:<\/p>\n<pre><code class=\"language-env\">API_KEY=\nDATABASE_URL=\nPORT=3000\nLOG_LEVEL=info\n<\/code><\/pre>\n<p>\u06cc\u06c1 \u0641\u0627\u0626\u0644 \u0627\u0635\u0644 \u0627\u0633\u0646\u0627\u062f \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2 \u0645\u062a\u063a\u06cc\u0631 \u0646\u0627\u0645\u0648\u06ba \u067e\u0631 \u0645\u0634\u062a\u0645\u0644 \u06c1\u06d2\u060c \u0644\u06c1\u0630\u0627 \u0622\u067e \u0627\u0633\u06d2 \u0645\u062e\u0632\u0646 \u0645\u06cc\u06ba \u0628\u06be\u06cc\u062c \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u0622\u067e \u0645\u0646\u062f\u0631\u062c\u06c1 \u0630\u06cc\u0644 \u0631\u0627\u0626\u06d2 \u0628\u06be\u06cc \u062f\u06d2 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba:<\/p>\n<pre><code class=\"language-env\"># Required API credential\nAPI_KEY=\n\n# PostgreSQL connection string\nDATABASE_URL=\n\n# Optional application port\nPORT=3000\n<\/code><\/pre>\n<p>\u0646\u06cc\u0627 \u0688\u0648\u06cc\u0644\u067e\u0631 \u067e\u06be\u0631 \u0641\u0627\u0626\u0644\u0648\u06ba \u06a9\u0648 \u06a9\u0627\u067e\u06cc \u06a9\u0631 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-bash\">cp .env.example .env\n<\/code><\/pre>\n<p>\u0627\u0648\u0631 \u06cc\u06c1 \u0627\u067e\u0646\u06cc \u0642\u062f\u0631 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0645\u062b\u0627\u0644 \u0645\u06cc\u06ba \u0648\u0627\u0636\u062d \u0637\u0648\u0631 \u067e\u0631 \u062c\u0639\u0644\u06cc \u067e\u0644\u06cc\u0633 \u06c1\u0648\u0644\u0688\u0631 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u06cc\u0627 \u06af\u06cc\u0627 \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-env\">API_KEY=replace-me-with-your-own-key\n<\/code><\/pre>\n<p>\u062d\u0642\u06cc\u0642\u062a \u067e\u0633\u0646\u062f\u0627\u0646\u06c1 \u0646\u0638\u0631 \u0622\u0646\u06d2 \u0648\u0627\u0644\u06cc \u067e\u06cc\u062f\u0627\u0648\u0627\u0631 \u06a9\u06cc \u0627\u0633\u0646\u0627\u062f <code>.env.example<\/code>.<\/p>\n<h2 id=\"heading-step-6-determine-whether-the-secret-is-still-in-git-history\">\u0645\u0631\u062d\u0644\u06c1 6: \u0686\u06cc\u06a9 \u06a9\u0631\u06cc\u06ba \u06a9\u06c1 \u06a9\u06cc\u0627 \u0631\u0627\u0632 \u0627\u0628 \u0628\u06be\u06cc \u0622\u067e \u06a9\u06cc \u06af\u0679 \u06c1\u0633\u0679\u0631\u06cc \u0645\u06cc\u06ba \u0645\u0648\u062c\u0648\u062f \u06c1\u06d2\u06d4<\/h2>\n<p>\u06cc\u06c1 \u0644\u06cc\u06a9 \u06c1\u0648\u0646\u06d2 \u0648\u0627\u0644\u06cc \u0627\u0633\u0646\u0627\u062f \u06a9\u0648 \u062f\u0631\u0633\u062a \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0633\u0628 \u0633\u06d2 \u0627\u06c1\u0645 \u062d\u0635\u0648\u06ba \u0645\u06cc\u06ba \u0633\u06d2 \u0627\u06cc\u06a9 \u06c1\u06d2\u06d4<\/p>\n<p>\u0641\u0631\u0636 \u06a9\u0631\u06cc\u06ba \u06a9\u06c1 \u0622\u067e \u06a9\u06cc \u06af\u0679 \u06c1\u0633\u0679\u0631\u06cc \u0627\u0633 \u0637\u0631\u062d \u062f\u06a9\u06be\u062a\u06cc \u06c1\u06d2:<\/p>\n<pre><code class=\"language-text\">Commit A: Add API key to config.js\nCommit B: Update API integration\nCommit C: Delete API key\n<\/code><\/pre>\n<p>\u0627\u06af\u0631\u0686\u06c1 \u06a9\u0645\u0679 \u0633\u06cc \u0627\u0628 \u06a9\u0644\u06cc\u062f \u067e\u0631 \u0645\u0634\u062a\u0645\u0644 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u060c \u06a9\u0645\u0679 \u0627\u06d2 \u0627\u0628 \u0628\u06be\u06cc \u06a9\u0644\u06cc\u062f \u067e\u0631 \u0645\u0634\u062a\u0645\u0644 \u06c1\u06d2\u06d4<\/p>\n<p>\u06af\u0679 \u0641\u0627\u0626\u0644\u0648\u06ba \u06a9\u06d2 \u067e\u0686\u06be\u0644\u06d2 \u0648\u0631\u0698\u0646 \u06a9\u0648 \u06cc\u0627\u062f \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0622\u067e \u0641\u0627\u0626\u0644 \u06a9\u06cc \u062a\u0627\u0631\u06cc\u062e \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u062c\u0627\u0646\u0686 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba:<\/p>\n<pre><code class=\"language-bash\">git log --all -- config.js\n<\/code><\/pre>\n<p>\u067e\u0686\u06be\u0644\u06d2 \u0648\u0639\u062f\u0648\u06ba \u0633\u06d2 \u0641\u0627\u0626\u0644\u0648\u06ba \u06a9\u0648 \u0638\u0627\u06c1\u0631 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u0626\u06d2:<\/p>\n<pre><code class=\"language-bash\">git show COMMIT_ID:config.js\n<\/code><\/pre>\n<p>\u0622\u067e \u06af\u0679 \u06a9\u06cc \u0633\u0631\u06af\u0632\u0634\u062a \u06a9\u0648 \u0645\u0639\u0644\u0648\u0645 \u0644\u06cc\u06a9 \u0627\u0642\u062f\u0627\u0631 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0628\u06be\u06cc \u062a\u0644\u0627\u0634 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-bash\">git log --all -S\"your-leaked-key\" --oneline\n<\/code><\/pre>\n<p>\u0627\u06af\u0631 \u0622\u067e \u062c\u0627\u0646\u062a\u06d2 \u06c1\u06cc\u06ba \u06a9\u06c1 \u0627\u06cc\u06a9 \u0631\u0627\u0632 \u06a9\u0627 \u0627\u0631\u062a\u06a9\u0627\u0628 \u06a9\u06cc\u0627 \u06af\u06cc\u0627 \u06c1\u06d2\u060c \u062a\u0648 \u0622\u067e \u06a9\u0648 \u0641\u0631\u0636 \u06a9\u0631\u0646\u0627 \u0686\u0627\u06c1\u06cc\u06d2 \u06a9\u06c1 \u06cc\u06c1 \u0630\u062e\u06cc\u0631\u06c1 \u062a\u0627\u0631\u06cc\u062e \u0645\u06cc\u06ba \u06a9\u06c1\u06cc\u06ba \u0645\u0648\u062c\u0648\u062f \u06c1\u06d2 \u062c\u0628 \u062a\u06a9 \u06a9\u06c1 \u0622\u067e \u062f\u0648\u0633\u0631\u06cc \u0635\u0648\u0631\u062a \u0645\u06cc\u06ba \u062a\u0635\u062f\u06cc\u0642 \u0646\u06c1 \u06a9\u0631 \u0644\u06cc\u06ba\u06d4<\/p>\n<h2 id=\"heading-when-do-you-need-to-rewrite-git-history\">\u0645\u062c\u06be\u06d2 \u0627\u067e\u0646\u06cc Git \u06a9\u06cc \u062a\u0627\u0631\u06cc\u062e \u06a9\u0648 \u06a9\u0628 \u062f\u0648\u0628\u0627\u0631\u06c1 \u0628\u0646\u0627\u0646\u0627 \u0686\u0627\u06c1\u0626\u06d2\u061f<\/h2>\n<p>\u062a\u0645\u0627\u0645 \u062d\u0627\u062f\u062b\u0627\u062a\u06cc \u0631\u0627\u0632\u0648\u06ba \u06a9\u0648 \u062f\u0648\u0628\u0627\u0631\u06c1 \u0644\u06a9\u06be\u0646\u06d2 \u06a9\u06d2 \u0631\u06cc\u06a9\u0627\u0631\u0688 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4 \u0645\u0646\u062f\u0631\u062c\u06c1 \u0630\u06cc\u0644 \u0635\u0648\u0631\u062a \u062d\u0627\u0644 \u067e\u0631 \u063a\u0648\u0631 \u06a9\u0631\u06cc\u06ba:<\/p>\n<h3 id=\"heading-the-secret-was-never-committed\">\u0631\u0627\u0632 \u06a9\u0627 \u0627\u0631\u062a\u06a9\u0627\u0628 \u0646\u06c1\u06cc\u06ba \u06a9\u06cc\u0627 \u062c\u0627\u062a\u0627<\/h3>\n<p>\u0627\u06af\u0631 \u0631\u0627\u0632 \u0635\u0631\u0641 \u0648\u0631\u06a9\u0646\u06af \u0688\u0627\u0626\u0631\u06a9\u0679\u0631\u06cc \u0645\u06cc\u06ba \u0645\u0648\u062c\u0648\u062f \u06c1\u06d2 \u0627\u0648\u0631 \u06a9\u0628\u06be\u06cc \u0627\u0633 \u06a9\u0627 \u0627\u0631\u062a\u06a9\u0627\u0628 \u0646\u06c1\u06cc\u06ba \u06a9\u06cc\u0627 \u06af\u06cc\u0627 \u06c1\u06d2\u060c \u062a\u0648 \u0639\u0627\u0645 \u0637\u0648\u0631 \u067e\u0631 \u062a\u0627\u0631\u06cc\u062e \u06a9\u0648 \u062f\u0648\u0628\u0627\u0631\u06c1 \u0644\u06a9\u06be\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u0633\u06d2 \u06c1\u0679\u0627\u0626\u06cc\u06ba \u0627\u0648\u0631 \u0645\u0646\u0627\u0633\u0628 \u0641\u0627\u0626\u0644\u06cc\u06ba \u0634\u0627\u0645\u0644 \u06a9\u0631\u06cc\u06ba\u06d4 <code>.gitignore<\/code>\u0627\u0648\u0631 \u0686\u0644\u062a\u06d2 \u0631\u06c1\u06cc\u06ba\u06d4<\/p>\n<h3 id=\"heading-the-secret-was-committed-locally-but-never-pushed\">\u062e\u0641\u06cc\u06c1 \u0645\u0642\u0627\u0645\u06cc \u0637\u0648\u0631 \u067e\u0631 \u0627\u0631\u062a\u06a9\u0627\u0628 \u06a9\u06cc\u0627 \u06af\u06cc\u0627 \u06c1\u06d2 \u0644\u06cc\u06a9\u0646 \u062f\u06be\u06a9\u0627 \u0646\u06c1\u06cc\u06ba \u062f\u06cc\u0627 \u06af\u06cc\u0627 \u06c1\u06d2.<\/h3>\n<p>\u0627\u06af\u0631 \u062e\u0641\u06cc\u06c1 \u0645\u0642\u0627\u0645\u06cc \u06a9\u0645\u0679 \u0645\u06cc\u06ba \u0645\u0648\u062c\u0648\u062f \u06c1\u06d2 \u0644\u06cc\u06a9\u0646 \u0627\u0633\u06d2 \u0631\u06cc\u0645\u0648\u0679 \u0631\u06cc\u067e\u0648\u0632\u0679\u0631\u06cc \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0634\u06cc\u0626\u0631 \u0646\u06c1\u06cc\u06ba \u06a9\u06cc\u0627 \u06af\u06cc\u0627 \u06c1\u06d2\u060c \u062a\u0648 \u0622\u067e \u0627\u0633 \u06a9\u0645\u0679 \u06a9\u0648 \u0622\u06af\u06d2 \u0628\u0691\u06be\u0627\u0646\u06d2 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u0635\u0627\u0641 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<h3 id=\"heading-the-secret-was-pushed-to-a-remote-repository\">\u0631\u0627\u0632 \u06a9\u0648 \u062f\u0648\u0631 \u062f\u0631\u0627\u0632 \u06a9\u06d2 \u0630\u062e\u06cc\u0631\u06d2 \u0645\u06cc\u06ba \u062f\u06be\u06a9\u06cc\u0644 \u062f\u06cc\u0627 \u06af\u06cc\u0627 \u06c1\u06d2\u06d4<\/h3>\n<p>\u0627\u0633\u0646\u0627\u062f \u06a9\u0648 \u0633\u0645\u062c\u06be\u0648\u062a\u06c1 \u0634\u062f\u06c1 \u0633\u0645\u062c\u06be\u06cc\u06ba\u06d4 \u0641\u0648\u0631\u06cc \u0637\u0648\u0631 \u067e\u0631 \u0645\u0646\u0633\u0648\u062e \u06a9\u0631\u06cc\u06ba \u06cc\u0627 \u06af\u06be\u0645\u0627\u0626\u06cc\u06ba\u06d4<\/p>\n<p>\u067e\u06be\u0631 \u0641\u06cc\u0635\u0644\u06c1 \u06a9\u0631\u06cc\u06ba \u06a9\u06c1 \u0645\u062e\u0632\u0646 \u06a9\u06cc \u062a\u0627\u0631\u06cc\u062e \u0633\u06d2 \u0631\u0627\u0632 \u06a9\u0648 \u06c1\u0679\u0627\u0646\u0627 \u0645\u0646\u0627\u0633\u0628 \u06c1\u06d2 \u06cc\u0627 \u0646\u06c1\u06cc\u06ba\u06d4<\/p>\n<h3 id=\"heading-the-repository-was-public\">\u0630\u062e\u06cc\u0631\u06c1 \u062c\u0627\u0631\u06cc \u06a9\u0631 \u062f\u06cc\u0627 \u06af\u06cc\u0627 \u06c1\u06d2\u06d4<\/h3>\n<p>\u0645\u06cc\u06ba \u0641\u0631\u0636 \u06a9\u0631\u062a\u0627 \u06c1\u0648\u06ba \u06a9\u06c1 \u06a9\u0633\u06cc \u0646\u06d2 \u06cc\u0627 \u06a9\u0633\u06cc \u0627\u0648\u0631 \u0686\u06cc\u0632 \u0646\u06d2 \u067e\u06c1\u0644\u06d2 \u06c1\u06cc \u0631\u0627\u0632 \u06a9\u0648 \u06a9\u0627\u067e\u06cc \u06a9\u0631 \u0644\u06cc\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u06cc\u06c1\u06cc \u0648\u062c\u06c1 \u06c1\u06d2\u06d4 <strong>\u0645\u0646\u0633\u0648\u062e\u06cc Git \u06a9\u0644\u06cc\u0646 \u0627\u067e \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u0622\u062a\u06cc \u06c1\u06d2\u06d4<\/strong>.<\/p>\n<h3 id=\"heading-the-secret-was-in-a-private-repository\">\u0631\u0627\u0632 \u0627\u06cc\u06a9 \u0646\u062c\u06cc \u0630\u062e\u06cc\u0631\u06c1 \u0645\u06cc\u06ba \u062a\u06be\u0627\u06d4<\/h3>\n<p>\u0646\u062c\u06cc \u0630\u062e\u06cc\u0631\u06d2 \u0639\u0648\u0627\u0645\u06cc \u0630\u062e\u06cc\u0631\u0648\u06ba \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u0645\u062d\u0641\u0648\u0638 \u06c1\u06cc\u06ba\u060c \u0644\u06cc\u06a9\u0646 \u0648\u06c1 \u062e\u0641\u06cc\u06c1 \u0646\u06c1\u06cc\u06ba \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u0627\u0633\u0646\u0627\u062f \u06a9\u0648 \u0627\u0628 \u0628\u06be\u06cc \u0627\u0633 \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u0628\u0686\u0627\u06cc\u0627 \u062c\u0627 \u0633\u06a9\u062a\u0627 \u06c1\u06d2:<\/p>\n<ul>\n<li>\n<p>\u0633\u0645\u062c\u06be\u0648\u062a\u06c1 \u0634\u062f\u06c1 \u0627\u06a9\u0627\u0624\u0646\u0679<\/p>\n<\/li>\n<li>\n<p>\u0679\u06be\u06cc\u06a9\u06cc\u062f\u0627\u0631<\/p>\n<\/li>\n<li>\n<p>\u0627\u0646\u0636\u0645\u0627\u0645<\/p>\n<\/li>\n<li>\n<p>\u0633\u06cc \u0622\u0626\u06cc \u0644\u0627\u06af<\/p>\n<\/li>\n<li>\n<p>\u06a9\u0627\u0646\u0679\u0627<\/p>\n<\/li>\n<li>\n<p>\u0628\u06cc\u06a9 \u0627\u067e<\/p>\n<\/li>\n<li>\n<p>\u0627\u0633\u06a9\u0631\u06cc\u0646 \u0634\u0627\u0679<\/p>\n<\/li>\n<li>\n<p>\u06a9\u0627\u067e\u06cc \u0634\u062f\u06c1 \u06a9\u0648\u0688<\/p>\n<\/li>\n<li>\n<p>\u06a9\u06be\u06cc\u0646\u0686\u0646\u06d2 \u06a9\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a<\/p>\n<\/li>\n<\/ul>\n<p>\u062a\u0648 \u0633\u0628 \u0633\u06d2 \u0645\u062d\u0641\u0648\u0638 \u0627\u0635\u0648\u0644 \u06cc\u06c1 \u06c1\u06d2:<\/p>\n<blockquote>\n<p><strong>\u06a9\u0628\u06be\u06cc \u0628\u06be\u06cc \u062c\u0627\u0646 \u0628\u0648\u062c\u06be \u06a9\u0631 Git \u0633\u06d2 \u0627\u0633\u0646\u0627\u062f \u06a9\u0627 \u0627\u0631\u062a\u06a9\u0627\u0628 \u0646\u06c1 \u06a9\u0631\u06cc\u06ba\u060c \u06cc\u06c1\u0627\u06ba \u062a\u06a9 \u06a9\u06c1 \u0646\u062c\u06cc \u0630\u062e\u06cc\u0631\u0648\u06ba \u0645\u06cc\u06ba \u0628\u06be\u06cc\u06d4<\/strong><\/p>\n<\/blockquote>\n<h2 id=\"heading-step-7-remove-the-secret-from-git-history\">\u0645\u0631\u062d\u0644\u06c1 7: \u06af\u0679 \u06a9\u06cc \u062a\u0627\u0631\u06cc\u062e \u0633\u06d2 \u0631\u0627\u0632 \u06a9\u0648 \u06c1\u0679\u0627 \u062f\u06cc\u06ba\u06d4<\/h2>\n<p>\u0627\u06af\u0631 \u0622\u067e \u06a9\u06cc \u0627\u0633\u0646\u0627\u062f \u06a9\u0627 \u0627\u0631\u062a\u06a9\u0627\u0628 \u06a9\u06cc\u0627 \u06af\u06cc\u0627 \u06c1\u06d2\u060c \u062a\u0648 \u0622\u067e \u06a9\u0648 \u0627\u0646\u06c1\u06cc\u06ba \u0630\u062e\u06cc\u0631\u06c1 \u06a9\u06cc \u062a\u0627\u0631\u06cc\u062e \u0633\u06d2 \u06c1\u0679\u0627\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u067e\u0691\u0633\u06a9\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u067e\u0646\u06cc \u062a\u0627\u0631\u06cc\u062e \u06a9\u0648 \u062f\u0648\u0628\u0627\u0631\u06c1 \u0644\u06a9\u06be\u0646\u06d2 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u0628\u06cc\u06a9 \u0627\u067e \u0628\u0646\u0627\u0626\u06cc\u06ba:<\/p>\n<pre><code class=\"language-bash\">git clone --mirror https:\/\/github.com\/your-username\/your-repository.git repository-backup.git\n<\/code><\/pre>\n<p>\u0622\u0626\u06cc\u0646\u06d2 \u06a9\u06d2 \u06a9\u0644\u0648\u0646 \u0645\u06cc\u06ba \u0634\u0627\u062e\u06cc\u06ba \u0627\u0648\u0631 \u0679\u06cc\u06af \u06c1\u0648\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u062c\u0648 \u06a9\u0686\u06be \u063a\u0644\u0637 \u06c1\u0648\u0646\u06d2 \u06a9\u06cc \u0635\u0648\u0631\u062a \u0645\u06cc\u06ba \u0628\u062d\u0627\u0644\u06cc \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u0641\u06cc\u062f \u06c1\u06cc\u06ba\u06d4<\/p>\n<h3 id=\"heading-option-1-remove-an-entire-file\">\u0622\u067e\u0634\u0646 1: \u067e\u0648\u0631\u06cc \u0641\u0627\u0626\u0644\u0648\u06ba \u06a9\u0648 \u06c1\u0679\u0627 \u062f\u06cc\u06ba\u06d4<\/h3>\n<p>\u0627\u06af\u0631 \u0622\u067e \u06a9\u0627 \u0631\u0627\u0632 \u06a9\u0633\u06cc \u0641\u0627\u0626\u0644 \u0645\u06cc\u06ba \u0627\u0633 \u0637\u0631\u062d \u0645\u062d\u0641\u0648\u0638 \u06c1\u06d2: <code>.env<\/code>\u0622\u067e \u0627\u0633 \u0641\u0627\u0626\u0644 \u06a9\u0648 \u0627\u067e\u0646\u06cc \u067e\u0648\u0631\u06cc \u062a\u0627\u0631\u06cc\u062e \u0633\u06d2 \u06c1\u0679\u0627 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-bash\">git filter-repo --path .env --invert-paths\n<\/code><\/pre>\n<p>\u0688\u0627\u0626\u0631\u06cc\u06a9\u0679\u0631\u06cc \u06a9\u06d2 \u0627\u0646\u062f\u0631 \u0641\u0627\u0626\u0644\u0648\u06ba \u06a9\u06d2 \u0644\u06cc\u06d2:<\/p>\n<pre><code class=\"language-bash\">git filter-repo --path config\/production.json --invert-paths\n<\/code><\/pre>\n<p>\u06cc\u06c1 \u0641\u0627\u0626\u0644 \u06a9\u0648 \u0631\u06cc\u067e\u0648\u0632\u0679\u0631\u06cc \u06a9\u06cc \u062f\u0648\u0628\u0627\u0631\u06c1 \u0644\u06a9\u06be\u06cc \u06af\u0626\u06cc \u062a\u0627\u0631\u06cc\u062e \u0633\u06d2 \u06c1\u0679\u0627 \u062f\u06d2 \u06af\u0627\u06d4<\/p>\n<h3 id=\"heading-option-2-replace-a-secret-inside-a-file\">\u0622\u067e\u0634\u0646 2: \u0641\u0627\u0626\u0644\u0648\u06ba \u06a9\u06d2 \u0627\u0646\u062f\u0631 \u0645\u0648\u062c\u0648\u062f \u0631\u0627\u0632\u0648\u06ba \u06a9\u0648 \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0631\u0646\u0627<\/h3>\n<p>\u0628\u0639\u0636 \u0627\u0648\u0642\u0627\u062a \u0622\u067e \u06a9\u0648 \u0641\u0627\u0626\u0644 \u0631\u06a9\u06be\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u0648\u062a\u06cc \u06c1\u06d2 \u0644\u06cc\u06a9\u0646 \u062e\u0641\u06cc\u06c1 \u06a9\u06d2 \u067e\u0686\u06be\u0644\u06d2 \u0648\u0631\u0698\u0646 \u06a9\u0648 \u06c1\u0679\u0627\u0646\u0627 \u067e\u0691\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u06cc\u06a9 \u0639\u0627\u0631\u0636\u06cc \u0645\u062a\u0628\u0627\u062f\u0644 \u0641\u0627\u0626\u0644 \u0628\u0646\u0627\u0626\u06cc\u06ba\u06d4<\/p>\n<p>\u067e\u06be\u0631 \u0686\u0644\u0627\u0626\u06cc\u06ba:<\/p>\n<pre><code class=\"language-bash\">git filter-repo --replace-text replacements.txt\n<\/code><\/pre>\n<p>\u0622\u067e \u067e\u0644\u06cc\u0633 \u06c1\u0648\u0644\u0688\u0631\u0632 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0627\u0642\u062f\u0627\u0631 \u06a9\u06cc \u062c\u06af\u06c1 \u0644\u06d2 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-text\">your-leaked-key==>YOUR_API_KEY_HERE\n<\/code><\/pre>\n<p>\u0628\u06c1\u062a \u0645\u062d\u062a\u0627\u0637 \u0631\u06c1\u06cc\u06ba <code>replacements.txt<\/code>. \u06a9\u06cc\u0648\u0646\u06a9\u06c1 \u0627\u0633 \u0645\u06cc\u06ba \u0627\u0635\u0644 \u0631\u0627\u0632 \u0645\u0648\u062c\u0648\u062f \u06c1\u06d2\u06d4 <strong>\u0627\u0633 \u06a9\u0627 \u0627\u0631\u062a\u06a9\u0627\u0628 \u0646\u06c1 \u06a9\u0631\u06cc\u06ba\u06d4<\/strong><\/p>\n<p>\u0627\u0633\u06d2 \u0635\u0627\u0641 \u06a9\u0631\u06cc\u06ba \u0627\u0648\u0631 \u0627\u0633\u06d2 \u062d\u0630\u0641 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-bash\">rm replacements.txt\n<\/code><\/pre>\n<p>\u0648\u0646\u0688\u0648\u0632 \u067e\u0627\u0648\u0631 \u0634\u06cc\u0644 \u0645\u06cc\u06ba:<\/p>\n<pre><code class=\"language-powershell\">Remove-Item replacements.txt\n<\/code><\/pre>\n<p>\u0627\u06af\u0631 \u0622\u067e \u06a9\u06d2 \u067e\u0627\u0633 \u0645\u062a\u0639\u062f\u062f \u0631\u0627\u0632 \u06c1\u06cc\u06ba:<\/p>\n<pre><code class=\"language-text\">old-api-key==>REMOVED_API_KEY\nold-database-password==>REMOVED_DATABASE_PASSWORD\nold-token==>REMOVED_TOKEN\n<\/code><\/pre>\n<p>\u067e\u06be\u0631:<\/p>\n<pre><code class=\"language-bash\">git filter-repo --replace-text replacements.txt\n<\/code><\/pre>\n<p>\u067e\u06c1\u0644\u06d2 \u0628\u06cc\u06a9 \u0627\u067e \u06a9\u0644\u0648\u0646 \u067e\u0631 \u0635\u0641\u0627\u0626\u06cc \u06a9\u06cc \u062c\u0627\u0646\u0686 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<h2 id=\"heading-step-8-verify-that-the-secret-is-gone\">\u0645\u0631\u062d\u0644\u06c1 8: \u06cc\u0642\u06cc\u0646\u06cc \u0628\u0646\u0627\u0626\u06cc\u06ba \u06a9\u06c1 \u0622\u067e \u06a9\u0627 \u0631\u0627\u0632 \u0686\u0644\u0627 \u06af\u06cc\u0627 \u06c1\u06d2\u06d4<\/h2>\n<p>\u06cc\u06c1 \u0645\u062a \u0633\u0645\u062c\u06be\u0648 \u06a9\u06c1 \u0635\u0641\u0627\u0626\u06cc \u0646\u06d2 \u06a9\u0627\u0645 \u06a9\u06cc\u0627 \u06a9\u06cc\u0648\u0646\u06a9\u06c1 \u06a9\u0645\u0627\u0646\u0688 \u06a9\u0627\u0645\u06cc\u0627\u0628\u06cc \u0633\u06d2 \u0645\u06a9\u0645\u0644 \u06c1\u0648\u06af\u0626\u06cc\u06d4<\/p>\n<p>\u0645\u0639\u0644\u0648\u0645 \u0622\u0624\u0679 \u0641\u0644\u0648 \u0627\u0642\u062f\u0627\u0631 \u06a9\u06d2 \u0644\u06cc\u06d2 \u062f\u0648\u0628\u0627\u0631\u06c1 \u062a\u0644\u0627\u0634 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-bash\">git log --all -S\"your-leaked-key\" --oneline\n<\/code><\/pre>\n<p>\u0622\u067e \u0645\u062a\u0639\u0644\u0642\u06c1 \u0641\u0627\u0626\u0644\u0648\u06ba \u0627\u0648\u0631 \u06a9\u0645\u0679 \u06a9\u0627 \u0628\u06be\u06cc \u0645\u0639\u0627\u0626\u0646\u06c1 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-bash\">git log --all -- config.js\n<\/code><\/pre>\n<p>\u0627\u0648\u0631:<\/p>\n<pre><code class=\"language-bash\">git show COMMIT_ID:config.js\n<\/code><\/pre>\n<p>\u0627\u06af\u0631 \u0622\u067e \u06a9\u0627 \u0630\u062e\u06cc\u0631\u06c1 \u0628\u0631\u0627\u0646\u0686\u0632 \u0627\u0648\u0631 \u0679\u06cc\u06af\u0632 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u062a\u0648 \u06cc\u0642\u06cc\u0646\u06cc \u0628\u0646\u0627\u0626\u06cc\u06ba \u06a9\u06c1 \u0622\u067e \u0646\u06c1 \u0635\u0631\u0641 \u0627\u0633 \u0628\u0631\u0627\u0646\u0686 \u06a9\u0648 \u0686\u06cc\u06a9 \u06a9\u0631 \u0631\u06c1\u06d2 \u06c1\u06cc\u06ba \u062c\u0633\u06d2 \u0622\u067e \u0646\u06d2 \u0641\u06cc \u0627\u0644\u062d\u0627\u0644 \u0686\u06cc\u06a9 \u06a9\u06cc\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0622\u067e \u06a9\u0648 \u062f\u0648\u0633\u0631\u06d2 \u0645\u0642\u0627\u0645\u0627\u062a \u06a9\u0627 \u0628\u06be\u06cc \u0645\u0639\u0627\u0626\u0646\u06c1 \u06a9\u0631\u0646\u0627 \u0686\u0627\u06c1\u06cc\u06d2 \u062c\u06c1\u0627\u06ba \u0631\u0627\u0632 \u0638\u0627\u06c1\u0631 \u06c1\u0648 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u0628\u0634\u0645\u0648\u0644 \u067e\u0644 \u06a9\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u06cc\u06ba\u060c CI\/CD \u0644\u0627\u06af\u0632\u060c \u062a\u0639\u0645\u06cc\u0631\u0627\u062a\u06cc \u0646\u0645\u0648\u0646\u06d2\u060c \u0631\u06cc\u0644\u06cc\u0632 \u0641\u0627\u0626\u0644\u0632\u060c \u0688\u0627\u06a9\u0631 \u0627\u0645\u06cc\u062c\u0632\u060c \u067e\u06cc\u06a9\u06cc\u062c \u0631\u06cc\u0644\u06cc\u0632\u060c \u062f\u0633\u062a\u0627\u0648\u06cc\u0632\u0627\u062a\u060c \u0645\u0633\u0626\u0644\u06d2 \u06a9\u06cc \u062a\u0641\u0635\u06cc\u0644\u060c \u0627\u0648\u0631 \u0627\u0633\u06a9\u0631\u06cc\u0646 \u0634\u0627\u0679\u0633\u06d4<\/p>\n<p>\u06cc\u0627\u062f \u0631\u06a9\u06be\u06cc\u06ba:<\/p>\n<blockquote>\n<p><strong>\u0631\u06cc\u067e\u0648\u0632\u0679\u0631\u06cc \u06a9\u0648 \u062f\u0648\u0628\u0627\u0631\u06c1 \u0628\u0646\u0627\u0646\u06d2 \u0633\u06d2 \u0648\u06c1 \u06a9\u0627\u067e\u06cc\u0627\u06ba \u0646\u06c1\u06cc\u06ba \u0645\u0679\u06cc\u06ba \u06af\u06cc \u062c\u0648 \u067e\u06c1\u0644\u06d2 \u0633\u06d2 \u06a9\u06c1\u06cc\u06ba \u0627\u0648\u0631 \u0645\u0648\u062c\u0648\u062f \u06c1\u06cc\u06ba\u06d4<\/strong><\/p>\n<\/blockquote>\n<p>\u06cc\u06c1 \u0622\u067e \u06a9\u06cc \u0627\u0635\u0644 \u0627\u0633\u0646\u0627\u062f \u06a9\u0648 \u0645\u0646\u0633\u0648\u062e \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0627\u06cc\u06a9 \u0627\u0648\u0631 \u0648\u062c\u06c1 \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-step-9-push-the-cleaned-history-carefully\">\u0645\u0631\u062d\u0644\u06c1 9: \u0645\u0646\u0638\u0645 \u0631\u06cc\u06a9\u0627\u0631\u0688 \u06a9\u0648 \u0627\u062d\u062a\u06cc\u0627\u0637 \u0633\u06d2 \u0622\u06af\u06d2 \u0628\u0691\u06be\u0627\u0626\u06cc\u06ba\u06d4<\/h2>\n<p>\u0635\u0641\u0627\u0626\u06cc \u06a9\u06cc \u062a\u0635\u062f\u06cc\u0642 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0628\u0639\u062f\u060c \u0622\u067e \u06a9\u0648 \u062f\u0648\u0628\u0627\u0631\u06c1 \u0644\u06a9\u06be\u06cc \u06af\u0626\u06cc \u062a\u0627\u0631\u06cc\u062e \u06a9\u0648 \u0622\u06af\u06d2 \u0628\u0691\u06be\u0627\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u067e\u0691 \u0633\u06a9\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-bash\">git push --force --all origin\ngit push --force --tags origin\n<\/code><\/pre>\n<h3 id=\"heading-important-warning\">\u0627\u06c1\u0645 \u0627\u0646\u062a\u0628\u0627\u06c1<\/h3>\n<p><strong>\u0631\u06cc\u06a9\u0627\u0631\u0688\u0632 \u06a9\u0648 \u0632\u0628\u0631\u062f\u0633\u062a\u06cc \u062f\u0648\u0628\u0627\u0631\u06c1 \u0644\u06a9\u06be\u0646\u0627 \u062a\u0628\u0627\u06c1 \u06a9\u0646 \u06c1\u06d2\u06d4<\/strong> \u06cc\u06c1 \u06a9\u0645\u0679 \u06c1\u06cc\u0634 \u06a9\u0648 \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0627\u0646 \u062a\u0639\u0627\u0648\u0646 \u06a9\u0627\u0631\u0648\u06ba \u06a9\u0648 \u0645\u062a\u0627\u062b\u0631 \u06a9\u0631 \u0633\u06a9\u062a\u0627 \u06c1\u06d2 \u062c\u0646 \u06a9\u06d2 \u067e\u0627\u0633 \u0631\u06cc\u067e\u0648\u0632\u0679\u0631\u06cc \u06a9\u06cc \u0645\u0648\u062c\u0648\u062f\u06c1 \u0646\u0642\u0644\u06cc\u06ba \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u0645\u0634\u062a\u0631\u06a9\u06c1 \u0645\u0646\u0635\u0648\u0628\u06d2 \u0645\u06cc\u06ba \u0627\u06cc\u0633\u0627 \u06a9\u0631\u0646\u06d2 \u0633\u06d2 \u067e\u06c1\u0644\u06d2:<\/p>\n<ol>\n<li>\n<p>\u0627\u067e\u0646\u06d2 \u0633\u0627\u062a\u06be\u06cc\u0648\u06ba \u06a9\u0648 \u0628\u062a\u0627\u0626\u06cc\u06ba\u06d4<\/p>\n<\/li>\n<li>\n<p>\u0627\u0633 \u0628\u0627\u062a \u06a9\u0648 \u06cc\u0642\u06cc\u0646\u06cc \u0628\u0646\u0627\u0626\u06cc\u06ba \u06a9\u06c1 \u06c1\u0631 \u06a9\u0648\u0626\u06cc \u06cc\u06c1 \u0633\u0645\u062c\u06be\u06d2 \u06a9\u06c1 \u062a\u0627\u0631\u06cc\u062e \u062f\u0648\u0628\u0627\u0631\u06c1 \u0644\u06a9\u06be\u06cc \u062c\u0627 \u0631\u06c1\u06cc \u06c1\u06d2\u06d4<\/p>\n<\/li>\n<li>\n<p>\u06a9\u0648\u0622\u0631\u0688\u06cc\u0646\u06cc\u0679 \u0635\u0641\u0627\u0626\u06cc.<\/p>\n<\/li>\n<li>\n<p>\u0627\u06af\u0631 \u0622\u067e \u06a9\u06cc \u062a\u0646\u0638\u06cc\u0645 \u0645\u06cc\u06ba \u0648\u0627\u0642\u0639\u06c1 \u06a9\u06d2 \u0631\u062f\u0639\u0645\u0644 \u06a9\u0627 \u0639\u0645\u0644 \u06c1\u06d2\u060c \u062a\u0648 \u0627\u0633 \u067e\u0631 \u0639\u0645\u0644 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<\/li>\n<\/ol>\n<p>\u062f\u0648\u0628\u0627\u0631\u06c1 \u062a\u0639\u0645\u06cc\u0631 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0628\u0639\u062f\u060c \u062a\u0639\u0627\u0648\u0646 \u06a9\u0631\u0646\u06d2 \u0648\u0627\u0644\u0648\u06ba \u06a9\u0648 \u062f\u0648\u0628\u0627\u0631\u06c1 \u0630\u062e\u06cc\u0631\u06c1 \u06a9\u0648 \u06a9\u0644\u0648\u0646 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u067e\u0691 \u0633\u06a9\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-bash\">git clone https:\/\/github.com\/your-username\/your-repository.git\n<\/code><\/pre>\n<p>\u067e\u0631\u0627\u0646\u06d2 \u0630\u062e\u06cc\u0631\u06d2 \u06a9\u06cc \u062a\u0627\u0631\u06cc\u062e \u06a9\u0648 \u0622\u0646\u06a9\u06be\u06cc\u06ba \u0628\u0646\u062f \u06a9\u0631\u06a9\u06d2 \u0635\u0627\u0641 \u0634\u062f\u06c1 \u0630\u062e\u06cc\u0631\u06c1 \u0645\u06cc\u06ba \u0636\u0645 \u0646\u06c1\u06cc\u06ba \u06a9\u06cc\u0627 \u062c\u0627\u0646\u0627 \u0686\u0627\u06c1\u0626\u06d2\u06d4<\/p>\n<h2 id=\"heading-step-10-replace-the-credential-everywhere\">\u0645\u0631\u062d\u0644\u06c1 10: \u06a9\u0633\u06cc \u0628\u06be\u06cc \u062c\u06af\u06c1 \u0633\u06d2 \u0627\u0633\u0646\u0627\u062f \u06a9\u0648 \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0631\u06cc\u06ba\u06d4<\/h2>\n<p>\u0627\u0628 \u0645\u062a\u0628\u0627\u062f\u0644 \u0627\u0633\u0646\u0627\u062f \u0628\u0646\u0627\u0626\u06cc\u06ba \u06cc\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4 \u0627\u0646 \u062a\u0645\u0627\u0645 \u0645\u0627\u062d\u0648\u0644 \u06a9\u0648 \u0627\u067e \u0688\u06cc\u0679 \u06a9\u0631\u06cc\u06ba \u062c\u06c1\u0627\u06ba \u0622\u067e \u06a9\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0686\u0644\u062a\u06cc \u06c1\u06d2\u06d4 \u0639\u0627\u0645 \u0645\u0642\u0627\u0645\u0627\u062a \u0645\u06cc\u06ba \u0634\u0627\u0645\u0644 \u06c1\u06cc\u06ba:<\/p>\n<ul>\n<li>\n<p>\u0645\u0642\u0627\u0645\u06cc \u062a\u0631\u0642\u06cc<\/p>\n<\/li>\n<li>\n<p>\u0679\u06cc\u0633\u0679<\/p>\n<\/li>\n<li>\n<p>\u0688\u0631\u0627\u0645\u06c1 \u06a9\u0627\u0631\u06cc<\/p>\n<\/li>\n<li>\n<p>\u067e\u06cc\u062f\u0627\u0648\u0627\u0631<\/p>\n<\/li>\n<li>\n<p>\u0688\u0627\u06a9\u0631 \u06a9\u0646\u0679\u06cc\u0646\u0631<\/p>\n<\/li>\n<li>\n<p>Kubernetes \u0631\u0627\u0632<\/p>\n<\/li>\n<li>\n<p>CI\/CD \u0633\u0633\u0679\u0645<\/p>\n<\/li>\n<li>\n<p>\u06c1\u0648\u0633\u0679\u0646\u06af \u067e\u0644\u06cc\u0679 \u0641\u0627\u0631\u0645<\/p>\n<\/li>\n<li>\n<p>\u0637\u06d2 \u0634\u062f\u06c1 \u06a9\u0627\u0645<\/p>\n<\/li>\n<li>\n<p>\u0633\u0631\u0648\u0631 \u06a9\u06d2 \u0628\u063a\u06cc\u0631 \u0627\u0641\u0639\u0627\u0644<\/p>\n<\/li>\n<\/ul>\n<p>\u0627\u06cc\u06a9 \u0639\u0627\u0645 \u063a\u0644\u0637\u06cc \u067e\u06cc\u062f\u0627\u0648\u0627\u0631 \u06a9\u0648 \u0627\u067e \u0688\u06cc\u0679 \u06a9\u0631\u0646\u0627 \u0644\u06cc\u06a9\u0646 \u062a\u0639\u06cc\u0646\u0627\u062a\u06cc \u067e\u0627\u0626\u067e \u0644\u0627\u0626\u0646 \u06a9\u0648 \u0628\u06be\u0648\u0644 \u062c\u0627\u0646\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0645\u062b\u0627\u0644 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631\u060c \u0645\u0642\u0627\u0645\u06cc \u0627\u06cc\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646\u0632 \u06a9\u0627\u0645 \u06a9\u0631 \u0633\u06a9\u062a\u06cc \u06c1\u06cc\u06ba \u06a9\u06cc\u0648\u0646\u06a9\u06c1: <code>.env<\/code> CI\/CD \u0633\u0633\u0679\u0645 \u0645\u06cc\u06ba \u0627\u0628 \u0628\u06be\u06cc \u067e\u0631\u0627\u0646\u06cc \u0686\u0627\u0628\u06cc\u0627\u06ba \u06c1\u06cc\u06ba\u060c \u0644\u06cc\u06a9\u0646 \u0646\u0626\u06cc \u06a9\u06d2 \u0633\u0627\u062a\u06be\u06d4<\/p>\n<p>\u0627\u06cc\u06a9 \u0686\u06cc\u06a9 \u0644\u0633\u0679 \u0628\u0646\u0627\u0626\u06cc\u06ba:<\/p>\n<pre><code class=\"language-text\">1. Local development\n2. Automated tests\n3. Staging\n4. Production\n5. CI\/CD variables\n6. Docker configuration\n7. Cloud deployment settings\n8. Scheduled scripts\n9. Serverless functions\n<\/code><\/pre>\n<p>\u0627\u067e\u0646\u06cc \u0627\u0633\u0646\u0627\u062f \u06a9\u0648 \u0627\u067e \u0688\u06cc\u0679 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0628\u0639\u062f\u060c \u06c1\u0631 \u062d\u0633\u0627\u0633 \u0645\u0627\u062d\u0648\u0644 \u0645\u06cc\u06ba \u0627\u067e\u0646\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u06cc \u062c\u0627\u0646\u0686 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<h2 id=\"heading-step-11-restrict-the-replacement-key\">\u0645\u0631\u062d\u0644\u06c1 11: \u062a\u0628\u062f\u06cc\u0644\u06cc \u06a9\u06cc \u0686\u0627\u0628\u06cc\u0627\u06ba \u0645\u062d\u062f\u0648\u062f \u06a9\u0631\u06cc\u06ba\u06d4<\/h2>\n<p>\u0644\u06cc\u06a9 \u0634\u062f\u06c1 \u0627\u0633\u0646\u0627\u062f \u06a9\u0648 \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0631\u0646\u0627 \u062d\u0644 \u06a9\u0627 \u0635\u0631\u0641 \u0627\u06cc\u06a9 \u062d\u0635\u06c1 \u06c1\u06d2\u06d4<\/p>\n<p>\u0622\u067e \u06a9\u06cc \u0646\u0626\u06cc \u0627\u0633\u0646\u0627\u062f \u0645\u06cc\u06ba \u06cc\u06c1 \u06c1\u0648\u0646\u0627 \u0636\u0631\u0648\u0631\u06cc \u06c1\u06d2: <strong>\u0635\u0631\u0641 \u0648\u06c1 \u0627\u062c\u0627\u0632\u062a\u06cc\u06ba \u062c\u0648 \u0622\u067e \u06a9\u0648 \u062f\u0631\u06a9\u0627\u0631 \u06c1\u06cc\u06ba\u06d4<\/strong>.<\/p>\n<p>\u0645\u0641\u06cc\u062f \u067e\u0627\u0628\u0646\u062f\u06cc\u0648\u06ba \u0645\u06cc\u06ba \u0634\u0627\u0645\u0644 \u06c1\u06cc\u06ba:<\/p>\n<p>\u0645\u062b\u0627\u0644 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631\u060c \u0645\u0648\u0633\u0645 \u06a9\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u0648 \u0635\u0631\u0641 \u0645\u0648\u0633\u0645 \u06a9\u0627 \u0688\u06cc\u0679\u0627 \u067e\u0691\u06be\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u062c\u0627\u0632\u062a \u062f\u0631\u06a9\u0627\u0631 \u06c1\u0648 \u0633\u06a9\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<p>\u0635\u0627\u0631\u0641\u06cc\u0646 \u06a9\u0648 \u0645\u0646\u0638\u0645 \u06a9\u0631\u0646\u06d2\u060c \u0628\u0644\u0646\u06af \u0645\u06cc\u06ba \u062a\u0631\u0645\u06cc\u0645 \u06a9\u0631\u0646\u06d2\u060c \u06cc\u0627 \u0628\u06cc\u0631\u0648\u0646\u06cc \u0648\u0633\u0627\u0626\u0644 \u06a9\u0648 \u062d\u0630\u0641 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0627\u062c\u0627\u0632\u062a \u0646\u06c1\u06cc\u06ba \u06c1\u0648\u0646\u06cc \u0686\u0627\u06c1\u06cc\u06d2\u06d4<\/p>\n<p>\u06cc\u06c1 \u06c1\u06d2 <strong>\u06a9\u0645 \u0633\u06d2 \u06a9\u0645 \u0627\u0633\u062a\u062d\u0642\u0627\u0642 \u06a9\u0627 \u0627\u0635\u0648\u0644<\/strong>:<\/p>\n<blockquote>\n<p><strong>\u06c1\u0631 \u0627\u06cc\u06a9 \u0633\u0646\u062f \u06a9\u0648 \u0627\u0633 \u06a9\u06d2 \u06a9\u0627\u0645 \u06a9\u0648 \u0627\u0646\u062c\u0627\u0645 \u062f\u06cc\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u062f\u0631\u06a9\u0627\u0631 \u0631\u0633\u0627\u0626\u06cc \u06a9\u06cc \u06a9\u0645 \u0627\u0632 \u06a9\u0645 \u0645\u0642\u062f\u0627\u0631 \u062f\u06cc\u06ba\u06d4<\/strong><\/p>\n<\/blockquote>\n<p>\u0645\u062e\u062a\u0644\u0641 \u0645\u0627\u062d\u0648\u0644 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u062e\u062a\u0644\u0641 \u0627\u0633\u0646\u0627\u062f \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u0646\u0627 \u0628\u06be\u06cc \u0627\u0686\u06be\u0627 \u062e\u06cc\u0627\u0644 \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-text\">local-development-key\ntesting-key\nstaging-key\nproduction-key\n<\/code><\/pre>\n<p>\u06cc\u06c1 \u0622\u067e \u06a9\u06d2 \u067e\u06cc\u062f\u0627\u0648\u0627\u0631\u06cc \u0648\u0633\u0627\u0626\u0644 \u06a9\u0648 \u062a\u0631\u0642\u06cc\u0627\u062a\u06cc \u0627\u0633\u0646\u0627\u062f \u06a9\u06d2 \u0644\u06cc\u06a9 \u06c1\u0648\u0646\u06d2 \u06a9\u06cc \u0648\u062c\u06c1 \u0633\u06d2 \u062e\u0648\u062f \u0628\u062e\u0648\u062f \u0628\u06d2 \u0646\u0642\u0627\u0628 \u06c1\u0648\u0646\u06d2 \u0633\u06d2 \u0631\u0648\u06a9 \u062f\u06d2 \u06af\u0627\u06d4<\/p>\n<h2 id=\"heading-what-about-frontend-applications\">\u0641\u0631\u0646\u0679 \u0627\u06cc\u0646\u0688 \u0627\u06cc\u067e\u0644\u06cc \u06a9\u06cc\u0634\u0646\u0632 \u06a9\u06d2 \u0628\u0627\u0631\u06d2 \u0645\u06cc\u06ba \u06a9\u06cc\u0627 \u062e\u06cc\u0627\u0644 \u06c1\u06d2\u061f<\/h2>\n<p>\u06cc\u06c1 \u0648\u06c1 \u062c\u06af\u06c1 \u06c1\u06d2 \u062c\u06c1\u0627\u06ba API \u06a9\u0644\u06cc\u062f\u06cc \u0633\u06cc\u06a9\u06cc\u0648\u0631\u0679\u06cc \u0627\u0644\u062c\u06be\u0646 \u0645\u06cc\u06ba \u067e\u0691 \u062c\u0627\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<p>\u0641\u0631\u0646\u0679 \u0627\u06cc\u0646\u0688 \u06a9\u0648\u0688 \u0635\u0627\u0631\u0641 \u06a9\u06d2 \u0622\u0644\u06d2 \u067e\u0631 \u0686\u0644\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u0633 \u06a9\u0627 \u0645\u0637\u0644\u0628 \u06c1\u06d2 \u06a9\u06c1 \u0635\u0627\u0631\u0641\u06cc\u0646 \u0627\u0633 \u06a9\u0627 \u0645\u0639\u0627\u0626\u0646\u06c1 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u0645\u062b\u0627\u0644 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631:<\/p>\n<pre><code class=\"language-javascript\">const apiKey = \"browser-key\";\n<\/code><\/pre>\n<p>\u0635\u0627\u0631\u0641\u06cc\u0646 JavaScript \u0628\u0646\u0688\u0644\u0632\u060c \u0628\u0631\u0627\u0624\u0632\u0631 \u0688\u0648\u06cc\u0644\u067e\u0631 \u0679\u0648\u0644\u0632\u060c \u06cc\u0627 \u0646\u06cc\u0679 \u0648\u0631\u06a9 \u06a9\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u0648\u06ba \u06a9\u0627 \u0645\u0639\u0627\u0626\u0646\u06c1 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba \u0627\u0648\u0631 \u0645\u0645\u06a9\u0646\u06c1 \u0637\u0648\u0631 \u067e\u0631 \u0627\u0642\u062f\u0627\u0631 \u06a9\u06cc \u062c\u0627\u0646\u0686 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u06a9\u0686\u06be \u0633\u0631\u0648\u0633\u0632 \u062c\u0627\u0646 \u0628\u0648\u062c\u06be \u06a9\u0631 \u0628\u0631\u0627\u0624\u0632\u0631 API \u06a9\u06cc\u0632 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u06cc \u06c1\u06cc\u06ba \u062c\u0648 \u0639\u0648\u0627\u0645\u06cc \u0637\u0648\u0631 \u067e\u0631 \u0646\u0638\u0631 \u0622\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0688\u06cc\u0632\u0627\u0626\u0646 \u06a9\u06cc \u06af\u0626\u06cc \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u06cc\u06c1 \u06a9\u0644\u06cc\u062f\u06cc\u06ba \u0627\u0628 \u0628\u06be\u06cc \u062f\u0631\u062c \u0630\u06cc\u0644 \u062a\u06a9 \u0645\u062d\u062f\u0648\u062f \u06c1\u0648\u0646\u06cc \u0686\u0627\u06c1\u0626\u06cc\u06ba:<\/p>\n<ul>\n<li>\n<p>\u0648\u0627\u0626\u0679 \u0644\u0633\u0679 \u0634\u062f\u06c1 \u0688\u0648\u0645\u06cc\u0646<\/p>\n<\/li>\n<li>\n<p>\u0648\u06cc\u0628 \u0633\u0627\u0626\u0679 \u06a9\u0627 \u0630\u0631\u06cc\u0639\u06c1<\/p>\n<\/li>\n<li>\n<p>API \u0622\u067e\u0631\u06cc\u0634\u0646\u0632<\/p>\n<\/li>\n<li>\n<p>\u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0648\u0679\u06c1<\/p>\n<\/li>\n<li>\n<p>\u0631\u06cc\u0641\u0631\u0631 \u067e\u0627\u0628\u0646\u062f\u06cc\u0627\u06ba<\/p>\n<\/li>\n<li>\n<p>\u0648\u0642\u062a \u06a9\u06cc \u062d\u062f<\/p>\n<\/li>\n<\/ul>\n<p>\u0644\u06cc\u06a9\u0646 \u062d\u0642\u06cc\u0642\u06cc \u0630\u0627\u062a\u06cc \u0627\u0633\u0646\u0627\u062f \u06c1\u06cc\u06ba\u06d4 <strong>\u0628\u0631\u0627\u0624\u0632\u0631 \u06a9\u0648\u0688 \u0645\u06cc\u06ba \u0646\u06c1\u06cc\u06ba \u0631\u06a9\u06be\u0627 \u06af\u06cc\u0627 \u06c1\u06d2\u06d4<\/strong>.<\/p>\n<p>\u0628\u062c\u0627\u0626\u06d2:<\/p>\n<pre><code class=\"language-javascript\">fetch(\"https:\/\/private-api.example.com\/data\", {\n  headers: {\n    Authorization: \"Bearer private-secret-token\"\n  }\n});\n<\/code><\/pre>\n<p>\u0628\u0631\u0627\u0624\u0632\u0631 \u06a9\u0648 \u0627\u067e\u0646\u0627 \u0628\u06cc\u06a9 \u0627\u06cc\u0646\u0688 \u06a9\u0627\u0644 \u06a9\u0631\u0646\u06d2 \u062f\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-javascript\">fetch(\"\/api\/data\");\n<\/code><\/pre>\n<p>\u067e\u0633\u062f\u06cc\u062f \u067e\u06be\u0631 \u0646\u062c\u06cc \u0633\u0631\u0648\u0633 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0628\u0627\u062a \u0686\u06cc\u062a \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-javascript\">const response = await fetch(\n  \"https:\/\/private-api.example.com\/data\",\n  {\n    headers: {\n      Authorization: `Bearer ${process.env.PRIVATE_API_TOKEN}`\n    }\n  }\n);\n<\/code><\/pre>\n<p>\u0627\u0633 \u06a9\u06d2 \u0628\u0639\u062f \u0628\u06cc\u06a9 \u0627\u06cc\u0646\u0688 \u0635\u0631\u0641 \u0648\u06c1\u06cc \u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0648\u0627\u067e\u0633 \u06a9\u0631 \u0633\u06a9\u062a\u0627 \u06c1\u06d2 \u062c\u0648 \u0628\u0631\u0627\u0624\u0632\u0631 \u06a9\u0648 \u062d\u0627\u0635\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0627\u062c\u0627\u0632\u062a \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u06c1\u0645 \u0627\u062e\u062a\u0644\u0627\u0641\u0627\u062a \u06cc\u06c1 \u06c1\u06cc\u06ba:<\/p>\n<pre><code class=\"language-text\">Public\/browser credential\n        \u2193\nCan be visible, but should be restricted\n\nPrivate credential\n        \u2193\nMust remain on a trusted backend or secret-management system\n<\/code><\/pre>\n<h2 id=\"heading-environment-variables-vs-secret-managers\">\u0645\u0627\u062d\u0648\u0644\u06cc\u0627\u062a\u06cc \u0645\u062a\u063a\u06cc\u0631\u0627\u062a \u0627\u0648\u0631 \u062e\u0641\u06cc\u06c1 \u0645\u06cc\u0646\u06cc\u062c\u0631<\/h2>\n<p>\u0645\u0627\u062d\u0648\u0644\u06cc\u0627\u062a\u06cc \u0645\u062a\u063a\u06cc\u0631\u0627\u062a \u06a9\u0627\u0631\u0622\u0645\u062f \u06c1\u06cc\u06ba\u060c \u0644\u06cc\u06a9\u0646 \u0648\u06c1 \u0639\u0627\u0644\u0645\u06cc \u0631\u0627\u0632\u0648\u06ba \u06a9\u06d2 \u0627\u0646\u062a\u0638\u0627\u0645 \u06a9\u0627 \u062d\u0644 \u0646\u06c1\u06cc\u06ba \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u0686\u06be\u0648\u0679\u06cc \u0627\u06cc\u067e\u0644\u06cc \u06a9\u06cc\u0634\u0646\u0632 \u06cc\u0627 \u0645\u0642\u0627\u0645\u06cc \u062a\u0631\u0642\u06cc\u0627\u062a\u06cc \u0645\u0627\u062d\u0648\u0644 \u06a9\u06d2 \u0644\u06cc\u06d2:<\/p>\n<pre><code class=\"language-env\">API_KEY=your-secret\n<\/code><\/pre>\n<p>\u06cc\u06c1 \u0628\u0627\u0644\u06a9\u0644 \u0645\u0639\u0642\u0648\u0644 \u06c1\u0648 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0628\u0691\u06d2 \u067e\u06cc\u0645\u0627\u0646\u06d2 \u067e\u0631 \u067e\u06cc\u062f\u0627\u0648\u0627\u0631\u06cc \u0646\u0638\u0627\u0645 \u06a9\u06d2 \u0644\u06cc\u06d2\u060c \u0633\u0631\u0634\u0627\u0631 \u0646\u0638\u0627\u0645\u0648\u06ba \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u0648 \u0633\u06a9\u062a\u06cc \u06c1\u06d2\u06d4 <strong>\u062e\u0641\u06cc\u06c1 \u0645\u06cc\u0646\u06cc\u062c\u0631<\/strong>.<\/p>\n<p>\u062e\u0641\u06cc\u06c1 \u0627\u0646\u062a\u0638\u0627\u0645 \u06a9\u06d2 \u0646\u0638\u0627\u0645 \u062f\u0631\u062c \u0630\u06cc\u0644 \u062e\u0635\u0648\u0635\u06cc\u0627\u062a \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba:<\/p>\n<ul>\n<li>\n<p>\u0645\u0631\u06a9\u0632\u06cc \u0627\u0633\u0646\u0627\u062f \u06a9\u0627 \u0630\u062e\u06cc\u0631\u06c1<\/p>\n<\/li>\n<li>\n<p>\u0631\u0633\u0627\u0626\u06cc \u06a9\u0646\u0679\u0631\u0648\u0644<\/p>\n<\/li>\n<li>\n<p>\u0634\u06a9\u0631\u06cc\u06c1<\/p>\n<\/li>\n<li>\n<p>\u0627\u0633\u0646\u0627\u062f\u06cc \u06af\u0631\u062f\u0634<\/p>\n<\/li>\n<li>\n<p>\u0648\u0631\u0698\u0646 \u06a9\u0646\u0679\u0631\u0648\u0644<\/p>\n<\/li>\n<li>\n<p>\u0645\u0627\u062d\u0648\u0644 \u06a9\u06d2 \u062f\u0631\u0645\u06cc\u0627\u0646 \u0639\u0644\u06cc\u062d\u062f\u06af\u06cc<\/p>\n<\/li>\n<li>\n<p>\u062a\u0642\u0633\u06cc\u0645 \u06a9\u06d2 \u0646\u0638\u0627\u0645 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0627\u0646\u0636\u0645\u0627\u0645<\/p>\n<\/li>\n<\/ul>\n<p>\u0627\u06c1\u0645 \u062e\u06cc\u0627\u0644 \u06cc\u06c1 \u06c1\u06d2 \u06a9\u06c1 \u0645\u0627\u062e\u0630 \u06a9\u0648\u0688 \u067e\u06cc\u062f\u0627\u0648\u0627\u0631 \u06a9\u06d2 \u0631\u0627\u0632 \u06a9\u0648 \u0630\u062e\u06cc\u0631\u06c1 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0630\u0645\u06c1 \u062f\u0627\u0631 \u0646\u06c1\u06cc\u06ba \u06c1\u0648\u0646\u0627 \u0686\u0627\u06c1\u06cc\u06d2\u06d4<\/p>\n<p>\u0627\u0633 \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2:<\/p>\n<pre><code class=\"language-text\">Application\n    \u2193\nSecret management system\n    \u2193\nCredential\n<\/code><\/pre>\n<p>\u0628\u062c\u0627\u0626\u06d2:<\/p>\n<pre><code class=\"language-text\">Application\n    \u2193\nHardcoded production credential\n<\/code><\/pre>\n<p>\u0622\u067e \u062c\u0648 \u062d\u0644 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba \u0627\u0633 \u06a9\u0627 \u0627\u0646\u062d\u0635\u0627\u0631 \u0622\u067e \u06a9\u06d2 \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 \u06a9\u06d2 \u0633\u0627\u0626\u0632 \u0627\u0648\u0631 \u0636\u0631\u0648\u0631\u06cc\u0627\u062a \u067e\u0631 \u06c1\u0648\u06af\u0627\u06d4<\/p>\n<h2 id=\"heading-add-secret-scanning-to-your-workflow\">\u0627\u067e\u0646\u06d2 \u0648\u0631\u06a9 \u0641\u0644\u0648 \u0645\u06cc\u06ba \u062e\u0641\u06cc\u06c1 \u062a\u0644\u0627\u0634 \u0634\u0627\u0645\u0644 \u06a9\u0631\u06cc\u06ba\u06d4<\/h2>\n<p>\u0627\u0646\u0633\u0627\u0646 \u0639\u0638\u06cc\u0645 \u067e\u0631\u0648\u06af\u0631\u0627\u0645\u0631 \u06c1\u06cc\u06ba\u060c \u0644\u06cc\u06a9\u0646 \u0628\u0639\u0636 \u0627\u0648\u0642\u0627\u062a \u06c1\u0645 \u062e\u0648\u0641\u0646\u0627\u06a9 \u0633\u0631\u0686 \u0627\u0646\u062c\u0646 \u06c1\u0648\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u062e\u0648\u062f\u06a9\u0627\u0631 \u062e\u0641\u06cc\u06c1 \u0628\u0627\u0632\u06cc\u0627\u0641\u062a \u0622\u067e \u06a9\u0648 \u0627\u0633\u0646\u0627\u062f \u06a9\u0648 \u0627\u067e\u0646\u06d2 \u0630\u062e\u06cc\u0631\u06c1 \u0645\u06cc\u06ba \u0628\u0646\u0627\u0626\u06d2 \u062c\u0627\u0646\u06d2 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u067e\u06a9\u0691\u0646\u06d2 \u06a9\u06cc \u0627\u062c\u0627\u0632\u062a \u062f\u06cc\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<p>\u06a9\u0686\u06be \u0645\u0634\u06c1\u0648\u0631 \u0679\u0648\u0644\u0632 \u0645\u06cc\u06ba \u0634\u0627\u0645\u0644 \u06c1\u06cc\u06ba:<\/p>\n<p>\u0645\u062b\u0627\u0644 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631\u060c \u0622\u067e Gitleaks \u06a9\u0648 \u0645\u0642\u0627\u0645\u06cc \u0637\u0648\u0631 \u067e\u0631 \u0686\u0644\u0627 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-bash\">gitleaks detect --source . --verbose\n<\/code><\/pre>\n<p>\u062e\u0641\u06cc\u06c1 \u0633\u06a9\u06cc\u0646\u0646\u06af \u06a9\u0648 \u0628\u06be\u06cc CI \u0645\u06cc\u06ba \u0636\u0645 \u06a9\u06cc\u0627 \u062c\u0627 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0628\u0646\u06cc\u0627\u062f\u06cc GitHub \u0627\u06cc\u06a9\u0634\u0646 \u0648\u0631\u06a9 \u0641\u0644\u0648 \u0645\u0646\u062f\u0631\u062c\u06c1 \u0630\u06cc\u0644 \u06c1\u06d2:<\/p>\n<pre><code class=\"language-yaml\">name: Secret Scan\n\non:\n  push:\n  pull_request:\n\njobs:\n  scan:\n    runs-on: ubuntu-latest\n\n    steps:\n      - name: Check out repository\n        uses: actions\/checkout@v4\n        with:\n          fetch-depth: 0\n\n      - name: Scan for secrets\n        uses: gitleaks\/gitleaks-action@v2\n        env:\n          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n<\/code><\/pre>\n<p>\u0627\u067e\u0646\u06d2 \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 \u06a9\u06d2 \u062d\u0641\u0627\u0638\u062a\u06cc \u0637\u0631\u06cc\u0642\u0648\u06ba \u06a9\u06cc \u0628\u0646\u06cc\u0627\u062f \u067e\u0631 \u0627\u067e\u0646\u06d2 \u0645\u0646\u062a\u062e\u0628 \u06a9\u0631\u062f\u06c1 \u0679\u0648\u0644 \u0627\u0648\u0631 \u0641\u06a9\u0633\u0688 \u0648\u0631\u0698\u0646 \u06a9\u06d2 \u0644\u06cc\u06d2 \u062f\u0633\u062a\u0627\u0648\u06cc\u0632\u0627\u062a \u06a9\u0627 \u062c\u0627\u0626\u0632\u06c1 \u0644\u06cc\u06ba\u06d4<\/p>\n<p>\u062e\u0641\u06cc\u06c1 \u0627\u0633\u06a9\u06cc\u0646\u0631\u0632 \u063a\u0644\u0637 \u0645\u062b\u0628\u062a \u067e\u06cc\u062f\u0627 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u0644\u06c1\u0630\u0627 \u0622\u067e \u06a9\u0648 \u0645\u062d\u0641\u0648\u0638 \u0679\u06cc\u0633\u0679 \u0627\u0642\u062f\u0627\u0631 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u0633\u062a\u062b\u0646\u06cc\u0627\u062a \u06a9\u0648 \u062a\u0631\u062a\u06cc\u0628 \u062f\u06cc\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u067e\u0691 \u0633\u06a9\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<p>\u0644\u06cc\u06a9\u0646 \u0648\u0627\u0626\u0679 \u0644\u0633\u0679\u0646\u06af \u06a9\u06d2 \u0628\u0627\u0631\u06d2 \u0645\u06cc\u06ba \u0645\u062d\u062a\u0627\u0637 \u0631\u06c1\u06cc\u06ba\u06d4 \u062d\u062f \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u0648\u0633\u06cc\u0639 \u0645\u0633\u062a\u062b\u0646\u06cc\u0627\u062a \u0622\u067e \u06a9\u06cc \u062d\u0642\u06cc\u0642\u06cc \u0627\u0633\u0646\u0627\u062f \u06a9\u0648 \u0686\u06be\u067e\u0627 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u0622\u067e \u0641\u0627\u0626\u0644\u0648\u06ba \u06a9\u06d2 \u0627\u0631\u062a\u06a9\u0627\u0628 \u06c1\u0648\u0646\u06d2 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u0628\u06be\u06cc \u0628\u0627\u0632\u06cc\u0627\u0641\u062a \u06a9\u0631\u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u0645\u062b\u0627\u0644 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631\u060c \u0627\u06cc\u06a9 \u0633\u0627\u062f\u06c1 \u067e\u0631\u06cc \u06a9\u0645\u0679 \u0627\u0633\u06a9\u0631\u067e\u0679 \u0645\u0634\u06a9\u0648\u06a9 \u0627\u0644\u0641\u0627\u0638 \u06a9\u0648 \u062a\u0644\u0627\u0634 \u06a9\u0631 \u0633\u06a9\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-bash\">#!\/usr\/bin\/env bash\n\nif grep -RniE \"api[_-]?key|password|secret|token|private[_-]?key\" . \\\n  --exclude-dir=.git \\\n  --exclude=\".env.example\"; then\n\n  echo \"Possible secret detected. Commit cancelled.\"\n  exit 1\nfi\n<\/code><\/pre>\n<p>\u06cc\u06c1 \u0627\u06cc\u06a9 \u0645\u06a9\u0645\u0644 \u0633\u06cc\u06a9\u06cc\u0648\u0631\u0679\u06cc \u0627\u0633\u06a9\u06cc\u0646\u0631 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u060c \u0644\u06cc\u06a9\u0646 \u06cc\u06c1 \u0648\u0627\u0636\u062d \u063a\u0644\u0637\u06cc\u0648\u06ba \u06a9\u0648 \u067e\u06a9\u0691 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0645\u0636\u0628\u0648\u0637 \u062a\u062d\u0641\u0638 \u06a9\u06d2 \u0644\u06cc\u06d2\u060c \u067e\u0631\u06cc \u06a9\u0645\u0679 \u0641\u0631\u06cc\u0645 \u0648\u0631\u06a9 \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u0627\u06cc\u06a9 \u0633\u0631\u0634\u0627\u0631 \u062e\u0641\u06cc\u06c1 \u0628\u0627\u0632\u06cc\u0627\u0641\u062a \u06a9\u0627 \u0622\u0644\u06c1 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<p>\u0645\u0642\u0635\u062f \u0627\u0631\u062a\u06a9\u0627\u0628 \u06a9\u0648 \u062f\u06a9\u06be\u06cc \u0628\u0646\u0627\u0646\u0627 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4 \u0645\u0642\u0635\u062f \u06cc\u06c1 \u06c1\u06d2 \u06a9\u06c1 \u062d\u0627\u062f\u062b\u0627\u062a\u06cc \u0637\u0648\u0631 \u067e\u0631 \u0627\u0633\u0646\u0627\u062f \u0634\u0627\u0626\u0639 \u06a9\u0631\u0646\u0627 \u0645\u0632\u06cc\u062f \u0645\u0634\u06a9\u0644 \u06c1\u0648 \u062c\u0627\u0626\u06d2\u06d4<\/p>\n<h2 id=\"heading-review-your-staged-diff-before-committing\">\u0627\u0631\u062a\u06a9\u0627\u0628 \u06a9\u0631\u0646\u06d2 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u0645\u0631\u062d\u0644\u06c1 \u0648\u0627\u0631 \u0641\u0631\u0642 \u06a9\u0627 \u062c\u0627\u0626\u0632\u06c1 \u0644\u06cc\u06ba\u06d4<\/h2>\n<p>\u0627\u06cc\u06a9 \u0622\u0633\u0627\u0646 \u062a\u0631\u06cc\u0646 \u062d\u0641\u0627\u0638\u062a\u06cc \u0639\u0627\u062f\u0627\u062a \u062c\u0648 \u0622\u067e \u062a\u06cc\u0627\u0631 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba \u06cc\u06c1 \u0686\u06cc\u06a9 \u06a9\u0631\u0646\u0627 \u06c1\u06d2 \u06a9\u06c1 \u0622\u067e \u0627\u0635\u0644 \u0645\u06cc\u06ba \u06a9\u06cc\u0627 \u06a9\u0631\u0646\u0627 \u0686\u0627\u06c1\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u067e\u06c1\u0644\u0627:<\/p>\n<pre><code class=\"language-bash\">git status\n<\/code><\/pre>\n<p>\u067e\u06be\u0631 \u0635\u0631\u0641 \u0648\u06c1\u06cc \u0641\u0627\u0626\u0644\u06cc\u06ba \u062a\u06cc\u0627\u0631 \u06a9\u0631\u06cc\u06ba \u062c\u0648 \u0622\u067e \u06a9\u0631\u0646\u0627 \u0686\u0627\u06c1\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-bash\">git add src\/api.js README.md\n<\/code><\/pre>\n<p>\u0627\u0628 \u0645\u0631\u062d\u0644\u06c1 \u0648\u0627\u0631 \u062a\u0628\u062f\u06cc\u0644\u06cc\u0648\u06ba \u06a9\u0627 \u062c\u0627\u0626\u0632\u06c1 \u0644\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-bash\">git diff --cached\n<\/code><\/pre>\n<p>\u062a\u0644\u0627\u0634 \u06a9\u0631\u06cc\u06ba:<\/p>\n<ul>\n<li>\n<p>API \u06a9\u0644\u06cc\u062f<\/p>\n<\/li>\n<li>\n<p>\u067e\u0627\u0633 \u0648\u0631\u0688<\/p>\n<\/li>\n<li>\n<p>\u0679\u0648\u06a9\u0646<\/p>\n<\/li>\n<li>\n<p>\u0646\u062c\u06cc URL<\/p>\n<\/li>\n<li>\n<p>\u0627\u0646\u062f\u0631\u0648\u0646\u06cc \u0645\u06cc\u0632\u0628\u0627\u0646 \u0646\u0627\u0645<\/p>\n<\/li>\n<li>\n<p>\u06a9\u0633\u0679\u0645\u0631 \u0688\u06cc\u0679\u0627<\/p>\n<\/li>\n<li>\n<p>\u0688\u06cc\u0628\u06af \u0622\u0624\u0679 \u067e\u0679<\/p>\n<\/li>\n<li>\n<p>\u0630\u0627\u062a\u06cc \u0645\u0639\u0644\u0648\u0645\u0627\u062a<\/p>\n<\/li>\n<li>\n<p>\u0630\u0627\u062a\u06cc \u0633\u0631\u0679\u06cc\u0641\u06a9\u06cc\u0679<\/p>\n<\/li>\n<\/ul>\n<p>\u0645\u0631\u062d\u0644\u06c1 \u0648\u0627\u0631 \u0641\u0631\u0642 \u0635\u062d\u06cc\u062d \u0637\u0631\u06cc\u0642\u06d2 \u0633\u06d2 \u0638\u0627\u06c1\u0631 \u06c1\u0648\u0646\u06d2 \u06a9\u06d2 \u0628\u0639\u062f \u06c1\u06cc \u06a9\u0645\u0679 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-bash\">git commit -m \"Load API key from environment\"\n<\/code><\/pre>\n<p>\u0628\u0631\u0627\u06c1 \u06a9\u0631\u0645 \u062f\u0631\u062c \u0630\u06cc\u0644 \u06a9\u0648 \u0646\u0648\u0679 \u06a9\u0631\u06cc\u06ba:<\/p>\n<pre><code class=\"language-bash\">git add .\n<\/code><\/pre>\n<p>\u0622\u067e \u0627\u06cc\u0633\u06cc \u0641\u0627\u0626\u0644\u06cc\u06ba \u062a\u06cc\u0627\u0631 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba \u062c\u0646\u06c1\u06cc\u06ba \u0622\u067e \u0646\u06d2 \u06a9\u0628\u06be\u06cc \u0634\u0627\u0626\u0639 \u06a9\u0631\u0646\u06d2 \u06a9\u0627 \u0627\u0631\u0627\u062f\u06c1 \u0646\u06c1\u06cc\u06ba \u06a9\u06cc\u0627 \u062a\u06be\u0627\u060c \u0628\u0634\u0645\u0648\u0644: <code>.env<\/code> \u0641\u0627\u0626\u0644\u060c \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u0627\u06cc\u06a9\u0633\u067e\u0648\u0631\u0679\u060c \u062c\u0646\u0631\u06cc\u0679\u0688 \u0641\u0627\u0626\u0644 \u06cc\u0627 \u0644\u0648\u06a9\u0644 \u06a9\u0646\u0641\u06cc\u06af\u0631\u06cc\u0634\u0646\u06d4<\/p>\n<h2 id=\"heading-common-mistakes-developers-make\">\u0639\u0627\u0645 \u063a\u0644\u0637\u06cc\u0627\u06ba \u062c\u0648 \u0688\u0648\u06cc\u0644\u067e\u0631\u0632 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/h2>\n<h3 id=\"heading-mistake-1-i-deleted-it-so-its-fine\">\u063a\u0644\u0637\u06cc 1: &quot;\u0645\u06cc\u06ba \u0646\u06d2 \u0627\u0633\u06d2 \u0645\u0679\u0627 \u062f\u06cc\u0627 \u062a\u0648 \u06cc\u06c1 \u0679\u06be\u06cc\u06a9 \u06c1\u06d2&#8221;<\/h3>\n<p>\u06a9\u0633\u06cc \u0641\u0627\u0626\u0644 \u06a9\u06d2 \u0645\u0648\u062c\u0648\u062f\u06c1 \u0648\u0631\u0698\u0646 \u0633\u06d2 \u06a9\u0633\u06cc \u0631\u0627\u0632 \u06a9\u0648 \u062d\u0630\u0641 \u06a9\u0631\u0646\u0627 \u0627\u0633\u06d2 Git \u06a9\u06cc \u062a\u0627\u0631\u06cc\u062e \u0633\u06d2 \u062d\u0630\u0641 \u0646\u06c1\u06cc\u06ba \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p><strong>\u062c\u0648\u0627\u0628:<\/strong> \u0627\u06af\u0631 \u0645\u0646\u0627\u0633\u0628 \u06c1\u0648 \u062a\u0648\u060c \u0627\u0633\u0646\u0627\u062f \u06a9\u0648 \u0645\u0646\u0633\u0648\u062e \u06a9\u0631\u06cc\u06ba \u0627\u0648\u0631 \u0630\u062e\u06cc\u0631\u06c1 \u06a9\u06cc \u062a\u0627\u0631\u06cc\u062e \u06a9\u0648 \u0635\u0627\u0641 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<h3 id=\"heading-mistake-2-the-repository-is-private\">\u063a\u0644\u0637\u06cc 2: &quot;\u0630\u062e\u06cc\u0631\u06c1 \u0646\u062c\u06cc \u06c1\u06d2&#8221;<\/h3>\n<p>\u0627\u06cc\u06a9 \u0646\u062c\u06cc \u0630\u062e\u06cc\u0631\u06c1 \u0630\u062e\u06cc\u0631\u06c1 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4<\/p>\n<p>\u0633\u0645\u062c\u06be\u0648\u062a\u06c1 \u0634\u062f\u06c1 \u0627\u06a9\u0627\u0624\u0646\u0679\u0633\u060c \u0627\u0646\u0679\u06cc\u06af\u0631\u06cc\u0634\u0646\u0632\u060c CI \u0644\u0627\u06af\u0632\u060c \u0641\u0648\u0631\u06a9\u060c \u0628\u06cc\u06a9 \u0627\u067e\u060c \u06cc\u0627 \u06a9\u0627\u067e\u06cc \u0634\u062f\u06c1 \u06a9\u0648\u0688 \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u0627\u0633\u0646\u0627\u062f \u06a9\u0627 \u0644\u06cc\u06a9 \u06c1\u0648\u0646\u0627 \u062c\u0627\u0631\u06cc \u0631\u06c1 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p><strong>\u062c\u0648\u0627\u0628:<\/strong> \u067e\u0631\u0627\u0626\u06cc\u0648\u06cc\u0679 \u0631\u06cc\u067e\u0648\u0632\u0679\u0631\u06cc\u0648\u06ba \u0645\u06cc\u06ba \u0628\u06be\u06cc \u0631\u0627\u0632\u0648\u06ba \u06a9\u0627 \u0627\u0631\u062a\u06a9\u0627\u0628 \u0646\u06c1 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<h3 id=\"heading-mistake-3-ill-just-encode-it\">\u063a\u0644\u0637\u06cc 3: &quot;\u0645\u06cc\u06ba \u0627\u0633\u06d2 \u0635\u0631\u0641 \u0627\u0646\u06a9\u0648\u0688 \u06a9\u0631\u0648\u06ba \u06af\u0627&#8221;<\/h3>\n<p>\u06cc\u06c1 \u0622\u067e \u06a9\u06cc \u0627\u0633\u0646\u0627\u062f \u06a9\u0648 \u062e\u0641\u06cc\u06c1 \u0646\u06c1\u06cc\u06ba \u0628\u0646\u0627\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-javascript\">const key = atob(\"c29tZS1rZXk=\");\n<\/code><\/pre>\n<p>\u06cc\u0627:<\/p>\n<pre><code class=\"language-javascript\">const key = \"some-\" + \"secret-\" + \"value\";\n<\/code><\/pre>\n<p>\u06cc\u06c1\u0627\u06ba \u062a\u06a9 \u06a9\u06c1 \u0627\u06af\u0631 \u0622\u067e \u0627\u0646\u06a9\u0648\u0688 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u062a\u0642\u0633\u06cc\u0645 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u0646\u0627\u0645 \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u06cc\u0627 \u0627\u067e\u0646\u06cc \u0627\u0633\u0646\u0627\u062f \u06a9\u0648 \u0686\u06be\u067e\u0627\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u062a\u0628 \u0628\u06be\u06cc \u0648\u06c1 \u0645\u062d\u0641\u0648\u0638 \u0646\u06c1\u06cc\u06ba \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u0627\u06af\u0631 \u0622\u067e \u06a9\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0627\u067e\u0646\u06d2 \u0627\u0633\u0646\u0627\u062f \u06a9\u0648 \u062f\u0648\u0628\u0627\u0631\u06c1 \u062a\u0634\u06a9\u06cc\u0644 \u062f\u06d2 \u0633\u06a9\u062a\u06cc \u06c1\u06d2\u060c \u062a\u0648 \u06a9\u0648\u0626\u06cc \u0622\u067e \u06a9\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u0627 \u062a\u062c\u0632\u06cc\u06c1 \u06a9\u0631\u0646\u06d2 \u0648\u0627\u0644\u0627 \u0628\u06be\u06cc \u0627\u06cc\u0633\u0627 \u06c1\u06cc \u06a9\u0631 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<h3 id=\"heading-mistake-4-logging-the-secret\">\u063a\u0644\u0637\u06cc 4: \u062e\u0641\u06cc\u06c1 \u0631\u06cc\u06a9\u0627\u0631\u0688<\/h3>\n<p>\u0628\u0631\u0627\u06c1 \u06a9\u0631\u0645 \u062f\u0631\u062c \u0630\u06cc\u0644 \u06a9\u0627\u0645 \u0646\u06c1 \u06a9\u0631\u06cc\u06ba:<\/p>\n<pre><code class=\"language-javascript\">console.log(process.env.API_KEY);\n<\/code><\/pre>\n<p>\u0644\u0627\u06af\u0632 \u06a9\u0648 \u0679\u0631\u0645\u06cc\u0646\u0644\u0632\u060c CI \u0633\u0633\u0679\u0645\u0632\u060c \u06c1\u0648\u0633\u0679\u0646\u06af \u067e\u0631\u0648\u0648\u0627\u0626\u06cc\u0688\u0631\u0632\u060c \u0645\u0627\u0646\u06cc\u0679\u0631\u0646\u06af \u067e\u0644\u06cc\u0679 \u0641\u0627\u0631\u0645\u0632 \u06cc\u0627 \u06a9\u0644\u0627\u0624\u0688 \u0633\u0631\u0648\u0633\u0632 \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u0645\u062d\u0641\u0648\u0638 \u06a9\u06cc\u0627 \u062c\u0627 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u0633 \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2:<\/p>\n<pre><code class=\"language-javascript\">console.log(\n  \"API key configured:\",\n  Boolean(process.env.API_KEY)\n);\n<\/code><\/pre>\n<p>\u0627\u06af\u0631 \u0622\u067e \u06a9\u0648 \u0688\u06cc\u0628\u06af\u0646\u06af \u06a9\u06d2 \u062f\u0648\u0631\u0627\u0646 \u0627\u0642\u062f\u0627\u0631 \u06a9\u0627 \u0645\u0639\u0627\u0626\u0646\u06c1 \u06a9\u0631\u0646\u0627 \u06c1\u0648\u06af\u0627\u060c \u062a\u0648 \u0645\u06a9\u0645\u0644 \u0627\u0633\u0646\u0627\u062f \u067e\u0631\u0646\u0679 \u0646\u06c1 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<p>\u0645\u062b\u0627\u0644 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631:<\/p>\n<pre><code class=\"language-javascript\">function maskSecret(value) {\n  if (!value) return \"not configured\";\n  if (value.length <= 8) return \"********\";\n\n  return `${value.slice(0, 4)}...${value.slice(-4)}`;\n}\n\nconsole.log(maskSecret(process.env.API_KEY));\n<\/code><\/pre>\n<p>\u0646\u0642\u0627\u0628 \u067e\u0648\u0634 \u0627\u0633\u0646\u0627\u062f \u06a9\u0648 \u0628\u06be\u06cc \u0627\u062d\u062a\u06cc\u0627\u0637 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0633\u0646\u0628\u06be\u0627\u0644\u0646\u0627 \u0686\u0627\u06c1\u0626\u06d2\u06d4<\/p>\n<h3 id=\"heading-mistake-5-using-the-same-credential-everywhere\">\u063a\u0644\u0637\u06cc 5: \u06c1\u0631 \u062c\u06af\u06c1 \u0627\u06cc\u06a9 \u062c\u06cc\u0633\u06cc \u0627\u0633\u0646\u0627\u062f \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4<\/h3>\n<p>\u0627\u06af\u0631 \u0645\u0642\u0627\u0645\u06cc \u062a\u0631\u0642\u06cc\u060c \u062c\u0627\u0646\u0686\u060c \u0633\u0679\u06cc\u062c\u0646\u06af\u060c \u0627\u0648\u0631 \u067e\u0631\u0648\u0688\u06a9\u0634\u0646 \u0633\u0628\u06be\u06cc \u0627\u06cc\u06a9 \u062c\u06cc\u0633\u06d2 \u0627\u0633\u0646\u0627\u062f \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u062a\u0648 \u0627\u06cc\u06a9 \u062e\u0644\u0627\u0641 \u0648\u0631\u0632\u06cc \u0627\u0646 \u0633\u0628 \u06a9\u0648 \u0645\u062a\u0627\u062b\u0631 \u06a9\u0631 \u0633\u06a9\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<p><strong>\u062c\u0648\u0627\u0628:<\/strong> \u0639\u0644\u06cc\u062d\u062f\u06c1 \u0627\u062c\u0627\u0632\u062a \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0639\u0644\u06cc\u062d\u062f\u06c1 \u0627\u0633\u0646\u0627\u062f \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<h3 id=\"heading-mistake-6-cleaning-only-the-current-branch\">\u063a\u0644\u0637\u06cc 6: \u0635\u0631\u0641 \u0645\u0648\u062c\u0648\u062f\u06c1 \u0634\u0627\u062e \u06a9\u0648 \u0635\u0627\u0641 \u06a9\u0631\u0646\u0627<\/h3>\n<p>\u0631\u0627\u0632 \u0627\u0633 \u0645\u06cc\u06ba \u0631\u06c1 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba:<\/p>\n<ul>\n<li>\n<p>\u067e\u0631\u0627\u0646\u06cc \u0634\u0627\u062e<\/p>\n<\/li>\n<li>\n<p>\u0679\u06cc\u06af<\/p>\n<\/li>\n<li>\n<p>\u06a9\u06be\u06cc\u0646\u0686\u0646\u06d2 \u06a9\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a<\/p>\n<\/li>\n<li>\n<p>\u062f\u0648\u0633\u0631\u06d2 \u062d\u0648\u0627\u0644\u06c1 \u062c\u0627\u062a<\/p>\n<\/li>\n<\/ul>\n<p><strong>\u062c\u0648\u0627\u0628:<\/strong> \u0644\u06cc\u06a9 \u0634\u062f\u06c1 \u0627\u0633\u0646\u0627\u062f \u06a9\u06cc \u0686\u06be\u0627\u0646 \u0628\u06cc\u0646 \u0627\u0648\u0631 \u0635\u0641\u0627\u0626\u06cc \u06a9\u0631\u062a\u06d2 \u0648\u0642\u062a\u060c \u0627\u067e\u0646\u06d2 \u067e\u0648\u0631\u06d2 \u0630\u062e\u06cc\u0631\u06c1 \u067e\u0631 \u063a\u0648\u0631 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<h3 id=\"heading-mistake-7-forgetting-build-artifacts\">\u063a\u0644\u0637\u06cc 7: \u0646\u0645\u0648\u0646\u06d2 \u06a9\u06cc \u062a\u0639\u0645\u06cc\u0631 \u06a9\u0648 \u0628\u06be\u0648\u0644 \u062c\u0627\u0646\u0627<\/h3>\n<p>\u0631\u0627\u0632 \u062f\u0631\u062c \u0630\u06cc\u0644 \u0645\u0642\u0627\u0645\u0627\u062a \u067e\u0631 \u0628\u06be\u06cc \u0638\u0627\u06c1\u0631 \u06c1\u0648 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p><strong>\u062c\u0648\u0627\u0628:<\/strong> \u0627\u0633\u0646\u0627\u062f \u06a9\u0648 \u0645\u0646\u0633\u0648\u062e \u06a9\u0631\u06cc\u06ba \u0627\u0648\u0631 \u0645\u062a\u0627\u062b\u0631\u06c1 \u0646\u0645\u0648\u0646\u06d2 \u06a9\u06cc \u0634\u0646\u0627\u062e\u062a \u06a9\u0631\u06cc\u06ba \u062c\u0646\u06c1\u06cc\u06ba \u06c1\u0679\u0627\u0646\u06d2 \u06cc\u0627 \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u067e\u0691\u0633\u06a9\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-a-complete-api-key-incident-checklist\">\u0645\u06a9\u0645\u0644 API \u06a9\u0644\u06cc\u062f\u06cc \u0648\u0627\u0642\u0639\u06c1 \u0686\u06cc\u06a9 \u0644\u0633\u0679<\/h2>\n<p>\u0627\u06af\u0631 \u0622\u067e \u06a9\u0648 \u067e\u062a\u06c1 \u0686\u0644\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u0622\u067e \u06a9\u06cc API \u06a9\u0644\u06cc\u062f \u0633\u0627\u0645\u0646\u06d2 \u0622 \u06af\u0626\u06cc \u06c1\u06d2\u060c \u062a\u0648 \u062f\u0631\u062c \u0630\u06cc\u0644 \u0686\u06cc\u06a9 \u0644\u0633\u0679 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba:<\/p>\n<pre><code class=\"language-text\">1. Revoke or rotate the leaked key\n2. Create a replacement credential\n3. Restrict the replacement credential\n4. Review provider logs\n5. Review billing and usage\n6. Check for unauthorized resources\n7. Remove the key from current files\n8. Add secret files to .gitignore\n9. Create or update .env.example\n10. Search Git history\n11. Check branches and tags\n12. Remove the secret from Git history if necessary\n13. Verify the old secret is gone\n14. Force-push cleaned history if appropriate\n15. Check pull requests and forks\n16. Check CI and deployment logs\n17. Update local configuration\n18. Update staging configuration\n19. Update production configuration\n20. Update CI\/CD secrets\n21. Run a secret scanner\n22. Document the incident\n23. Add preventive security checks\n<\/code><\/pre>\n<p>\u0641\u0631\u0627\u06c1\u0645 \u06a9\u0646\u0646\u062f\u06c1 \u0627\u0648\u0631 \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 \u06a9\u06d2 \u0644\u062d\u0627\u0638 \u0633\u06d2 \u062f\u0631\u0633\u062a \u0627\u0642\u062f\u0627\u0645\u0627\u062a \u0645\u062e\u062a\u0644\u0641 \u06c1\u0648\u06ba \u06af\u06d2\u060c \u0644\u06cc\u06a9\u0646 \u0622\u0631\u0688\u0631 \u0627\u06c1\u0645 \u06c1\u06d2\u06d4 <strong>\u067e\u06c1\u0644\u06d2 \u0627\u0633\u06d2 \u0628\u0627\u0637\u0644 \u06a9\u0631\u06cc\u06ba\u06d4 \u0627\u0633\u06d2 \u062f\u0648\u0633\u0631\u06cc \u0628\u0627\u0631 \u0635\u0627\u0641 \u06a9\u0631\u06cc\u06ba\u06d4<\/strong><\/p>\n<h2 id=\"heading-a-secure-project-structure\">\u0645\u062d\u0641\u0648\u0638 \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 \u06a9\u0627 \u0688\u06be\u0627\u0646\u0686\u06c1<\/h2>\n<p>\u06cc\u06c1\u0627\u06ba \u0627\u06cc\u06a9 \u0633\u0627\u062f\u06c1 Node.js \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 \u06c1\u06d2:<\/p>\n<pre><code class=\"language-text\">my-project\/\n\u251c\u2500\u2500 src\/\n\u2502   \u2514\u2500\u2500 api.js\n\u251c\u2500\u2500 .env\n\u251c\u2500\u2500 .env.example\n\u251c\u2500\u2500 .gitignore\n\u251c\u2500\u2500 package.json\n\u2514\u2500\u2500 README.md\n<\/code><\/pre>\n<p>\u0639\u0644\u0627\u0642\u06c1 <code>.env<\/code> \u0641\u0627\u0626\u0644 \u0645\u06cc\u06ba \u062d\u0642\u06cc\u0642\u06cc \u062a\u0631\u0642\u06cc \u06a9\u06cc \u0627\u0642\u062f\u0627\u0631 \u0634\u0627\u0645\u0644 \u06c1\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-env\">API_KEY=your-local-key\n<\/code><\/pre>\n<p>\u06a9\u06c1 <code>.env.example<\/code> \u0641\u0627\u0626\u0644 \u0645\u06cc\u06ba \u06a9\u0648\u0626\u06cc \u062d\u0642\u06cc\u0642\u06cc \u0627\u0633\u0646\u0627\u062f \u0646\u06c1\u06cc\u06ba \u06c1\u06cc\u06ba:<\/p>\n<pre><code class=\"language-env\">API_KEY=replace-me-with-your-own-key\n<\/code><\/pre>\n<p>\u0627\u06cc\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0645\u0627\u062d\u0648\u0644\u06cc\u0627\u062a\u06cc \u0645\u062a\u063a\u06cc\u0631\u0627\u062a \u06a9\u0648 \u067e\u0691\u06be\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-javascript\">import \"dotenv\/config\";\n\nconst apiKey = process.env.API_KEY;\n\nif (!apiKey) {\n  throw new Error(\"Missing API_KEY environment variable\");\n}\n\nexport async function getData() {\n  const response = await fetch(\n    \"https:\/\/api.example.com\/data\",\n    {\n      headers: {\n        Authorization: `Bearer ${apiKey}`\n      }\n    }\n  );\n\n  if (!response.ok) {\n    throw new Error(\n      `API request failed: ${response.status}`\n    );\n  }\n\n  return response.json();\n}\n<\/code><\/pre>\n<p>\u0627\u0648\u0631 <code>.gitignore<\/code> \u0645\u0633\u062a\u0642\u0628\u0644 \u06a9\u06d2 \u0648\u0639\u062f\u0648\u06ba \u0645\u06cc\u06ba \u0645\u0642\u0627\u0645\u06cc \u0645\u0627\u062d\u0648\u0644 \u06a9\u06cc \u0641\u0627\u0626\u0644\u0648\u06ba \u06a9\u0648 \u0645\u062d\u0641\u0648\u0638 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-gitignore\">.env\n.env.*\n!.env.example\n\nnode_modules\/\n<\/code><\/pre>\n<p>\u0622\u062e\u0631 \u0645\u06cc\u06ba\u060c \u0627\u06cc\u06a9 README \u0622\u067e \u06a9\u06cc \u0627\u0633\u0646\u0627\u062f \u06a9\u0648 \u0638\u0627\u06c1\u0631 \u06a9\u06cc\u06d2 \u0628\u063a\u06cc\u0631 \u0622\u067e \u06a9\u06d2 \u0633\u06cc\u0679 \u0627\u067e \u06a9\u06cc \u0648\u0636\u0627\u062d\u062a \u06a9\u0631 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0645\u0631\u062d\u0644\u06c1 1: \u0645\u062b\u0627\u0644 \u06a9\u06d2 \u0645\u0627\u062d\u0648\u0644 \u06a9\u06cc \u0641\u0627\u0626\u0644 \u06a9\u0648 Bash \u0645\u06cc\u06ba \u06a9\u0627\u067e\u06cc \u06a9\u0631\u06cc\u06ba\u06d4 <code>cp .env.example .env<\/code><\/p>\n<p>\u0645\u0631\u062d\u0644\u06c1 2: \u0627\u067e\u0646\u06cc \u062e\u0648\u062f \u06a9\u06cc API \u06a9\u0644\u06cc\u062f \u0627\u0633 \u0645\u06cc\u06ba \u0634\u0627\u0645\u0644 \u06a9\u0631\u06cc\u06ba: <code>.env<\/code>.<\/p>\n<p>\u0627\u0648\u0631 \u0622\u062e\u0631\u06cc \u0644\u06cc\u06a9\u0646 \u06a9\u0645 \u0627\u0632 \u06a9\u0645\u060c \u0627\u067e\u0646\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0634\u0631\u0648\u0639 \u06a9\u0631\u06cc\u06ba!<\/p>\n<pre><code class=\"language-bash\">npm start\n<\/code><\/pre>\n<h2 id=\"heading-final-thoughts\">\u062d\u062a\u0645\u06cc \u062e\u06cc\u0627\u0644\u0627\u062a<\/h2>\n<p>\u0622\u067e \u06a9\u06cc API \u06a9\u0644\u06cc\u062f \u06a9\u06d2 \u0644\u06cc\u06a9 \u06c1\u0648\u0646\u06d2 \u06a9\u0627 \u0645\u0637\u0644\u0628 \u06cc\u06c1 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2 \u06a9\u06c1 \u0622\u067e \u062e\u0631\u0627\u0628 \u0688\u0648\u06cc\u0644\u067e\u0631 \u06c1\u06cc\u06ba\u06d4 \u0627\u0633 \u06a9\u0627 \u0645\u0637\u0644\u0628 \u06c1\u06d2 \u06a9\u06c1 \u0622\u067e \u06a9\u06d2 \u0688\u06cc\u0648\u0644\u067e\u0645\u0646\u0679 \u0648\u0631\u06a9 \u0641\u0644\u0648 \u06a9\u0648 \u0628\u06c1\u062a\u0631 \u06af\u0627\u0631\u0688\u0631\u06cc\u0644\u0632 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u06c1\u0645 \u0628\u0627\u062a \u06cc\u06c1 \u062c\u0627\u0646\u0646\u0627 \u06c1\u06d2 \u06a9\u06c1 \u06a9\u0633 \u0637\u0631\u062d \u0641\u0648\u0631\u06cc \u0631\u062f \u0639\u0645\u0644 \u0638\u0627\u06c1\u0631 \u06a9\u06cc\u0627 \u062c\u0627\u0626\u06d2 \u0627\u0648\u0631 \u0627\u0633\u06cc \u063a\u0644\u0637\u06cc \u06a9\u0648 \u062f\u0648\u0628\u0627\u0631\u06c1 \u06c1\u0648\u0646\u06d2 \u0633\u06d2 \u06a9\u06cc\u0633\u06d2 \u0631\u0648\u06a9\u0627 \u062c\u0627\u0626\u06d2\u06d4<\/p>\n<p>\u06c1\u0646\u06af\u0627\u0645\u06cc \u0641\u0627\u0631\u0645\u0648\u0644\u06c1 \u06cc\u0627\u062f \u0631\u06a9\u06be\u06cc\u06ba:<\/p>\n<pre><code class=\"language-text\">Invalidate \u2192 Investigate \u2192 Remove \u2192 Replace \u2192 Prevent\n<\/code><\/pre>\n<p>\u0627\u06c1\u0645 \u0628\u0627\u062a \u06cc\u06c1 \u062c\u0627\u0646\u0646\u0627 \u06c1\u06d2 \u06a9\u06c1 \u06a9\u0633 \u0637\u0631\u062d \u0641\u0648\u0631\u06cc \u0631\u062f \u0639\u0645\u0644 \u0638\u0627\u06c1\u0631 \u06a9\u06cc\u0627 \u062c\u0627\u0626\u06d2 \u0627\u0648\u0631 \u0627\u0633\u06cc \u063a\u0644\u0637\u06cc \u06a9\u0648 \u062f\u0648\u0628\u0627\u0631\u06c1 \u06c1\u0648\u0646\u06d2 \u0633\u06d2 \u06a9\u06cc\u0633\u06d2 \u0631\u0648\u06a9\u0627 \u062c\u0627\u0626\u06d2\u06d4<\/p>\n<ul>\n<li>\n<p>\u0644\u06cc\u06a9 \u0634\u062f\u06c1 \u0627\u0633\u0646\u0627\u062f \u06a9\u0648 \u0628\u0627\u0637\u0644 \u06a9\u0631\u06cc\u06ba \u062a\u0627\u06a9\u06c1 \u0648\u06c1 \u0645\u0632\u06cc\u062f \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u0646\u06c1 \u06c1\u0648 \u0633\u06a9\u06cc\u06ba\u06d4<\/p>\n<\/li>\n<li>\n<p>\u063a\u0644\u0637 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u06cc \u062c\u0627\u0646\u0686 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0644\u0627\u06af\u0632\u060c \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u0627\u0648\u0631 \u0628\u0644\u0646\u06af \u06a9\u06cc \u062a\u0627\u0631\u06cc\u062e \u06a9\u0627 \u062c\u0627\u0626\u0632\u06c1 \u0644\u06cc\u06ba\u06d4<\/p>\n<\/li>\n<li>\n<p>\u0627\u06af\u0631 \u0636\u0631\u0648\u0631\u06cc \u06c1\u0648 \u062a\u0648 \u0627\u067e\u0646\u06d2 \u0645\u0648\u062c\u0648\u062f\u06c1 \u06a9\u0648\u0688 \u0627\u0648\u0631 \u06af\u0679 \u06c1\u0633\u0679\u0631\u06cc \u0633\u06d2 \u0631\u0627\u0632 \u06a9\u0648 \u06c1\u0679\u0627 \u062f\u06cc\u06ba\u06d4<\/p>\n<\/li>\n<li>\n<p>\u0627\u0646\u06c1\u06cc\u06ba \u0646\u0626\u06cc \u200b\u200b\u0627\u0633\u0646\u0627\u062f \u0633\u06d2 \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0631\u06cc\u06ba \u062c\u0646 \u06a9\u06d2 \u067e\u0627\u0633 \u0635\u0631\u0641 \u0636\u0631\u0648\u0631\u06cc \u0627\u062c\u0627\u0632\u062a\u06cc\u06ba \u06c1\u06cc\u06ba\u06d4<\/p>\n<\/li>\n<li>\n<p>\u0645\u0627\u062d\u0648\u0644\u06cc\u0627\u062a\u06cc \u0645\u062a\u063a\u06cc\u0631\u0627\u062a\u060c \u062e\u0641\u06cc\u06c1 \u0645\u06cc\u0646\u06cc\u062c\u0631\u0632\u060c \u062e\u0641\u06cc\u06c1 \u0627\u0633\u06a9\u06cc\u0646\u0646\u06af\u060c \u0627\u0648\u0631 \u0645\u062d\u062a\u0627\u0637 \u06af\u0679 \u067e\u0631\u06cc\u06a9\u0679\u0633\u0632 \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u0645\u0633\u062a\u0642\u0628\u0644 \u0645\u06cc\u06ba \u0644\u06cc\u06a9\u0633 \u06a9\u0648 \u0631\u0648\u06a9\u06cc\u06ba\u06d4<\/p>\n<\/li>\n<\/ul>\n<p>\u06af\u0679 \u06a9\u0633\u06cc \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 \u06a9\u06cc \u062a\u0627\u0631\u06cc\u062e \u06a9\u0648 \u06cc\u0627\u062f \u0631\u06a9\u06be\u0646\u06d2 \u0645\u06cc\u06ba \u0628\u06c1\u062a \u0627\u0686\u06be\u0627 \u06c1\u06d2\u06d4 \u06cc\u06c1 \u0627\u0633 \u0648\u0642\u062a \u0645\u0641\u06cc\u062f \u06c1\u0648\u062a\u0627 \u06c1\u06d2 \u062c\u0628 \u0622\u067e \u063a\u0644\u0637\u06cc \u0633\u06d2 \u06a9\u0648\u0626\u06cc \u0627\u06c1\u0645 \u062e\u0635\u0648\u0635\u06cc\u062a \u062d\u0630\u0641 \u06a9\u0631 \u062f\u06cc\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u062a\u0627\u06c1\u0645\u060c \u0627\u06af\u0631 \u0622\u067e \u06a9\u06d2 \u0631\u06cc\u06a9\u0627\u0631\u0688 \u0645\u06cc\u06ba \u067e\u0627\u0633 \u0648\u0631\u0688 \u0645\u0648\u062c\u0648\u062f \u06c1\u06cc\u06ba\u060c \u062a\u0648 \u0648\u06c1 \u0628\u06c1\u062a \u06a9\u0645 \u0645\u0641\u06cc\u062f \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u0644\u06c1\u0630\u0627 \u062c\u0628 \u0645\u0646\u0627\u0633\u0628 \u06c1\u0648 \u0627\u067e\u0646\u06d2 \u06a9\u0648\u0688 \u06a9\u0648 \u0639\u0648\u0627\u0645\u06cc \u0631\u06a9\u06be\u06cc\u06ba\u06d4 \u0627\u0648\u0631 <strong>\u0627\u067e\u0646\u06d2 \u0631\u0627\u0632 \u06a9\u06c1\u06cc\u06ba \u0627\u0648\u0631 \u0631\u06a9\u06be\u06cc\u06ba\u06d4<\/strong><\/p>\n<p>\u0645\u0628\u0627\u0631\u06a9 \u06a9\u0648\u0688\u0646\u06af!<\/p>\n<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u0627\u0633 \u06a9\u0627 \u062a\u0635\u0648\u0631 \u06a9\u0631\u06cc\u06ba\u06d4 \u0622\u067e \u062f\u06cc\u0631 \u0633\u06d2 \u06a9\u0627\u0645 \u06a9\u0631 \u0631\u06c1\u06d2 \u06c1\u06cc\u06ba \u0627\u0648\u0631 \u0622\u067e \u06a9\u0627 \u06a9\u0648\u0688 \u0622\u062e\u0631 \u06a9\u0627\u0631 \u06a9\u0627\u0645 \u06a9\u0631 \u0631\u06c1\u0627 \u06c1\u06d2 \u0627\u0648\u0631 GitHub \u067e\u0631 \u062c\u0627\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u062a\u06cc\u0627\u0631 \u06c1\u06d2\u06d4 \u0686\u0644\u0627\u0626\u06cc\u06ba: git add . git commit -m &quot;Fix API integration&#8221; git push \u0686\u0646\u062f \u0645\u0646\u0679\u0648\u06ba \u06a9\u06d2 \u0628\u0639\u062f\u060c \u0622\u067e \u0646\u06d2 \u06a9\u0686\u06be \u0639\u062c\u06cc\u0628 \u0645\u062d\u0633\u0648\u0633 \u06a9\u06cc\u0627\u06d4 API \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u0627\u0686\u0627\u0646\u06a9 [&hellip;]<\/p>\n","protected":false},"author":7,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[1],"tags":[],"class_list":["post-28295","post","type-post","status-publish","format-standard","hentry","category-blog"],"_links":{"self":[{"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/posts\/28295","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/comments?post=28295"}],"version-history":[{"count":0,"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/posts\/28295\/revisions"}],"wp:attachment":[{"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/media?parent=28295"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/categories?post=28295"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/tags?post=28295"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}