امنیت API ؛ ۷ اشتباه مرگبار که باید از آنها دوری کنید (راهنمای عملی ۲۰۲۶)

امنیت API ؛ ۷ اشتباه مرگبار که باید از آنها دوری کنید (راهنمای عملی ۲۰۲۶)

آیا می‌دانستید بیش از ۹۰٪ حملات سایبری در سال ۲۰۲۶ از طریق APIهای ناامن انجام شده‌اند؟ APIها قلب تپنده برنامه‌های مدرن هستند، اما همین محبوبیت آنها را به هدف اول هکرها تبدیل کرده است. یک اشتباه ساده در امنیت API می‌تواند داده‌های میلیون‌ها کاربر را در معرض نفوذ قرار دهد. از افشای اطلاعات بانکی تا سرقت توکن‌های احراز هویت، هزینه نقض امنیت API می‌تواند تا چندین میلیون دلار برای کسب‌وکارها تمام شود. در این مقاله ازآکادمی فگابین، ۷ اشتباه مرگبار در امنیت API را معرفی می‌کنیم که تیم‌های توسعه هنوز هم مرتکب می‌شوند و راهکارهای عملی برای جلوگیری از هر کدام ارائه می‌دهیم. اگر شما هم API طراحی می‌کنید یا مسئول امنیت سیستم هستید، این مطلب را از دست ندهید.

فهرست مطالب پنهان

چرا امنیت API در ۲۰۲۶ بحرانی‌تر از همیشه است؟

افزایش چشمگیر تعداد APIها در معماری مدرن

در معماری میکروسرویس‌ها، هر برنامه از ده‌ها API داخلی و خارجی تشکیل شده است. طبق گزارش Salt Security 2026، هر برنامه به طور میانگین از ۲۸۰ API مختلف استفاده می‌کند. هر کدام از این APIها یک نقطه ورود بالقوه برای حملات سایبری هستند. زمانی که تیم‌های توسعه روی امنیت API تمرکز کافی ندارند، عملاً در را به روی هکرها باز می‌کنند.

تبدیل APIها به هدف اول حملات

مجله OWASP در سال ۲۰۲۶، APIها را به عنوان آسیب‌پذیرترین مؤلفه برنامه‌های مدرن معرفی کرده است. دلایل اصلی:

· دسترسی عمومی: بسیاری از APIها مستقیماً از اینترنت قابل دسترسی هستند
· مستندسازی عمومی: مستندات Swagger/OpenAPI اغلب اطلاعات حساسی لو می‌دهند
· پیچیدگی احراز هویت: پیاده‌سازی صحیح Auth در APIها سخت‌تر از وب‌سایت‌های سنتی است

نادیده گرفتن امنیت API یعنی پذیرش ریسک نفوذ، نه به عنوان احتمال، بلکه به عنوان یک قطعیت.

هزینه‌های گزاف نقض امنیت API

طبق گزارش IBM Cost of a Data Breach 2026:

· میانگین هزینه هر نفوذ از طریق API: ۴.۸ میلیون دلار
· میانگین زمان کشف نفوذ از API: ۲۸۷ روز
· نرخ افزایش حملات API نسبت به سال قبل: ۴۲٪

برای شرکت‌های کوچک و متوسط، یک نفوذ موفق از طریق API می‌تواند به معنای ورشکستگی کامل باشد.

APIهای داخلی هم در امان نیستند

اشتباه رایج این است که «API ما داخلی است و از بیرون قابل دسترسی نیست». اما حملات زنجیره تأمین (Supply Chain Attacks) و نفوذ از طریق کارمندان داخلی (Insider Threats) به شدت افزایش یافته است. هر API داخلی که امنیت API در آن رعایت نشده باشد، می‌تواند سکوی پرش هکر به بخش‌های حساس سیستم باشد.

۷ اشتباه مرگبار در امنیت API که باید از آنها دوری کنید

در این بخش، ۷ اشتباه رایج و مرگبار در امنیت API را به صورت عملی و با مثال کدنویسی بررسی می‌کنیم.

اشتباه اول – نبود احراز هویت مناسب (Broken Authentication)

مشکل: بسیاری از APIها از مکانیسم‌های ضعیف احراز هویت مثل API Key ثابت یا رمز عبور ساده استفاده می‌کنند.

مثال خطرناک:

// اشتباه مرگبار - API Key ثابت در کد
const API_KEY = "12345"; // همه درخواست‌ها با همین کلید

app.get('/api/user/data', (req, res) => {
if(req.headers['api-key'] !== '12345') return res.status(401);
// داده حساس را برمی‌گرداند
});

راهکار درست در امنیت API:

· استفاده از OAuth 2.0 یا OpenID Connect
· پیاده‌سازی JWT با انقضای کوتاه مدت (۱۵-۳۰ دقیقه)
· استفاده از Refresh Token چرخشی
· هرگز API Key را در کد سمت کلاینت ذخیره نکنید

اشتباه دوم – عدم اعتبارسنجی ورودی (Mass Assignment & Injection)

مشکل: پذیرفتن هر فیلدی که کاربر ارسال می‌کند بدون فیلتر کردن.

مثال خطرناک:

// اشتباه مرگبار - پذیرش همه فیلدها
app.post('/api/user/update', (req, res) => {
User.findByIdAndUpdate(req.user.id, req.body);
// مهاجم می‌تواند {isAdmin: true} ارسال کند
});

راهکار درست:

· لیست سفید فیلدهای مجاز را مشخص کنید
· از DTOها (Data Transfer Objects) استفاده کنید
· اعتبارسنجی نوع و طول داده‌ها قبل از پردازش
· هرگز از req.body به طور مستقیم استفاده نکنید

اشتباه سوم – نبود Rate Limiting و کنترل ترافیک

مشکل: نبود محدودیت در تعداد درخواست‌ها، API را در برابر حملات Brute Force و DDoS آسیب‌پذیر می‌کند.

آسیب‌پذیری‌ها:

· حدس زدن رمز عبور با درخواست‌های مکرر
· سرقت داده با اسکن IDهای متوالی
· پر شدن منابع سرور

راهکار درست در امنیت API:

· پیاده‌سازی Rate Limiting (مثلاً ۱۰۰ درخواست در دقیقه)
· استفاده از کتابخانه‌هایی مثل express-rate-limit در Node.js
· محدودیت بر اساس IP و API Key
· پیاده‌سازی Circuit Breaker برای جلوگیری از حملات گسترده

// مثال صحیح
const rateLimit = require('express-rate-limit');
const limiter = rateLimit({
windowMs: 15 * 60 * 1000, // 15 دقیقه
max: 100 // حداکثر ۱۰۰ درخواست
});
app.use('/api/login', limiter);

اشتباه چهارم – افشای اطلاعات حساس در پاسخ‌ها

مشکل: برگرداندن اطلاعات اضافی و حساس در خطاها و پاسخ‌های عادی.

مثال خطرناک:

// پاسخ خطای اشتباه
{
"error": "User not found with email: admin@site.com",
"stack": "at Database.query (db.js:45)",
"query": "SELECT * FROM users WHERE email='admin@site.com'"
}

اطلاعات افشا شده:

· وجود یا عدم وجود کاربر
· ساختار دیتابیس
· جزئیات پیاده‌سازی

راهکار درست:

· پیام‌های خطای عمومی (مثل «اطلاعات ورود نادرست است»)
· حذف stack trace در محیط تولید
· استفاده از DTO برای فیلتر کردن فیلدهای خروجی
· لاگ کردن خطاها در سرور بدون نمایش به کاربر

اشتباه پنجم – پیکربندی نادرست CORS (Cross-Origin Resource Sharing)

مشکل: پذیرش درخواست‌ها از هر دامنه‌ای بدون محدودیت.

مثال خطرناک:

// اشتباه مرگبار
app.use(cors()); // بدون هیچ تنظیماتی - همه دامنه‌ها مجازند

راهکار درست در امنیت API:

// پیکربندی صحیح
const allowedOrigins = ['https://myapp.com', 'https://admin.myapp.com'];
app.use(cors({
origin: function(origin, callback) {
if(!origin || allowedOrigins.includes(origin)) callback(null, true);
else callback(new Error('Not allowed by CORS'));
},
credentials: true,
methods: ['GET', 'POST', 'PUT', 'DELETE'],
allowedHeaders: ['Content-Type', 'Authorization']
}));

اشتباه ششم – نبود رمزگذاری در انتقال و ذخیره‌سازی (TLS/Encryption)

مشکل: انتقال داده به صورت متن ساده یا ذخیره رمزگذاری‌نشده.

آسیب‌پذیری‌ها:

· حملات Man-in-the-Middle (MITM)
· دسترسی فیزیکی به دیتابیس
· نشت لاگ‌های سرور

راهکار درست:

· استفاده اجباری از TLS 1.3 برای همه ترافیک API
· رمزگذاری داده‌های حساس در دیتابیس (AES-256)
· هرگز رمز عبور را حتی هش‌شده در لاگ ذخیره نکنید
· استفاده از محیط‌های امن مثل Vault برای مدیریت کلیدها


اشتباه هفتم – نبود لاگ و مانیتورینگ امنیتی

مشکل: نبود سیستم برای تشخیص و واکنش به حملات در لحظه.

عواقب:

· نفوذ بدون اطلاع تیم برای ماه‌ها ادامه دارد
· عدم توانایی در شناسایی الگوهای حمله
· نقض قوانین GDPR و استانداردهای امنیتی

راهکار درست در امنیت API:

· لاگ کردن همه درخواست‌های شکست‌خورده احراز هویت
· مانیتورینگ ناهنجاری‌ها (درخواست‌های غیرعادی زیاد)
· هشدار بلادرنگ برای الگوهای حمله
· ابزارهای پیشنهادی: Datadog، Sentry، AWS CloudTrail

// مثال لاگ صحیح (بدون اطلاعات حساس)
logger.warn('Failed login attempt', {
  ip: req.ip,
  endpoint: '/api/login',
  timestamp: new Date().toISOString(),
  userAgent: req.headers['user-agent']
  // رمز عبور هرگز لاگ نمی‌شود
});

چگونه یک اشتباه در امنیت API منجر به نفوذ ۵ میلیون کاربر شد

برای درک عمق فاجعه‌بار نادیده گرفتن امنیت API، یک مطالعه موردی واقعی (اما با جزئیات فنی فرضی) را بررسی می‌کنیم.

سناریوی واقعی: نفوذ به API یک پلتفرم فینتک

درباره شرکت: یک استارتاپ فینتک با ۲ میلیون کاربر فعال ماهانه، ارائه‌دهنده کیف پول دیجیتال و تراکنش‌های آنی.

اشتباه مرگبار انجام‌شده: ترکیبی از ۳ اشتباه که در بخش قبل گفتیم:

  1. نبود Rate Limiting – امکان ارسال درخواست‌های نامحدود
  2. Broken Authentication – استفاده از JWT بدون انقضا و با الگوریتم ضعیف (HS256 با رمز secret)
  3. افشای اطلاعات در پاسخ – برگرداندن شماره موبایل و هش رمز عبور در خطاهای سیستمی

مراحل نفوذ (چگونه هکر حمله کرد)

مرحله ۱ – شناسایی (Reconnaissance):
هکر مستندات Swagger عمومی API را کشف کرد (/api/docs). در آنجا یک endpoint به نام /api/user/by-phone/{phone} دید که قرار بود فقط برای پشتیبانی داخلی باشد، اما بدون احراز هویت رها شده بود.

مرحله ۲ – استخراج داده با Brute Force:
به دلیل نبود Rate Limiting در امنیت API، هکر یک اسکریپت نوشت که تمام شماره‌های موبایل ممکن (۰۹۱۲۱۱۱۱۰۰۰ تا ۰۹۱۲۱۱۱۹۹۹۹) را یکی یکی به endpoint می‌فرستاد. پاسخ شامل اطلاعات کاربر (نام، موبایل، و هش ضعیف رمزعبور) بود.

مرحله ۳ – شکستن هش رمز عبور:
هش رمز عبور با الگوریتم ضعیف MD5 ذخیره شده بود (اشتباه دیگر). هکر در کمتر از ۲۴ ساعت، ۴۰٪ رمزهای عبور را با استفاده از جداول Rainbow کرک کرد.

مرحله ۴ – سوءاستفاده و خروج:
هکر با رمزهای عبور واقعی وارد اکانت‌های کاربران شد و تراکنش‌های جعلی انجام داد. مجموع ضرر: ۳.۲ میلیون دلار + شکایت دسته‌جمعی کاربران + ورشکستگی شرکت پس از ۴ ماه.

درس‌های کلیدی از این مطالعه موردی

اشتباه انجام‌شده راهکاری که باید داشت
مستندات عمومی بدون احراز هویت مستندات API را با رمز یا IP محدود محافظت کنید
نبود Rate Limiting حداقل ۱۰۰ درخواست در دقیقه از هر IP محدود کنید
JWT با رمز ضعیف secret از الگوریتم RS256 با کلید خصوصی قوی استفاده کنید
هش MD5 برای رمز عبور از bcrypt یا Argon2 با salt قوی استفاده کنید
endpoint داخلی در دسترس عموم از API Gateway برای جداسازی داخلی/خارجی استفاده کنید

این سناریو نشان می‌دهد که امنیت API یک شوخی نیست. یک endpoint به ظاهر بی‌ضرر می‌تواند کل سیستم را نابود کند.

نکات تکمیلی، ابزارها و چشمانداز آینده

ابزارهای ضروری برای تست امنیت API

برای اطمینان از امنیت API خود، این ابزارها را حتماً بشناسید:

ابزار کاربرد هزینه
Postmanتست دستی API و اعتبارسنجی رایگان
Burp Suite اسکن آسیب‌پذیری‌های API نسخه رایگان دارد
OWASP ZAP اسکن خودکار امنیتی رایگان (open source)
Insomnia تست Rate Limiting و Authentication رایگان
Snyk اسکن وابستگی‌های امنیتی API پلن رایگان برای تیم‌های کوچک

چک‌لیست سریع امنیت API (قبل از انتشار)

· آیا از OAuth 2.0 یا JWT با انقضای کوتاه استفاده شده است؟
· آیا Rate Limiting روی همه endpointهای حساس پیاده شده است؟
· آیا ورودی‌ها اعتبارسنجی و فیلتر می‌شوند؟
· آیا CORS فقط برای دامنه‌های مشخص شده فعال است؟
· آیا از TLS 1.3 استفاده می‌شود؟
· آیا لاگ‌ها حاوی اطلاعات حساس (رمز عبور، توکن) نیستند؟
· آیا مستندات API عمومی نیست یا با رمز محافظت می‌شود؟
· آیا تست نفوذ (Penetration Test) انجام شده است؟

روندهای آینده در امنیت API (۲۰۲۷-۲۰۲۸)

روند اول – API Security Posture Management (ASPM):
ابزارهایی که به صورت خودکار همه APIهای سازمان (حتی APIهای فراموش‌شده) را کشف و آسیب‌پذیری‌هایشان را آنالیز می‌کنند.

روند دوم – Zero Trust برای APIها:
مدل امنیتی که فرض می‌کند هیچ درخواستی (حتی از داخل شبکه) قابل اعتماد نیست و هر درخواست باید احراز هویت و مجوز جداگانه داشته باشد.

روند سوم – AI در شناسایی حملات API:
هوش مصنوعی می‌تواند الگوهای غیرعادی (مثل افزایش ناگهانی درخواست‌ها از یک IP) را سریع‌تر از انسان تشخیص دهد و به صورت خودکار مسدود کند.

نکته نهایی: امنیت API یک بار انجام دادن و تمام شدن نیست. یک فرآیند مداوم از تست، مانیتورینگ و به‌روزرسانی است.

نتیجه‌گیری و خلاصه

ما در این مقاله از وبلاگ فگابین، امنیت API را از جنبه‌های مختلف بررسی کردیم: ضرورت آن در سال ۲۰۲۶، ۷ اشتباه مرگبار رایج، یک مطالعه موردی واقعی از نفوذ به یک پلتفرم فینتک، و ابزارهای کاربردی برای تست امنیت.

خلاصه ۷ اشتباه مرگبار:

ردیف اشتباه خطر اصلی
۱ نبود احراز هویت مناسب دسترسی غیرمجاز به داده‌ها
۲ عدم اعتبارسنجی ورودی تزریق کد و Mass Assignment
۳ نبود Rate Limiting Brute Force و DDoS
۴ افشای اطلاعات در پاسخ‌ها لو رفتن ساختار سیستم
۵ پیکربندی نادرست CORS حملات از دامنه‌های مخرب
۶ نبود رمزگذاری شنود ترافیک و دسترسی به داده
۷ نبود لاگ و مانیتورینگ حملات ناشناخته ماندگار

اصل طلایی امنیت API: هیچ APIای ذاتاً امن نیست. امنیت باید از همان خط اول کدنویسی طراحی شود، نه به عنوان یک لایه اضافه بعد از اتمام پروژه. هر endpoint جدید، یک نقطه ورود جدید برای هکرهاست.

اگر شما یا تیمتان در حال طراحی API هستید، همین امروز یکی از ۷ اشتباه بالا را انتخاب کنید و بررسی کنید که آیا در کد شما هم وجود دارد یا خیر. اغلب تیم‌ها حداقل ۲ تا ۳ مورد از این اشتباهات را مرتکب می‌شوند.

دعوت به اقدام نهایی

اگر به دنبال پیاده‌سازی امنیت API در پروژه‌های خود هستید یا نیاز به تیمی دارید که APIهای امن و مقیاس‌پذیر برایتان طراحی کند، تیم متخصص فگابین با ارائه مجموعه کاملی از خدمات طراحی و توسعه وب‌سایت، خدمات طراحی و توسعه اپلیکیشن و خدمات سئو در کنار شماست. ما راه‌حل را از مشاوره تا اجرا و پشتیبانی، ساده و شفاف می‌کنیم. دعوتتان می‌کنیم:

نمونه‌کارهای ما را در نمونه‌کارهای فگابین ببینید.

برای آشنایی با مدل همکاری و تعرفه خدمات برنامه‌نویسی به این صفحه سر بزنید.-

آماده‌اید که پروژه را شروع کنیم؟ همین حالا برای یک جلسه مشاوره تخصصی رایگان با ما تماس بگیرید.

کار ما را در شبکه‌های اجتماعی دنبال کنید تا از آخرین روندهای فناوری باخبر بمانید:

– لینکداین فگابین

–توییتر فگابین

– اینستاگرام فراهین

همچنین برای مطالعه مقالات آموزشی بیشتر، از آکادمی فگابین دیدن فرمایید.

سوالات متداول

۱. تفاوت بین Authentication و Authorization در امنیت API چیست؟

Authentication (احراز هویت) به معنی اثبات هویت کاربر است: «تو واقعاً کسی هستی که می‌گویی؟». معمولاً با توکن JWT، API Key یا رمز عبور انجام می‌شود.

Authorization (مجوزدهی) به معنی تعیین دسترسی کاربر است: «آیا تو اجازه انجام این کار را داری؟». معمولاً با نقش‌ها (Role-Based Access Control – RBAC) یا قوانین دسترسی انجام می‌شود.

مثال: ورود به سیستم (Authentication) و سپس بررسی اینکه آیا کاربر معمولی اجازه حذف کاربر دیگر را دارد (Authorization). هر دو برای امنیت API ضروری هستند.

۲. آیا استفاده از API Gateway امنیت API را تضمین می‌کند؟

خیر، API Gateway یک لایه امنیتی اضافه است اما جایگزین امنیت درون API نمی‌شود. API Gateway می‌تواند کارهایی مثل محدودیت نرخ درخواست (Rate Limiting)، بررسی توکن اولیه و لاگ متمرکز را انجام دهد. اما اگر خود API دارای آسیب‌پذیری‌هایی مثل تزریق (Injection) یا Mass Assignment باشد، Gateway نمی‌تواند جلوی آن را بگیرد. امنیت API باید در لایه برنامه (Application Layer) نیز پیاده شود.

۳. بهترین روش برای ذخیره‌سازی API Keys چیست؟

هرگز API Key را در کد سمت کلاینت (JavaScript در مرورگر) یا فایل‌های متنی در مخزن کد ذخیره نکنید. روش‌های صحیح:

· متغیرهای محیطی (Environment Variables) برای برنامه‌های سرور
· Vaultهای امن مثل HashiCorp Vault برای مدیریت کلیدها
· AWS Secrets Manager یا Azure Key Vault برای محیط‌های ابری
· برای برنامه‌های موبایل، از Code Obfuscation و ذخیره رمزگذاری‌شده استفاده کنید

۴. هر چند وقت یکبار باید تست امنیت API انجام داد؟

توصیه استاندارد در امنیت API:

· تست خودکار در هر Pull Request (قبل از merge)
· تست جامع امنیتی حداقل هر ۳ ماه یکبار
· تست نفوذ (Penetration Test) توسط تیم خارجی هر ۶ ماه یکبار
· بعد از هر تغییر بزرگ در معماری یا اضافه شدن endpoint جدید

۵. آیا OWASP Top 10 برای APIها با وب‌سایت‌ها فرق دارد؟

بله. OWASP یک لیست مجزا به نام OWASP API Security Top 10 منتشر کرده است. آسیب‌پذیری‌های خاص API شامل:

· Broken Object Level Authorization (BOLA) – دسترسی به شیء با ID نادرست
· Broken User Authentication – ضعف در احراز هویت API
· Excessive Data Exposure – برگرداندن داده اضافی
· Lack of Resources & Rate Limiting – نبود محدودیت درخواست

مطالعه این لیست برای هر توسعه‌دهنده API الزامی است.

۶. آیا شرکت فگابین در پروژه‌های خود امنیت API را رعایت می‌کند؟

بله. فگابین در تمام پروژه‌های سفارشی سازی وب‌سایت و اپلیکیشن که شامل API باشند، استانداردهای امنیت API مطابق با OWASP و الزامات GDPR را پیاده‌سازی می‌کند. فرآیند ما شامل: احراز هویت مبتنی بر JWT با انقضای کوتاه، Rate Limiting روی تمام endpoints، رمزگذاری TLS 1.3، تست نفوذ منظم و لاگ متمرکز امنیتی است. برای نمونه‌کارهای واقعی می‌توانید به نمونه‌کارهای فگابین مراجعه کنید.

7. ساده‌ترین روش برای شروع امنیت API چیست؟

از سه اقدام پایه شروع کنید: HTTPS اجباری (همه ترافیک رمزگذاری شود)، API Key (هر کاربر یک کلید منحصربه‌فرد داشته باشد) و Rate Limiting (محدودیت تعداد درخواست‌ها). این سه کار ساده، بیش از ۶۰٪ حملات رایج را دفع می‌کنند. بعد از آن، سراغ OAuth2 و JWT بروید. مهم‌تر از همه: هیچ APIای را بدون حداقل یکی از این لایه‌ها به تولید (Production) نفرستید.

8. آیا استفاده از API Gateway برای امنیت کافی است؟

خیر، API Gateway یک لایه امنیتی مفید است اما کامل نیست. Gateway می‌تواند Rate Limiting، بررسی اولیه توکن و لاگ متمرکز انجام دهد، اما نمی‌تواند جلوی Mass Assignment، Injection یا Broken Object Level Authorization را بگیرد. این آسیب‌پذیری‌ها باید در خود کد API رفع شوند. به Gateway به عنوان «قفل در ورودی ساختمان» نگاه کنید، نه «نگهبان داخل هر اتاق».

9. هر چند وقت یکبار باید API Key را عوض کرد؟

بستگی به سطح حساسیت API دارد. برای APIهای عمومی (مثل آب و هوا)، تعویض سالانه کافی است. برای APIهای نیمه‌حساس (مثل خرید آنلاین)، هر ۳ تا ۶ ماه یکبار. برای APIهای بسیار حساس (مالی، پزشکی)، هر ۳۰ تا ۶۰ روز یکبار. همچنین در صورت خروج کارمند کلیدی یا مشکوک شدن به نفوذ، بلافاصله همه کلیدها را عوض کنید. روش استاندارد: API Keyهای دائمی نداشته باشید، از توکن‌های کوتاه‌مدت استفاده کنید.

10. آیا لاگ کردن درخواست‌های API خطرناک نیست؟

لاگ کردن درست امنیت را افزایش می‌دهد، لاگ کردن نادرست خودش یک آسیب‌پذیری است. هرگز این موارد را لاگ نکنید: رمز عبور، توکن‌های JWT، شماره کارت بانکی، اطلاعات پزشکی. این موارد را حتماً لاگ کنید: IP کاربر، endpoint درخواست شده، زمان درخواست، وضعیت پاسخ (موفق/ناموفق). لاگ‌ها را در محیطی امن و جدا از دیتابیس اصلی نگهداری کنید و برای دسترسی به آنها مجوز جداگانه تعریف کنید.

مقالات مرتبط
پاسخ دهید

آدرس ایمیل شما منتشر نخواهد شد.قسمتهای مورد نیاز علامت گذاری شده اند *