بهترین روشهای امنیتی JWT

  • 2021-12-15

ما در OAUTH و OpenID Connect World از Tokens JSON (JWTS) بسیار استفاده می کنیم. ما آنقدر به آنها عادت کرده ایم که اغلب به نحوه استفاده آنها توجه زیادی نمی کنیم. نظر کلی این است که آنها برای استفاده به عنوان نشانه های شناسه یا دسترسی به نشانه ها و ایمن بودن آنها مناسب هستند - زیرا معمولاً نشانه ها امضا می شوند یا حتی رمزگذاری می شوند. شما باید به یاد داشته باشید که JWT یک پروتکل نیست بلکه صرفاً یک قالب پیام است. RFC فقط به شما نشان می دهد که چگونه می توانید یک پیام معین را ساختار دهید و چگونه می توانید لایه های امنیتی را اضافه کنید ، که از یکپارچگی و به صورت اختیاری محتوای پیام محافظت می کند. اما JWT ها فقط به این دلیل که JWT هستند ، ایمن نیستند ، این راهی است که ما از آنها استفاده می کنیم که تعیین می کند ایمن هستند یا نه.

در این مقاله ما می خواهیم بهترین روش های استفاده از JWT را به شما نشان دهیم تا بتوانید امنیت بالایی را در برنامه های خود حفظ کنید. این شیوه ها همان چیزی است که ما در Curity توصیه می کنیم و مبتنی بر استانداردهای جامعه است که در RFC ها و همچنین تجربه خودمان از کار با JWTS نوشته شده است.

نشانه JWT چیست؟

اگر تازه وارد JWTS هستید ، در اینجا یک بسته بندی سریع وجود دارد. یک توکن وب JSON (JWT ، تلفظ "JOT") روشی جمع و جور و ایمن برای انتقال پیام JSON بین دو طرف است. این یک استاندارد است که در RFC 7519 تعریف شده است. این نشانه یک رشته طولانی است که به قسمت های مختلف جدا شده با نقاط تقسیم می شود و هر قسمت Base64 رمزگذاری شده است. چه قسمت هایی از نشانه به نوع JWT بستگی دارد: خواه JWS (یک نشانه امضا شده) باشد یا JWE (یک نشانه رمزگذاری شده). در صورت امضای توکن ، سه بخش خواهد داشت: هدر ، بار و امضای. اگر نشانه رمزگذاری شده باشد ، از پنج قسمت تشکیل شده است: هدر ، کلید رمزگذاری شده ، بردار اولیه سازی ، رمزگذاری متن (بار) و برچسب احراز هویت. احتمالاً رایج ترین مورد استفاده برای JWT ها استفاده از آنها به عنوان نشانه های دسترسی و نشانه های ID در جریان OAUTH و OpenID Connect است ، اما آنها می توانند اهداف مختلفی را نیز ارائه دهند.

1. JWTs به عنوان نشانه های دسترسی استفاده می شود

JWT ها نشانه های برابری هستند. این بدان معنی است که آنها حاوی داده هستند. حتی اگر نتوانید آن داده ها را با چشمان خود بخوانید ، هنوز هم وجود دارد و به راحتی در دسترس است. این که آیا این یک مشکل است یا خیر ، به مخاطبان مورد نظر این نشانه بستگی دارد. یک نشانه شناسه برای توسعه دهندگان مشتری در نظر گرفته شده است. شما انتظار دارید که این رمزگشایی شود و داده های آن توسط مشتری استفاده شود. از طرف دیگر یک نشانه دسترسی برای توسعه دهندگان API در نظر گرفته شده است. API باید نشانه را رمزگشایی و تأیید کند. اما اگر JWT را برای مشتریان خود به عنوان نشانه های دسترسی صادر کنید ، باید به یاد داشته باشید که توسعه دهندگان مشتری قادر به دسترسی به داده های داخل آن نشانه خواهند بود. و ما را باور کنید - در صورت امکان ، آنها خواهند بود. این باید باعث شود شما چند مورد را در نظر بگیرید:

  • برخی از توسعه دهندگان می توانند استفاده از داده های JWT را در برنامه های خود شروع کنند. این به خودی خود مشکلی نیست ، اما می تواند دقایقی را که تصمیم دارید تغییراتی در ساختار داده ها در JWT خود ایجاد کنید ، منفجر شود. ناگهان بسیاری از برنامه های یکپارچه می توانند کار خود را متوقف کنند زیرا آنها برای ساختار جدید آماده نخواهند شد (به عنوان مثال برخی از زمینه ها از دست رفته ، یا به حداکثر طول قسمت تغییر می کنند).
  • همانطور که همه می توانند آنچه را که در داخل نشانه است بخوانند ، باید حریم خصوصی در نظر گرفته شود. اگر می خواهید داده های حساس را در مورد کاربر در نشانه یا حتی اطلاعات شخصی شناسایی کنید ، به یاد داشته باشید که هر کسی می تواند نشانه را رمزگشایی کرده و به داده ها دسترسی پیدا کند. اگر چنین اطلاعاتی از نشانه خارج نشود ، باید به شدت در نظر بگیرید که به رویکرد Token Phantom یا رویکرد Token Split Token تغییر دهید ، جایی که یک نشانه مات در خارج از زیرساخت های شما استفاده می شود و JWT ها فقط به لطف ادغام با یک API های شما در دسترس هستند. دروازه API.
  • داده های خصوصی کاربران تنها اطلاعاتی نیستند که می توانند در JWT فاش شوند. شما باید اطمینان حاصل کنید که هیچ داده ای ارزشمند در مورد API خود را در نشانه قرار ندهید. هر چیزی که به مهاجمان کمک کند تا API شما را نقض کنند.

همچنین خوب است که آن را در نظر داشته باشید ، که نشانه های دسترسی اغلب به عنوان نشانه های تحمل استفاده می شوند. این بدان معناست که شما نشانه را از هر کسی که آن را به شما ارائه داده است قبول می کنید - تقریباً شبیه پرداخت پول با پول در یک مغازه است. اگر یک لایحه 10 دلاری در خیابان پیدا کنید و برای یک قهوه با آن بپردازید ، تا زمانی که یک اسکناس واقعی باشد ، پذیرفته می شود. همین مورد در مورد نشانه های دسترسی به حامل نیز صدق می کند. اگر این امر می تواند برای برنامه شما مشکلاتی ایجاد کند ، می توانید با اضافه کردن یک ادعای CNF - یک ادعای تأیید ، نشانه تحمل را به اثبات تملک (نشانه پاپ) تغییر دهید. این ادعا می تواند به عنوان مثالحاوی اثر انگشت گواهی مشتری است که می تواند توسط سرور منبع تأیید شود.

2. از چه الگوریتمی استفاده کنید

این که آیا این توکن امضا شده است (JWS) یا رمزگذاری شده (JWE) حاوی ادعای ALG در هدر است ، که نشان می دهد کدام الگوریتم برای امضای یا رمزگذاری استفاده شده است. هنگام تأیید / رمزگشایی نشانه ، همیشه باید ارزش این ادعا را با یک لیست سفید الگوریتم هایی که سیستم شما می پذیرد بررسی کنید. این یک بردار حمله را کاهش می دهد که در آن شخصی با نشانه دستکاری می کند و باعث می شود از یک الگوریتم متفاوت و احتمالاً امن تر برای تأیید امضا یا رمزگشایی نشانه استفاده کنید. الگوریتم های لیست سفید نسبت به لیست سیاه ترجیح داده می شوند ، زیرا از هرگونه مشکل در مورد حساسیت جلوگیری می کند. حملات به برخی از API ها رخ داده است که از این واقعیت استفاده می کند که ALG هیچ یک به عنوان هیچ یک از آنها تعبیر نشده است اما توسط لیست سیاه دور نشده است.

مورد ویژه هیچ ارزش در ادعای ALG به مشتریان می گوید که JWS در واقع امضا نشده است. این گزینه توصیه نمی شود ، و اگر می خواهید JWT های بدون امضا را فعال کنید ، باید کاملاً مطمئن باشید که چه کاری انجام می دهید. این معمولاً بدان معنی است که شما اطمینان جدی در مورد هویت صادرکننده توکن و مشتری که از این نشانه استفاده می کند ، دارید و کاملاً مطمئن هستید که هیچ طرف نمی تواند با نشانه دستکاری کند.

رجیستری برای امضاهای وب JSON و الگوریتم های رمزگذاری ، تمام الگوریتم های موجود را که می توانند برای امضای یا رمزگذاری JWT ها استفاده شوند ، لیست می کند. همچنین به شما می گوید با توجه به وضعیت فعلی دانش در مورد امنیت رمزنگاری ، کدام الگوریتم ها توصیه می شود توسط مشتری و سرورها اجرا شود.

هنگامی که امضا در نظر گرفته می شود ، الگوریتم های مبتنی بر منحنی بیضوی ایمن تر در نظر گرفته می شوند. گزینه با بهترین امنیت و عملکرد EDDSA است ، اگرچه ES256 (الگوریتم امضای دیجیتال منحنی بیضوی (ECDSA) با استفاده از P-256 و SHA-256) نیز انتخاب خوبی است. بیشترین گزینه استفاده شده ، که توسط اکثر پشته های فناوری پشتیبانی می شود ، Rs256 است (RSASSA-PKCS1-V1_5 با استفاده از SHA-256). موارد قبلی خیلی سریعتر از دومی هستند که یکی از دلایل اصلی توصیه های قوی تر است. مورد دوم بسیار طولانی تر بوده و پشتیبانی بهتری در زبان ها و پیاده سازی های مختلف ارائه می دهد. با این وجود ، اگر راه اندازی شما این کار را امکان پذیر کند ، و شما کاملاً مطمئن هستید که مشتریان شما قادر به استفاده از آن هستند ، باید به EDDSA یا ES256 بروید.

اگر واقعاً نیاز به استفاده از کلیدهای متقارن دارید ، باید HS256 (HMAC با استفاده از SHA-256) انتخاب شما باشد-اگرچه استفاده از کلیدهای متقارن توصیه نمی شود ، نگاهی بیندازید که چه موقع از امضای متقارن برای یادگیری دلیل استفاده کنید.

3. چه موقع باید نشانه را تأیید کنیم

قانون شست این است - شما همیشه باید JWT ورودی را تأیید کنید. شما باید این کار را انجام دهید ، حتی اگر در حال کار بر روی یک شبکه داخلی هستید - جایی که سرور مجوز ، مشتری و سرور منبع از طریق اینترنت به هم وصل نمی شوند. برای اینکه بخشی از طرح امنیتی خود باشید ، نباید به تنظیمات محیط خود اعتماد کنید. اگر خدمات خود را به یک حوزه عمومی منتقل کنید ، مدل تهدید تغییر خواهد کرد ، و باید به یاد داشته باشید که اقدامات امنیتی خود را به روز کنید - تجربه نشان می دهد که این اغلب غافل می شود. علاوه بر این ، اجرای اعتبار سنجی توکن از ابتدا شما را از موقعیت هایی که شخصی در شبکه شما وارد می شود ، محافظت می کند ، یا شما یک بازیگر مخرب در سازمان خود خواهید داشت.

یک مورد که می توانید از بررسی امضای نشانه استفاده کنید ، زمانی است که برای اولین بار آن را در پاسخ از نقطه پایانی توکن سرور مجوز با استفاده از TLS دریافت می کنید. در صورت استفاده از جریان ضمنی ، قطعاً باید یک نشانه را تأیید کنید و نشانه با استفاده از URI تغییر مسیر به مشتری ارسال می شود ، زیرا در این صورت خطر بیشتری برای کسی وجود دارد که قبل از اینکه بتوانید آن را بازیابی کنید.

4- همیشه صادرکننده را بررسی کنید

ادعای دیگر مبنی بر اینکه همیشه باید در برابر وایتلیست بررسی کنید ، ادعای ISS است. هنگام استفاده از JWT باید مطمئن باشید که توسط شخصی که انتظار دارید آن را صادر کنید صادر شده است. این امر به ویژه در صورتی که به یک تمرین خوب دیگر پایبند باشید و کلیدهای مورد نیاز برای اعتبارسنجی / رمزگشایی نشانه ها را بارگیری کنید ، بسیار مهم است. اگر کسی باید JWT جعلی را برای شما ارسال کند ، صادرکننده خود را وارد کنید و سپس کلیدهایی را از آن صادرکننده بارگیری کنید ، سپس درخواست شما JWT ها را تأیید می کند و آنها را به عنوان واقعی می پذیرد.

این عمل خوب همچنین می تواند به عبارت دیگر توضیح داده شود: اگر نشانه حاوی ادعای ISS باشد ، همیشه باید تأیید کنید که کلیدهای رمزنگاری شده برای امضای یا رمزگذاری این نشانه در واقع متعلق به صادرکننده است. نحوه تأیید این امر برای برنامه های مختلف متفاوت خواهد بود. به عنوان مثال. اگر از OpenID Connect استفاده می کنید ، صادرکننده باید با استفاده از طرح HTTPS URL باشد. این امر بسیار ساده تر از تأیید مالکیت کلیدها یا گواهینامه ها است. بنابراین ، خوب است که همیشه از URL هایی مانند ارزش صادرکننده استفاده کنید. اگر اینگونه نباشد ، باید حتماً با نحوه بررسی این مالکیت مطلع شوید.

همچنین ، به یاد داشته باشید که ارزش ادعای ISS باید دقیقاً با ارزش مورد نظر شما مطابقت داشته باشد. اگر انتظار دارید که صادرکننده https://example. com باشد ، این همان https://example. com/secure نیست!

5. همیشه مخاطب را بررسی کنید

سرور منبع همیشه باید ادعای AUD را در نشانه بررسی کرده و با آن با یک لیست سفید مقابله کند. سرور باید انتظار داشته باشد که این نشانه برای مخاطب صادر شده باشد ، که سرور بخشی از آن است. این باید هرگونه درخواست حاوی نشانه های در نظر گرفته شده برای مخاطبان مختلف را رد کند. این به کاهش بردارهای حمله کمک می کند که در آن یک سرور منبع یک نشانه دسترسی واقعی در نظر گرفته شده برای آن به دست می آورد ، و سپس از آن برای دستیابی به منابع در یک سرور منبع متفاوت استفاده می کند ، که به طور معمول در دسترس سرور اصلی نیست.

یک نشانه شناسه باید در ادعای AUD دارای شناسه مشتری باشد (اگرچه می تواند مخاطبان دیگری نیز داشته باشد). شما انتظار دارید که این نشان توسط مشتری رمزگشایی شود تا بتواند از داده های موجود در آن استفاده کند. این نشانه نباید به شخص دیگری منتقل شود.

برای دسترسی به نشانه های دسترسی ، استفاده از URL API که برای آنها در نظر گرفته شده است ، یک عمل خوب است.

6. اطمینان حاصل کنید که از توکن ها به عنوان در نظر گرفته شده استفاده می شود

JWT ها می توانند به عنوان Access Token یا ID Token یا گاهی اوقات برای مقاصد دیگر استفاده شوند، بنابراین تمایز انواع مختلف توکن ها مهم است. هنگام تأیید اعتبار JWT ها، همیشه مطمئن شوید که آنها همانطور که در نظر گرفته شده استفاده می شوند. به عنوان مثال. که شما یک ID Token JWT را به عنوان یک نشانه دسترسی نمی پذیرید. این را می توان به روش های مختلفی به دست آورد و به پیاده سازی هایی که استفاده می کنید بستگی دارد. در اینجا چند نمونه آورده شده است:

  • می توانید محدوده توکن را بررسی کنید. شناسه توکن‌ها محدوده‌ای ندارند، بنابراین بررسی اینکه آیا یک توکن اکسس دارای محدوده مشخصی است یا خیر، به شما کمک می‌کند تا آنها را متمایز کنید.
  • همانطور که قبلا ذکر شد، توکن ها باید مقادیر متفاوتی از ادعای آئودی داشته باشند. اگر اینطور است، می‌توانید از مقدار آن ادعا برای بررسی نوع توکن استفاده کنید.
  • Curity Identity Server یک ادعای هدف را با مقادیر access_token یا id_token روی نشانه تنظیم می‌کند.
  • برخی از سرورهای مجوز ممکن است ادعای نوع هنوز استاندارد نشده را در سرصفحه نشانه روی +JWT برای توکن‌های دسترسی تنظیم کنند. اگر سرور شما از آن پشتیبانی می کند، می توان از آن برای متمایز کردن توکن ها استفاده کرد.
7. برخورد با انقضا، زمان صادر شده و کج بودن ساعت

JWT ها توکن های مستقل و دارای ارزش جانبی هستند و پس از صدور و تحویل به گیرنده، لغو آنها بسیار سخت است. به همین دلیل، باید تا حد امکان از زمان انقضا کوتاه‌تری برای توکن‌های خود استفاده کنید - حداکثر دقیقه یا ساعت. باید از دادن زمان انقضای توکن ها در روز یا ماه خودداری کنید.

به یاد داشته باشید که ادعای انقضا، حاوی زمان انقضا، تنها ادعای مبتنی بر زمان نیست که می تواند برای تأیید استفاده شود. ادعای nbf حاوی یک زمان "نه قبل" است. اگر زمان فعلی قبل از زمان ادعای nbf باشد، رمز باید رد شود. یکی دیگر از ادعاهای مبتنی بر زمان iat است - صادر شده در. می‌توانید از این ادعا برای رد کردن نشانه‌هایی استفاده کنید که به نظر شما برای استفاده در سرور منبع خود خیلی قدیمی هستند.

هنگام کار با ادعاهای مبتنی بر زمان، به یاد داشته باشید که زمان سرور می تواند بین ماشین های مختلف کمی متفاوت باشد. هنگام بررسی مقادیر مبتنی بر زمان، باید اجازه دهید کج بودن ساعت مجاز باشد. این مقدار باید چند ثانیه باشد، و ما استفاده از بیش از 30 ثانیه را برای این منظور توصیه نمی‌کنیم، زیرا این نشان‌دهنده مشکلات سرور است، نه یک انحراف ساعت معمولی.

8. نحوه کار با امضا

در صورت ایجاد JWT امضا شده - JWS - باید به یاد داشته باشید که از این امضا برای امضای نه تنها بار توکن بلکه در هدر استفاده می شود. هرگونه تغییر در هدر یا بار بار ، امضای متفاوتی ایجاد می کند. این حتی نیازی به تغییر در مقادیر مطالبات نیست - اضافه کردن یا از بین بردن فضاها یا استراحت خط نیز باعث ایجاد امضای توکن متفاوت می شود.

شایان ذکر است که برای کاهش وضعیتی که دو نشانه دقیقاً با همان امضا ایجاد شود (بنابراین دو توکن در همان ثانیه ایجاد شده است ، برای همان مشتری و کاربر ، با همان دامنه و غیره) بسیاری از سرورهای مجوزیک شناسه تصادفی از نشانه را در ادعای JTI اضافه کنید. با تشکر از این ، می توانید مطمئن باشید که دو نشانه مختلف هرگز امضای یکسانی نخواهند داشت.

امضاها برای تأیید صحیح به کلیدها یا گواهینامه ها نیاز دارند. این کلیدها یا گواهینامه ها را می توان از سرور مجوز به چند روش مختلف بدست آورد. شما می توانید ، به عنوان مثالکلیدها را از AS در یک فرآیند ورود به سیستم دریافت کنید و مطمئن شوید که همه سرورهای منابع شما به آن کلیدها دسترسی دارند. با این حال وقتی کلیدها یا گواهینامه ها تغییر می کنند ، مشکلی ایجاد می کند. به همین دلیل خوب است که همیشه از یک نقطه پایانی استفاده کنید و به صورت پویا کلیدها یا گواهینامه ها را از سرور مجوز بارگیری کنید (پاسخ های ذخیره شده بر اساس آنچه سرور در عناوین کنترل حافظه نهان برمی گردد). این امکان چرخش کلید آسان را فراهم می کند و هر گونه چرخش اجرای شما را نمی شکند.

اگر کلیدها یا گواهینامه ها در هدر JWT ارسال می شوند ، همیشه باید آنها را در برابر لیست سفید کلیدها بررسی کنید یا در صورت گواهینامه ها زنجیره اعتماد را تأیید کنید.

همچنین به یاد داشته باشید که ALG در هدر باید لیست سفید شود (همانطور که در اینجا توضیح داده شده است) و باید تأیید کنید که آیا صادرکننده صاحب کلیدها / گواهینامه ها است.

9. چه موقع از امضای متقارن استفاده می شود

قانون شست در اینجا این است - سعی کنید از استفاده از امضای متقارن خودداری کنید. امروزه احتمالاً موارد استفاده زیادی وجود ندارد که مجبور شوید به جای نامتقارن از امضای متقارن استفاده کنید. هنگام استفاده از کلیدهای متقارن ، همه طرفین باید راز مشترک را بدانند. هنگامی که تعداد احزاب درگیر رشد می کند ، محافظت از امنیت راز و جایگزینی آن بیشتر و در صورت فاش شدن ، دشوارتر می شود.

مشکل دیگر در امضای متقارن اثبات این است که چه کسی در واقع کلید را امضا کرده است. هنگام استفاده از کلیدهای نامتقارن ، مطمئن هستید که JWT توسط هر کس که دارای کلید خصوصی است ، امضا شده است. در صورت امضای متقارن ، هر طرفی که به راز دسترسی داشته باشد نیز می تواند نشانه ها را امضا کند.

اگر به دلایلی باید از امضای متقارن استفاده کنید تا از اسرار زودگذر استفاده کنید ، که به افزایش امنیت کمک می کند.

10. شناسه های نام مستعار زوج

استاندارد OpenID Connect شناسه های نام مستعار زوج (PPID) را معرفی می کند که می تواند به جای شناسه کاربر ساده استفاده شود. PPID یک شناسه کاربری مبهم است که برای یک مشتری خاص منحصر به فرد است. این به بهبود حریم خصوصی کاربران کمک می کند. به خصوص اگر از برخی از داده های حساس به عنوان شناسه کاربر استفاده می کنید ، به عنوان مثالایمیل یا شماره تأمین اجتماعی. با تشکر از PPID ، مشتری هنوز هم می تواند کاربر را متمایز کند ، اما هیچ اطلاعات اضافی دریافت نمی کند. برای کسب اطلاعات بیشتر به مقاله شناسه های نام مستعار زوج نگاهی بیندازید.

11. برای جلسات از JWT استفاده نکنید

تعداد فزاینده ای از توسعه دهندگان جبهه که ادعا می کنند JWT ها به جای کوکی های جلسه و جلسات متمرکز ، مزایایی برای استفاده به عنوان مکانیسم حفظ جلسه دارند. این نباید به عنوان یک عمل خوب در نظر گرفته شود. JWT ها هرگز برای استفاده با جلسات در نظر گرفته نشدند و استفاده از آنها به گونه ای ممکن است امنیت برنامه های شما را کاهش دهد. اگر علاقه مند هستید بدانید دلایل دقیق در برابر چنین استفاده از JWT ها چیست ، به این مقالات نگاهی بیندازید:

نتیجه

در این مقاله بهترین شیوه ها هنگام استفاده از نشانه های وب JSON به عنوان راهی برای تقویت مورد بررسی قرار گرفته است: امنیت API در برنامه های وب مهم است که به یاد داشته باشید که ایمنی JWT به نحوه اجرای و استفاده از نشانه ها بستگی دارد. فقط به این دلیل که یک JWT حاوی امضای رمزنگاری است ، به طور خودکار به معنای ایمن بودن آن نیست ، یا اینکه باید کورکورانه به نشانه اعتماد کنید. مگر اینکه شیوه های خوبی مشاهده شود API های شما در برابر حملات سایبری آسیب پذیر می شوند.

شیوه های خوب بیان شده در این مقاله در زمان نوشتن صادق است. باید به یاد داشته باشید که استانداردهای امنیتی و سطوح امنیتی رمزنگاری ما می توانند خیلی سریع تغییر کنند و خوب است که به آنچه در صنعت اتفاق می افتد توجه کنیم. شما می توانید هرگونه تغییر در RFC هایی را که در مورد شیوه های خوب JWT ها صحبت می کنند ، دنبال کنید: در RFC 8725 JSON WEB TOKEN بهترین شیوه های فعلی و در الگوریتم های وب RFC 7518 JSON (JWA).

به خبرنامه ما بپیوندید

آخرین مورد در مورد مدیریت هویت ، امنیت API و احراز هویت را مستقیماً به صندوق ورودی خود دریافت کنید.

آزمایش رایگان را شروع کنید

سرور هویت Curity را به صورت رایگان امتحان کنید. در 10 دقیقه بلند شوید و دویدید.

ثبت دیدگاه

مجموع دیدگاهها : 0در انتظار بررسی : 0انتشار یافته : ۰
قوانین ارسال دیدگاه
  • دیدگاه های ارسال شده توسط شما، پس از تایید توسط تیم مدیریت در وب منتشر خواهد شد.
  • پیام هایی که حاوی تهمت یا افترا باشد منتشر نخواهد شد.
  • پیام هایی که به غیر از زبان فارسی یا غیر مرتبط باشد منتشر نخواهد شد.