لحاظ کردن موارد امنیتی در طراحی سرویس‌های از نوع RESTFUL

لحاظ کردن موارد امنیتی در طراحی سرویس‌های از نوع RESTFUL

‫کردن‬ ‫لحاظ‬‫امن‬ ‫موارد‬‫ی‬‫ت‬‫ی‬‫طراح‬ ‫در‬‫ی‬‫سرو‬‫ی‬‫س‬‫ها‬‫ی‬‫نوع‬ ‫از‬RESTFUL
‫موسوی‬ ‫مسعود‬ ‫سید‬
‫ایمیل‬
Mousavi.2020@gmail.com
‫لینکدین‬
https://www.linkedin.com/in/seyed-masoud-mousavi-57374044/
‫فه‬‫مطالب‬ ‫رست‬
1-‫مقدمه‬..........................................................................................................................1
1-1-‫معرف‬‫ی‬REST.........................................................................................................................1
1-2-‫معرف‬‫ی‬RESTFUL....................................................................................................................1
1-3-RESTFUL API.......................................................................................................................2
1-4-JSON................................................................................................................................2
1-5-‫اهم‬‫ی‬‫ت‬‫امن‬‫ی‬‫ت‬‫در‬RESTFUL.........................................................................................................2
2-‫موارد‬‫امن‬‫ی‬‫ت‬‫ی‬‫در‬RESTFUL..................................................................................................2
1-‫مقدمه‬
1-1-‫معرفی‬Rest
‫برنامه‬ ‫رابط‬‫نویسی‬‫کاربردی‬ ‫برنامه‬‫به‬ ‫یا‬‫اختصار‬API‫مجموعه‬‫روش‬ ‫از‬ ‫ای‬‫های‬‫تعریف‬‫اجزای‬ ‫بین‬ ‫ارتباطات‬ ‫از‬ ‫مشخص‬ ‫شده‬
‫نرم‬‫یک‬ .‫ست‬‫ا‬ ‫مختلف‬ ‫افزاری‬API‫فراهم‬ ‫با‬ ‫خوب‬‫اجزای‬ ‫تمام‬ ‫سازی‬‫موردن‬‫یاز‬‫می‬ ‫باعث‬ ‫ساخت‬ ‫برای‬‫یک‬ ‫سعه‬‫تو‬ ‫تا‬ ‫شود‬
‫ساااده‬ ‫کامپیوتری‬ ‫برنامه‬‫مجموعه‬ ‫اینجا‬ ‫در‬ .‫شااود‬ ‫انجام‬ ‫تر‬‫برنامه‬ ‫به‬ ‫که‬ ‫دارد‬ ‫وجود‬ ‫قوانین‬ ‫از‬ ‫ای‬‫می‬ ‫اجازه‬ ‫ها‬‫یکدیگر‬ ‫با‬ ‫دهد‬
‫گفت‬‫توساااعه‬ .‫کنند‬ ‫وگو‬،‫دهنده‬API‫می‬ ‫ایجاد‬ ‫سااارور‬ ‫روی‬ ‫را‬‫می‬ ‫اجازه‬ ‫کالینت‬ ‫به‬ ‫و‬ ‫کند‬‫گفت‬ ‫آن‬ ‫با‬ ‫دهد‬.‫کند‬ ‫وگو‬‫با‬
‫وجود‬‫این‬‫مشاااخصاااه‬ ‫که‬‫های‬API‫فراهم‬ ‫نیایی‬ ‫هده‬ ،‫اسااات‬ ‫متفاوت‬ ‫یکدیگر‬ ‫با‬ ‫مختلف‬ ‫های‬‫برای‬ ‫امکاناتی‬ ‫ساااازی‬
‫برنامه‬‫به‬ ‫طریق‬ ‫از‬ ‫تا‬ ‫است‬ ‫نویسان‬‫کا‬‫ارائه‬ ‫خدمات‬ ‫رگیری‬‫توسط‬ ‫شده‬API‫نرم‬ ‫توسعه‬ ‫به‬‫معروه‬ .‫بپردازند‬ ‫خود‬ ‫افزاری‬‫ترین‬
‫برای‬ ‫روش‬‫ارائه‬API‫ها‬‫ی‬‫وب‬REST‫است‬.
REST1‫نرم‬ ‫معماری‬ ‫یک‬‫پروتکل‬ ‫و‬ ‫سی‬‫سا‬‫ا‬ ‫صیات‬ ‫صو‬‫خ‬ ‫از‬ ‫سیاری‬‫ب‬ ‫که‬ ‫ست‬‫ا‬ ‫ستقل‬‫م‬ ‫افزاری‬‫کالینت‬ ‫رفتار‬ ‫که‬ ‫هایی‬‫و‬ ‫ها‬
‫می‬ ‫کنترل‬ ‫را‬ ‫سرورها‬‫کنند‬‫را‬‫می‬ ‫فراهم‬‫این‬ .‫کند‬‫طراحی‬ ‫در‬ ‫رویکرد‬API‫سم‬‫مکانی‬ ‫مزایای‬ ‫همان‬ ‫از‬‫اینترنتی‬ ‫های‬(‫بر‬ ‫مبتنی‬
‫پروتکل‬HTTP)‫بیره‬‫می‬ ‫مند‬‫می‬ ‫استفاده‬ ‫وب‬ ‫معمولی‬ ‫صفحات‬ ‫نمایش‬ ‫برای‬ ‫که‬ ‫شود‬‫پیاده‬ ‫مزیت‬ ‫همان‬ ‫بنابراین‬ ،‫شود‬‫سازی‬
‫سریع‬.‫داشت‬ ‫خواهد‬ ‫وجود‬ ‫نیز‬ ‫اینجا‬ ‫در‬ ‫توسعه‬ ‫سادگی‬ ‫و‬ ‫تر‬‫ازآنجاکه‬REST API‫از‬ ‫ها‬HTTP‫می‬ ‫استفاده‬‫عمل‬ ‫در‬ ‫کنند‬
‫می‬‫آن‬ ‫توان‬‫برنامه‬ ‫زبان‬ ‫هر‬ ‫در‬ ‫را‬ ‫ها‬‫کرد‬ ‫استفاده‬ ‫نویسی‬.
1-2-‫معرفی‬RESTful
‫هر‬API‫ویژگی‬ ‫که‬،‫باشد‬ ‫داشته‬ ‫را‬ ‫زیر‬ ‫های‬‫عنوان‬ ‫به‬‫یک‬RESTful API‫می‬ ‫شناخته‬‫شود‬:
‫کالینت‬ ‫معماری‬‫ا‬‫کالینت‬ :‫سرور‬‫عنوان‬ ‫به‬front-end‫سرور‬ ‫و‬‫عنوان‬ ‫به‬back-end‫می‬ ‫شناخته‬‫نکته‬ ‫این‬ ‫به‬ .‫شود‬
‫توجه‬ ‫میم‬‫شود‬‫که‬‫هردو‬‫ی‬‫هستند‬ ‫یکدیگر‬ ‫از‬ ‫مستقل‬.
‫داده‬ ‫هیچ‬ :‫مستقل‬‫پردازش‬ ‫زمان‬ ‫در‬ ‫نباید‬ ‫ای‬،‫انتقال‬‫و‬‫جلسه‬ ‫وضعیت‬ .‫شود‬ ‫ذخیره‬ ‫سرور‬ ‫روی‬ ‫درخواست‬2‫با‬‫ید‬‫در‬
‫شود‬ ‫ذخیره‬ ‫کالینت‬ ‫سمت‬.
‫پاسخ‬ ‫که‬ ‫باشد‬ ‫داشته‬ ‫را‬ ‫توانایی‬ ‫این‬ ‫باید‬ ‫کالینت‬ :‫شدن‬ ‫کش‬ ‫قابل‬‫کاری‬ ‫چنین‬ .‫کند‬ ‫ذخیره‬ ‫کش‬ ‫یک‬ ‫در‬ ‫را‬ ‫ها‬
ً‫ال‬‫اصو‬‫عملکرد‬API‫می‬ ‫بیبود‬ ‫را‬‫بخشد‬.
1
Representational State Transfer
2
session
1-3-RESTful API
RESTful API‫یک‬ ‫عنوان‬ ‫با‬ ‫که‬RESTful‫می‬ ‫شناخته‬ ‫نیز‬ ‫وب‬ ‫سرویس‬‫شود‬)‫از‬ ‫استفاده‬ ‫با‬ ‫که‬ ‫است‬ ‫وب‬ ‫سرویس‬ ‫یک‬
‫پروتکل‬HTTP‫اصول‬ ‫و‬REST‫پیاده‬‫می‬ ‫سازی‬‫مجموعه‬ ‫شامل‬ ‫و‬ ‫شود‬‫که‬ ‫است‬ ‫منابع‬ ‫از‬ ‫ای‬‫متدهای‬HTTP GET, PUT,
POST, DELETE‫می‬ ‫خدمت‬ ‫به‬ ‫را‬‫منابع‬ ‫از‬ ‫مجموعه‬ ‫این‬ .‫گیرد‬‫درنیا‬‫یت‬‫اساااتاندارد‬ ‫فرم‬ ‫یک‬ ‫در‬ً‫ال‬‫معمو‬XML‫که‬
‫می‬‫می‬ ‫ارائه‬ ،‫باشد‬ ‫معتبر‬ ‫اینترنت‬ ‫رسانه‬ ‫نوع‬ ‫هر‬ ‫تواند‬‫شود‬.
RESTful API‫از‬ ‫استفاده‬ ‫به‬ ‫قادر‬ ‫ها‬HTTP‫به‬ ،‫اجرا‬ ،‫ساخت‬ ‫عملیات‬ ‫انجام‬ ‫برای‬‫و‬ ‫روزرسانی‬.‫هستند‬ ‫منابع‬ ‫و‬ ‫داده‬ ‫حذه‬
‫فرمت‬‫درخواست‬ ‫های‬RESTful API‫شامل‬ ‫معروه‬REST،XML-RPC،SOAP‫فرمت‬ .‫است‬‫پاسخ‬ ‫های‬RESTful
API‫شامل‬ ‫نیز‬ ‫معروه‬REST،XML-RPC،SOAP،JSON‫و‬PHP‫هستند‬.
1-4-JSON
JSON3‫برنامه‬ ‫به‬ ‫که‬ ‫است‬ ‫روشی‬‫می‬ ‫اجازه‬ ‫ها‬‫بپردازن‬ ‫اطالعات‬ ‫تبادل‬ ‫به‬ ‫دهد‬.‫د‬API‫ها‬‫برنامه‬ ‫برای‬ ‫روشی‬‫بتوانند‬ ‫تا‬ ‫هستند‬ ‫ها‬
‫اما‬ ،‫کنند‬ ‫برقرار‬ ‫ارتباط‬ ‫یکدیگر‬ ‫با‬‫ازآنجاکه‬‫آن‬‫داده‬ ‫بتوانند‬ ‫تا‬ ‫دارند‬ ‫نیاز‬ ‫شی‬ ‫رو‬ ‫به‬ ،‫ندارند‬ ‫تکلم‬ ‫قدرت‬ ‫ها‬‫را‬ ‫اطالعاتی‬ ‫و‬ ‫ها‬
‫کنند‬ ‫توصیف‬ ،‫هستند‬ ‫آن‬ ‫تبادل‬ ‫حال‬ ‫در‬ ‫که‬. JSON‫داده‬ ‫جداسازی‬ ‫برای‬‫معنا‬ ‫ساختاری‬ ‫اطالعات‬ ‫دادن‬ ‫و‬ ‫ها‬‫ب‬ ‫از‬ ‫دار‬،‫راکت‬
‫نقل‬‫می‬ ‫اساااتفاده‬ ‫کاما‬ ‫و‬ ‫کولون‬ ،‫قول‬،‫کند‬‫ا‬ ‫به‬‫ین‬‫ترت‬‫یب‬‫می‬ ‫کامپیوترها‬‫یا‬ ‫خانوادگی‬ ‫نام‬ ،‫نام‬ ‫بین‬ ‫تفاوت‬ ‫توانند‬‫ه‬‫رگونه‬
‫به‬ ‫که‬ ‫را‬ ‫دیگری‬ ‫اطالعات‬‫داده‬ ‫این‬ ‫بالقوه‬ ‫طور‬‫می‬ ‫توصیف‬ ‫را‬ ‫ها‬‫دهند‬ ‫تشخیص‬ ،‫کند‬.
JSON‫روش‬ ‫از‬ ‫یکی‬ ‫به‬‫های‬‫موردعالقه‬‫برنامه‬‫فعال‬ ‫برای‬ ‫نویسااان‬‫ارت‬ ‫سااازی‬‫باطات‬API‫تبدیل‬‫روش‬ ‫این‬ ‫با‬ .‫اساات‬ ‫شااده‬
‫می‬‫درحالی‬ ،‫اینترنت‬ ‫محیط‬ ‫در‬ ‫داده‬ ‫تبادل‬ ‫برای‬ ‫را‬ ‫سااابک‬ ‫و‬ ‫سااااده‬ ‫راهکار‬ ‫یک‬ ‫توان‬‫حف‬ ‫داده‬ ‫این‬ ‫معنای‬ ‫و‬ ‫سااااختار‬ ‫که‬
‫می‬‫کرد‬ ‫فراهم‬ ،‫شود‬.
1-5-‫در‬ ‫امنیت‬ ‫اهمیت‬RESTful
‫امنیت‬API‫بزرگ‬‫سازمان‬ ‫که‬ ‫ست‬ ‫ا‬ ‫شی‬ ‫چال‬ ‫ترین‬‫سال‬ ‫طی‬ ‫تا‬ ‫ستند‬ ‫ه‬ ‫آن‬ ‫دنبال‬ ‫به‬ ‫ها‬‫های‬‫ساس‬ ‫ا‬ ‫بر‬ .‫شود‬ ‫برطره‬ ‫رو‬ ‫پیش‬
‫انجام‬ ‫تحقیقات‬‫گرفته‬SmartBear‫شناخته‬ ‫فناوری‬ ‫یک‬ ‫شماره‬ ‫چالش‬ ‫امنیت‬ ،.‫است‬ ‫شده‬41.2%‫مشارکت‬ ‫از‬‫این‬ ‫کنندگان‬
‫کرده‬ ‫اعالم‬ ‫نیز‬ ‫تحقیق‬‫بزرگ‬ ‫امنیت‬ ،‫اند‬‫چالش‬ ‫ترین‬‫فناوری‬API‫آن‬ ‫که‬ ‫ست‬ ‫ا‬‫در‬ .‫شود‬ ‫برطره‬ ‫روزی‬ ،‫ستند‬ ‫ه‬ ‫امیدوار‬ ‫ها‬
‫نیمی‬ ‫به‬ ‫نزدیک‬ ‫حاضر‬ ‫حال‬‫ارائه‬ ‫از‬‫دهندگان‬API‫امنیت‬ ‫آزمایش‬ ‫برای‬ ‫را‬ ‫ابزاری‬API‫گرفته‬ ‫خدمت‬ ‫به‬‫اند‬.
‫یک‬ ‫توسااعه‬ ‫و‬ ‫طراحی‬ ‫زمان‬ ‫در‬RESTful API‫جنبه‬‫گیرد‬ ‫قرار‬ ‫جدی‬ ‫موردتوجه‬ ‫باید‬ ‫امنیتی‬ ‫های‬‫بررساای‬ ‫به‬ ‫ادامه‬ ‫در‬ ‫که‬
‫پرداخته‬ ‫آنان‬‫م‬‫ی‬‫شود‬.
2-‫موارد‬‫امنیت‬‫ی‬‫در‬RestFul
3
JavaScript Object Notation
‫و‬ ‫صه‬ ‫خال‬ ‫صورت‬ ‫به‬ ‫راهکارها‬ ‫که‬ ‫شده‬ ‫آن‬ ‫بر‬ ‫سعی‬ ‫ادامه‬ ‫در‬‫کاربرد‬‫ی‬‫در‬ ‫امنیت‬ ‫ایجاد‬ ‫بر‬‫سرو‬‫یس‬‫ها‬‫بر‬ ‫مبتنی‬REST‫ارائه‬
.‫شود‬
‫پروتکل‬ ‫از‬ ‫استفاده‬HTTPS
‫ساارویس‬ ‫در‬ ‫ساارور‬ ‫و‬ ‫کالینت‬ ‫بین‬ ‫اطالعات‬ ‫انتقال‬‫های‬Restful‫امن‬ ‫کانال‬ ‫در‬ ‫باید‬HTTPS.‫پذیرد‬ ‫صااورت‬‫این‬ ‫غیر‬ ‫در‬
‫در‬ ‫فردی‬ ‫حمالت‬ ‫صورت‬‫بود‬ ‫خواهد‬ ‫محتمل‬ ‫اطالعات‬ ‫شنود‬ ‫و‬ ‫میان‬
‫دسترسی‬ ‫کنترل‬
‫ارو‬‫ا‬‫س‬‫یس‬‫های‬‫هر‬ ‫برای‬ ‫ات‬‫ا‬‫اس‬‫ا‬‫نش‬ ‫مدیریت‬ ‫و‬ ‫ای‬‫ا‬‫اترس‬‫ا‬‫دس‬ ‫کنترل‬ ،‫کاربران‬ ‫هویت‬ ‫احراز‬ ‫باید‬ ‫ات‬‫ا‬‫نیس‬ ‫عمومی‬ ‫که‬API‫اورت‬‫ا‬‫ص‬
.‫پذیرد‬
API Keys
‫برای‬‫سرو‬‫یس‬‫های‬‫اجرا‬ ‫سی‬ ‫ستر‬ ‫د‬ ‫کنترل‬ ‫بدون‬ ‫که‬ ‫عمومی‬‫م‬‫ی‬‫شود‬‫گرفت‬ ‫نظر‬ ‫در‬ ‫سک‬ ‫ری‬ ‫این‬ ‫باید‬‫شود‬ ‫ه‬‫ممک‬ ‫که‬‫ست‬ ‫ا‬ ‫ن‬
‫باند‬ ‫پینای‬‫سا‬‫یساتم‬‫اشاتاال‬ ‫زیادی‬ ‫طرز‬ ‫به‬‫شاود‬.API Keys‫کاهش‬ ‫برای‬‫ا‬‫ین‬‫گونه‬‫از‬‫ریساک‬‫مورداساتفاده‬‫قرار‬‫م‬‫ی‬‫گیرد‬.
‫اغلب‬ ‫هم‬ ‫گاهی‬‫اازمان‬‫ا‬‫س‬‫ها‬‫م‬‫ی‬‫توانند‬‫این‬ ‫از‬API‫کرد‬ ‫ادود‬‫ا‬‫مس‬ ‫جای‬ ‫به‬ .‫کنند‬ ‫درآمد‬ ‫اب‬‫ا‬‫کس‬‫اال‬‫ا‬‫اتص‬‫ها‬‫یی‬4
‫با‬‫فرکانس‬،‫باال‬
‫سازمان‬‫م‬‫ی‬‫توان‬‫با‬ ‫دسترسی‬ ‫کنترل‬ ‫برنامه‬‫هز‬‫ینه‬‫های‬‫به‬ ‫متفاوتی‬‫مشتریان‬‫کند‬ ‫عرضه‬.‫عالوه‬‫این‬ ‫بر‬API KEY‫ها‬‫م‬‫ی‬‫توانند‬
‫حمله‬ ‫خطر‬DOS.‫دهد‬ ‫کاهش‬ ‫سرور‬ ‫را‬‫درع‬‫ین‬‫حال‬.‫است‬ ‫تطبیق‬ ‫قابل‬ ‫راحتی‬ ‫به‬ ‫ثالث‬ ‫مشتریان‬ ‫از‬ ‫استفاده‬ ‫برای‬
‫کلیدهای‬API‫از‬ ‫سیاری‬ ‫ب‬ ‫سط‬ ‫تو‬API‫می‬ ‫ستفاده‬ ‫ا‬ ‫وب‬ ‫های‬‫از‬ ‫نوعی‬ ‫تا‬ ‫شوند‬‫کلیدهای‬ .‫کنند‬ ‫فراهم‬ ‫را‬ ‫سی‬ ‫ستر‬ ‫د‬ ‫کنترل‬
API‫درواقع‬‫نمی‬ ‫و‬ ‫هستند‬ ‫کاربر‬ ‫و‬ ‫اپلیکیشن‬ ‫تشخیص‬ ‫و‬ ‫شناسایی‬ ‫برای‬ ‫ابزاری‬‫آن‬ ‫توان‬‫امنیت‬ ‫پروتکل‬ ‫یک‬ ‫را‬ ‫ها‬‫و‬ ‫مستقل‬ ‫ی‬
‫خدمات‬ .‫گرفت‬ ‫نظر‬ ‫در‬ ‫کامل‬REST‫عمومی‬‫می‬ ‫و‬ ‫هسااتند‬ ‫مواجه‬ ‫تیدیداتی‬ ‫با‬ ‫دسااترساای‬ ‫کنترل‬ ‫بدون‬‫کلیدهای‬ ‫از‬ ‫توان‬
API‫ک‬ ‫کم‬ ‫برای‬‫سازمان‬ .‫کرد‬ ‫استفاده‬ ‫تیدیدات‬ ‫این‬ ‫ردن‬‫از‬ ‫درآمد‬ ‫کسب‬ ‫برای‬ ‫شیوه‬ ‫این‬ ‫از‬ ‫اغلب‬ ‫ها‬API‫می‬ ‫استفاده‬،‫کنند‬
‫که‬ ‫شکل‬ ‫این‬ ‫به‬‫بجا‬‫ی‬‫کردن‬ ‫مسدود‬‫اساس‬ ‫بر‬ ‫مشتریان‬ ‫به‬ ‫سرویس‬ ‫کل‬ ‫گذاشتن‬ ‫باز‬ ‫یا‬‫برنامه‬‫خرید‬ ‫دسترسی‬‫اری‬‫اجازه‬ ‫شده‬
‫می‬ ‫داده‬ ‫دسترسی‬‫شود‬.
ً‫ال‬‫معمو‬‫کلید‬ ‫یک‬API‫کامل‬ ‫ای‬‫ا‬‫اترس‬‫ا‬‫دس‬ ‫امکان‬‫یک‬ ‫که‬ ‫را‬ ‫اعمالی‬ ‫تمام‬ ‫به‬API‫می‬ ‫فراهم‬ ،‫ات‬‫ا‬‫اس‬ ‫آن‬ ‫انجام‬ ‫به‬ ‫قادر‬‫که‬ ‫کند‬
‫داده‬ ‫واردکردن‬ ‫شااامل‬‫داده‬ ‫حذه‬ ‫و‬ ‫جدید‬ ‫های‬‫می‬ ‫نیز‬ ‫موجود‬ ‫های‬‫کلید‬ ‫یک‬ ‫از‬ ‫شااما‬ ‫اگر‬ .‫شااود‬API‫چند‬ ‫در‬ ‫یکسااان‬
‫می‬ ‫شن‬ ‫اپلیکی‬ ‫یک‬ ‫در‬ ‫نقص‬ ،‫کنید‬ ‫ستفاده‬ ‫ا‬ ‫شن‬ ‫اپلیکی‬‫داده‬ ‫تواند‬‫ضی‬ ‫بع‬ .‫ببرد‬ ‫بین‬ ‫از‬ ‫را‬ ‫شما‬ ‫کاربران‬ ‫های‬‫شن‬ ‫اپلیکی‬ ‫از‬‫به‬ ‫ها‬
‫می‬ ‫اجازه‬ ‫کاربران‬‫کلیدهای‬ ‫تا‬ ‫دهند‬API‫کلید‬ ‫یک‬ ‫تاییر‬ ‫توانایی‬ .‫کنند‬ ‫لاو‬ ‫را‬ ‫نامعتبر‬ ‫کلیدهای‬ ‫یا‬ ‫کنند‬ ‫تولید‬ ‫جدید‬API
‫محدودیت‬‫می‬ ‫کاهش‬ ‫را‬ ‫امنیتی‬ ‫های‬‫دهد‬.
4
Connection
‫متدهای‬ ‫کردن‬ ‫محدود‬HTTP
‫پروتکل‬ ‫از‬ ‫مشخصی‬ ‫متدهای‬ ‫از‬HTTP‫سفید‬ ‫لیست‬ ‫در‬ ‫که‬5
‫قرار‬‫داده‬‫ا‬‫ید‬‫استفا‬.‫شود‬ ‫ده‬‫به‬‫عنوان‬‫مثال‬‫سرور‬ ‫در‬
‫تنیا‬ ‫شما‬‫م‬‫ی‬‫توان‬‫متد‬ ‫از‬GET،PUT،POST‫پروتکل‬HTTP.‫کرد‬ ‫استفاده‬
‫کردن‬ ‫رد‬‫همه‬‫ی‬‫درخواست‬‫ها‬‫ی‬‫این‬ ‫به‬ ‫پاسخ‬ ‫در‬ .‫است‬ ‫تعارض‬ ‫در‬ ‫سفید‬ ‫لیست‬ ‫با‬ ‫که‬‫درخواست‬‫ها‬‫م‬‫ی‬‫تو‬‫ان‬
‫کد‬ ‫شماره‬405 Method not allowed‫استفاده‬‫کرد‬.
‫اعتبارسنج‬‫ی‬‫ورود‬‫ی‬‫ها‬
‫اعتماد‬ ‫ورودی‬ ‫پارامترهای‬ ‫به‬‫نشود‬‫آنان‬ ‫تمامی‬ ‫و‬‫اعتبارسنج‬‫ی‬.‫شوند‬
‫ارزیابی‬‫ورود‬‫ی‬‫ها‬‫(تعداد‬ ‫طول‬ :‫اساس‬ ‫بر‬‫کاراکترها‬/)( ‫محدوده‬‫رنج‬‫داده‬‫ها‬‫ی‬‫ورودی‬)‫نوع‬ ‫و‬ ‫فرمت‬ /
.‫پذیرد‬ ‫انجام‬
‫اعتبارسنجی‬‫ورود‬‫ی‬‫ها‬‫اساس‬ ‫بر‬‫نوع‬‫ها‬‫ی‬‫اولیه‬‫زبان‬‫ها‬‫ی‬‫برنامه‬‫نو‬‫یسی‬‫مانند‬numbers, Booleans
dates, times.‫پذیرد‬ ‫صورت‬ ‫نیز‬
‫رشته‬‫ها‬‫ی‬‫از‬ ‫استفاده‬ ‫با‬ ‫ورودی‬regexps‫کنید‬ ‫محدود‬.
‫سرور‬‫ورود‬‫ی‬‫های‬‫غیر‬‫پ‬‫یش‬‫بینی‬‫شده‬‫یا‬‫غ‬‫یرقانونی‬.‫نکند‬ ‫پذیرش‬ ‫و‬ ‫کند‬ ‫رد‬ ‫را‬
‫گردد‬ ‫حاصل‬ ‫اطمینان‬‫کتابخانه‬‫ها‬‫ی‬‫استفاده‬ ‫برنامه‬ ‫در‬ ‫که‬‫م‬‫ی‬‫شود‬‫معتبر‬‫بررس‬‫ی‬‫شده‬‫د‬ ‫و‬ ‫هستند‬‫ارای‬
.‫نیستند‬ ‫مخرب‬ ‫کدهای‬
‫حد‬ ‫یک‬ ‫کردن‬ ‫تعریف‬6
‫کردن‬ ‫رد‬ ‫و‬ ‫درخواست‬ ‫از‬ ‫مناسب‬‫درخواست‬‫ها‬‫ی‬‫پاسخ‬ ‫با‬ ‫حد‬ ‫این‬ ‫از‬ ‫بیش‬
413Request Entity Too Large
‫گرفتن‬ ‫نظر‬ ‫در‬LOGIN.‫شود‬ ‫گرفته‬ ‫نظر‬ ‫در‬ ‫آنان‬ ‫قبال‬ ‫در‬ ‫روشن‬ ‫سیاستی‬ ‫و‬ ‫سیستم‬ ‫به‬ ‫موفق‬ ‫غیر‬ ‫های‬
‫دچار‬ ‫اولیه‬ ‫هویت‬ ‫احراز‬ ‫در‬ ‫ثانیه‬ ‫یک‬ ‫در‬ ‫بار‬ ‫صدها‬ ‫فرد‬ ‫یک‬ ‫کنید‬ ‫فرض‬‫حالت‬ ‫این‬ ،‫است‬ ‫شده‬ ‫شکست‬
‫باال‬ ‫را‬ ‫دیکشنری‬ ‫حمله‬ ‫احتمال‬‫م‬‫ی‬‫رود‬.‫به‬‫عنوان‬‫مثال‬‫که‬ ‫سیاستی‬‫م‬‫ی‬‫تواند‬‫گردد‬ ‫لحاظ‬ ‫قسمت‬ ‫این‬ ‫در‬‫این‬
‫کاربر‬ ‫اگر‬ ‫که‬ ‫است‬5‫آیپی‬ ‫با‬ ‫را‬ ‫کاربر‬ ‫این‬ ‫دسترسی‬ ‫سرور‬ ،‫شد‬ ‫مواجه‬ ‫شکست‬ ‫با‬ ‫هویت‬ ‫احراز‬ ‫در‬ ‫بار‬
‫مدت‬ ‫به‬ ‫فوق‬15‫دقیقه‬‫غ‬‫یرفعال‬.‫کند‬
‫یک‬ ‫از‬ ‫استفاده‬‫تجز‬‫یه‬‫کننده‬7
‫کردن‬ ‫تجزیه‬ ‫برای‬ ‫ایمن‬ ‫پیام‬‫پ‬‫یام‬‫های‬.‫ورودی‬‫فرمت‬ ‫از‬ ‫اگر‬XML‫استفاده‬
‫م‬‫ی‬‫شود‬‫مطمئن‬‫شوید‬‫که‬‫تجز‬‫یه‬‫کننده‬(parser‫حمالت‬ ‫به‬ ‫نسبت‬ )XXE‫غیره‬ ‫و‬‫آس‬‫یب‬‫پذیر‬.‫نیست‬
5
White List
6
Limit
parser7
‫اعتبارسنج‬‫ی‬‫پیام‬ ‫محتویات‬ ‫نوع‬
‫فیلد‬ ‫در‬ ‫موجود‬ ‫محتوای‬ ‫نوع‬ ‫با‬ ‫باید‬ ‫سخ‬‫پا‬ ‫یا‬ ‫ست‬‫درخوا‬ ‫یک‬ ‫بدنه‬type‫این‬ ‫غیر‬ ‫در‬ ‫شد؛‬‫با‬ ‫شته‬‫دا‬ ‫همخوانی‬ ‫پیام‬ ‫سرآیند‬ ‫در‬
‫به‬ ‫منجر‬ ‫و‬ ‫دهد‬ ‫رخ‬ ‫سیری‬ ‫تف‬ ‫شتباه‬ ‫ا‬ ‫سرور‬ ‫یا‬ ‫کاربر‬ ‫سمت‬ ‫در‬ ‫ست‬ ‫ا‬ ‫ممکن‬ ‫صورت‬‫حمالت‬code injection/execution
‫شود‬.
‫اعتبارسنج‬‫ی‬‫درخواست‬ ‫محتویات‬ ‫نوع‬
‫کردن‬ ‫رد‬‫درخواست‬‫ها‬‫ی‬‫محتویات‬ ‫شامل‬ ‫که‬‫پ‬‫یش‬‫بینی‬‫نشده‬‫سرآیند‬ ‫با‬ ‫مخالف‬ ‫یا‬HTTP‫پاسخ‬ ‫در‬ ‫باید‬ .‫هستند‬
‫ا‬‫ین‬‫گونه‬‫درخواست‬‫خطای‬esponse status 406 Unacceptable or 415 Unsupported‫داده‬ ‫نمایش‬ ‫کاربر‬ ‫به‬
.‫شود‬
‫امن‬ ‫فرمت‬ ‫توسط‬ ‫پاسخ‬ ‫ارسال‬
‫عادی‬ ‫امری‬‫م‬‫ی‬‫باشد‬‫برای‬ ‫که‬‫سرو‬‫یس‬‫های‬REST‫کاربر‬ ‫به‬ ‫ارسال‬ ‫برای‬ ‫پاسخ‬ ‫فرمت‬ ‫چندین‬ ‫که‬ ‫باشد‬ ‫داشته‬ ‫وجود‬ ‫امکانی‬
‫با‬ ‫فراهم‬.‫شد‬‫به‬‫عنوان‬‫مثال‬‫فرمت‬‫ها‬‫ی‬application/xml‫یا‬application/Jason‫سرویس‬ ‫یک‬ ‫برای‬‫قابل‬‫دسترس‬‫ی‬‫در‬ .‫است‬
‫قسمت‬ ‫در‬ ‫حالت‬ ‫این‬Header‫را‬ ‫پاسخ‬ ‫آن‬ ‫اساس‬ ‫بر‬ ‫سرور‬ ‫و‬ ‫کرده‬ ‫ارسال‬ ‫سرور‬ ‫برای‬ ‫را‬ ‫انتخابی‬ ‫فرمت‬ ‫کاربر‬ ،‫درخواست‬
‫می‬ ‫ارسال‬.‫کند‬
‫کردن‬ ‫رد‬‫درخواست‬‫ها‬‫خطای‬ ‫پیام‬ ‫با‬406 Not Acceptable response‫فرمت‬ ‫درخواست‬ ‫سرآیند‬ ‫در‬ ‫اگر‬
‫موردن‬‫یاز‬‫پیام‬‫فرمتی‬‫انتخاب‬‫شده‬‫جز‬ ‫که‬ ‫باشد‬‫فرمت‬‫ها‬‫ی‬.‫نباشد‬ ‫مجاز‬
‫سرویس‬‫شامل‬ ‫که‬ ‫های‬‫کدها‬‫ی‬‫در‬ )‫اسکریپت‬ ‫جاوا‬ ‫(مانند‬ ‫است‬ ‫اسکریپتی‬‫پاسخ‬‫ها‬‫ی‬‫باید‬ ‫آنان‬‫به‬‫شدت‬‫م‬‫حافظت‬
‫و‬ ‫شوند‬‫اعتبارسنج‬‫ی‬‫سر‬ ‫تزریق‬ ‫حمالت‬ ‫مقابل‬ ‫تا‬ ‫پذیرد‬ ‫صورت‬.‫گردند‬ ‫مقاوم‬ ‫آیند‬
‫اتصال‬ ‫نقاط‬ ‫مدیریت‬
‫قرار‬ ‫از‬ ‫اجتناب‬‫دادن‬‫مدیریت‬ ‫اتصال‬ ‫نقاط‬‫سرو‬‫یس‬‫ها‬‫اینترنت‬ ‫طریق‬ ‫از‬
‫اگر‬‫به‬ ‫دسترسی‬‫مدیریت‬ ‫اتصال‬ ‫نقاط‬‫سرو‬‫یس‬‫ها‬‫که‬ ‫شود‬ ‫حاصل‬ ‫اطمینان‬ ،‫باشد‬ ‫الزم‬ ‫اینترنت‬ ‫طریق‬ ‫از‬
‫می‬ ‫استفاده‬ ‫عامله‬ ‫چند‬ ‫هویت‬ ‫احراز‬ ‫مثل‬ ‫قوی‬ ‫هویت‬ ‫احراز‬ ‫مکانیزم‬ ‫یک‬ ‫از‬ ‫کاربران‬‫کنند‬.
‫طریق‬ ‫از‬ ‫مدیریت‬ ‫دسترسی‬ ‫نقاط‬‫پورت‬‫ها‬‫ی‬‫متفاوت‬HTTP‫دیگری‬ ‫هاست‬ ‫یا‬‫ترج‬ً‫ا‬‫یح‬‫یک‬ ‫روی‬NIC
.‫گیرد‬ ‫قرار‬ ‫متفاوت‬ ‫شبکه‬ ‫زیر‬ ‫و‬
‫دسترسی‬ ‫کردن‬ ‫محدود‬‫ا‬‫تصال‬‫ها‬‫ی‬‫مدیر‬‫ی‬‫تی‬‫وس‬ ‫به‬‫یله‬‫های‬‫رول‬‫ها‬‫ی‬‫از‬ ‫استفاده‬ ‫یا‬ ‫فایروال‬‫ل‬‫یست‬‫های‬
.‫دسترسی‬ ‫کنترل‬
‫خطاها‬ ‫مدیریت‬
‫با‬ ‫پاسخ‬‫پ‬‫یام‬‫های‬‫کلی‬ ‫خطای‬-‫از‬ ‫جزئیات‬ ‫شدن‬ ‫آشکار‬ ‫از‬ ‫اجتناب‬‫خراب‬‫ی‬‫های‬‫حیاتی‬ ‫غیر‬
‫مانند‬ ‫فنی‬ ‫جزئیات‬call stacks or other internal hints‫نشود‬ ‫ارسال‬ ‫مشتری‬ ‫برای‬ ‫را‬.
‫الگ‬‫امنیتی‬ ‫های‬
‫نوشتن‬audit logs‫از‬ ‫بعد‬ ‫و‬ ‫قبل‬‫رخدادها‬‫ی‬‫امنیت‬ ‫رویدادهای‬ ‫با‬ ‫مرتبط‬
‫حمالت‬ ‫تشخیص‬ ‫منظور‬ ‫به‬‫؛‬‫پیام‬‫توکن‬ ‫از‬ ‫که‬ ‫خطای‬ ‫های‬‫صادر‬ ‫هویت‬ ‫احراز‬ ‫های‬‫م‬‫ی‬‫شود‬‫نظر‬ ‫در‬ ‫را‬
.‫بگیرید‬
‫حمله‬ ‫از‬ ‫پیشگیری‬log injection‫طریق‬ ‫از‬‫پاک‬‫ساز‬‫ی‬‫داده‬‫ها‬‫ی‬‫سیستم‬ ‫به‬ ‫ورود‬ ‫از‬ ‫قبل‬ ‫الگ‬
‫امنیتی‬ ‫سرآیندهای‬
‫برای‬‫اطمینان‬‫از‬‫اینکه‬‫محتوای‬‫یک‬‫منبع‬‫داده‬‫به‬‫درستی‬‫توسط‬‫مرورگر‬‫تفسیر‬‫شده‬،‫است‬‫س‬‫رور‬‫همیشه‬
‫باید‬Content Type.‫دهد‬ ‫مطابقت‬ ‫محتویات‬ ‫نوع‬ ‫با‬ ‫را‬ ‫سرآیند‬
‫باید‬ ‫سرور‬X-Content-Type-Options: nosniff‫اطمینان‬ ‫اینکه‬ ‫منظور‬ ‫به‬ .‫کند‬ ‫ارسال‬ ‫هدر‬ ‫در‬ ‫را‬
‫در‬ ‫را‬ )‫اسکریپت‬ ‫جاوا‬ ‫کدهای‬ ‫(مانند‬ ‫متفاوت‬ ‫موارد‬ ‫مرورگر‬ ‫شود‬ ‫حاصل‬Content-Type‫اجرا‬‫نم‬‫ی‬‫کند‬
‫روی‬ ‫بر‬ ‫حمله‬ ‫انجام‬ ‫از‬ ‫اقدام‬ ‫این‬ ‫(با‬Content-Type‫جلوگیری‬‫م‬‫ی‬‫شود‬).
‫عالوه‬‫این‬ ‫بر‬‫باید‬ ‫مشتری‬X-Frame-Options: deny‫کرد‬ ‫ارسال‬ ‫را‬‫از‬ ‫محافظت‬ ‫برای‬ ‫امنیتی‬ ‫هدر‬ ‫این‬ .
‫حمله‬drag'n drop clickjacking‫انجام‬ ‫قبلی‬ ‫مرورگرهای‬ ‫در‬‫م‬‫ی‬.‫شود‬
CORS
‫مکانیزم‬CORS8‫دو‬ ‫بین‬ ‫منابع‬ ‫اشتراک‬ ‫معنای‬ ‫به‬‫مبدأ‬‫متفاوت‬‫م‬‫ی‬‫باشد‬‫که‬ ‫سایتی‬ ‫که‬ ‫معنا‬ ‫این‬ ‫به‬ .‫م‬‫بدأ‬A‫در‬
‫است‬ ‫اجرا‬ ‫حال‬‫م‬‫ی‬‫تواند‬‫داده‬‫ها‬‫سرور‬ ‫از/به‬ ‫را‬‫مبدأ‬B‫کند‬ ‫دریافت/ارسال‬‫که‬ ‫؛‬‫پیکربندی‬ ‫عدم‬ ‫صورت‬ ‫در‬
‫در‬ ‫اسکریپت‬ ‫جاوا‬ ‫فراخوانی‬ ‫امکان‬ ‫است‬ ‫ممکن‬ ‫نامناسب‬‫سرویس‬REST‫می‬ ‫فراهم‬.‫شود‬
‫پیشنیاد‬‫م‬‫ی‬‫شود‬CORS headers‫اگر‬domain calls-cross‫پشتیبانی‬ ‫را‬‫نم‬‫ی‬‫کند‬‫را‬‫غ‬‫یرفعال‬.‫کنید‬
‫از‬ ‫حفاظت‬‫درخواست‬ ‫در‬ ‫حساس‬ ‫اطالعات‬HTTP
‫در‬RESTful‫وب‬‫سرو‬‫یس‬‫ها‬‫باید‬‫از‬‫نشتی‬‫اعتبارنامه‬‫ها‬‫این‬ .‫شود‬ ‫جلوگیری‬‫اعتبارنامه‬‫ها‬‫ی‬‫عبارت‬‫اند‬‫ا‬‫رمز‬ ‫ز‬
‫توکن‬ ،‫عبور‬‫و‬ ‫امنیتی‬ ‫های‬API keys‫در‬ ‫نباید‬ ‫که‬URL‫الگ‬ ‫در‬ ‫است‬ ‫ممکن‬ ‫که‬ ‫شوند‬ ‫ظاهر‬‫وب‬ ‫های‬
‫سرو‬‫یس‬‫ها‬‫هستند‬ ‫ارزشمند‬ ‫اصل‬ ‫در‬ ‫آنان‬ ‫که‬ ‫شود‬ ‫ذخیره‬
‫در‬‫درخواست‬‫ها‬‫ی‬PUT‫و‬POST،‫داده‬‫ها‬‫ی‬‫حساس‬‫م‬‫ی‬‫تواند‬‫یا‬ ‫پیام‬ ‫بدنه‬ ‫در‬‫سرآیند‬‫درخواست‬‫ها‬‫ارسال‬
.‫شوند‬
‫در‬‫درخواست‬‫ها‬‫ی‬GET‫داده‬‫ها‬‫ی‬‫حساس‬‫باید‬‫در‬HTTP Header‫منتقل‬‫شوند‬.
‫به‬‫عنوان‬‫مثال‬.‫است‬ ‫مناسب‬ ‫زیر‬ ‫موارد‬
https://example.com/resourceCollection/[ID]/action
https://twitter.com/vanderaj/lists
‫مناسب‬ ‫زیر‬ ‫مورد‬ ‫و‬‫نم‬‫ی‬‫باشد‬
https://example.com/controller/123/action?apiKey=a53f435643de32 because API Key is into the URL.
‫بازگشتی‬ ‫کدهای‬HTTP
‫پروتکل‬ ‫در‬HTTP‫اعیتی‬‫ا‬‫وض‬ ‫کدهای‬‫را‬ ‫زیر‬‫م‬‫ی‬‫توان‬‫برا‬‫ی‬REST‫کرد‬ ‫تعریف‬.‫وقت‬‫ی‬‫که‬‫طراحی‬‫یک‬REST API‫از‬ ‫تنیا‬
‫وضاااعیت‬ ‫کد‬ ‫دو‬200‫برای‬‫پ‬‫یام‬‫های‬‫موفقیت‬‫آمی‬‫ز‬‫و‬404‫برای‬‫پ‬‫یام‬‫های‬‫اساااتفاده‬ ‫خطا‬‫می‬‫کند‬‫به‬ ‫نسااابت‬ ‫دقیقی‬ ‫اطالعات‬ ‫؛‬
‫خطای‬‫واردشده‬‫به‬‫استفاده‬‫کننده‬‫داده‬‫نم‬‫ی‬‫شود‬‫پیشنیاد‬ ‫پاسخ‬ ‫بیتر‬ ‫ارائه‬ ‫برای‬ .‫می‬‫شود‬‫کد‬ ‫از‬‫وضع‬‫یت‬‫های‬‫است‬‫زیر‬ ‫اندارد‬‫در‬
.‫شود‬ ‫استفاده‬ ‫پاسخ‬
8
Cross Origin Resource Sharing
‫فیرست‬‫ی‬‫به‬ ‫مربوط‬ ‫خطای‬ ‫از‬RESTful‫ب‬‫یان‬‫شده‬.‫است‬
DecriptionMessageCode
Response to a successful REST API action.
The HTTP method can be GET, POST, PUT,
PATCH or DELETE.
OK200
The request has been fulfilled and resource
created. A URI for the created resource is
returned in the Location header.
Created201
The request has been accepted for
processing, but processing is not yet
complete.
Accepted202
Permanent redirection.Moved Permanently301
Caching related response that returned when
the client has the same copy of the resource
as the server.
Not Modified304
Temporary redirection of resource.Temporary Redirect307
The request is malformed, such as message
body format error.
Bad Request
400
Wrong or no authentication ID/password
provided.
Unauthorized401
It's used when the authentication succeeded
but authenticated user doesn't have
permission to the request resource.
Forbidden403
When a non-existent resource is requested.
Not Found
404
The error for an unexpected HTTP method.
For example, the REST API is expecting
HTTP GET, but HTTP PUT is used.
Method Not
Acceptable405
The client presented a content type in the
Accept header which is not supported by the
server API.
Unacceptable
406
Use it to signal that the request size exceeded
the given limit e.g. regarding file uploads.
Payload too large413
The requested content type is not supported
by the REST service.
Unsupported Media
Type415
The error is used when there may be DOS
attack detected or the request is rejected due
to rate limiting.
Too Many Requests
429
An unexpected condition prevented the
server from fulfilling the request. Be aware
that the response should not reveal internal
Internal Server Error
500
information that helps an attacker, e.g.
detailed error messages or stack traces.
The REST service does not implement the
requested operation yet.
Not Implemented
501
The REST service is temporarily unable to
process the request. Used to inform the client
it should retry at a later time.
Service Unavailable
503
‫دسترسی‬ ‫حداقل‬ ‫سیاست‬
‫دسااترساای‬ ‫مجوزهای‬9
‫پ‬‫یش‬‫فرض‬‫ساارویس‬‫می‬‫باید‬‫حداقلی‬‫باشااد؛‬‫به‬‫عبارت‬‫دیگر‬ ‫ی‬،‫مادامی‬‫که‬‫کاربر‬API‫نیاز‬‫به‬‫مجوز‬
‫ای‬‫ا‬‫خاص‬،‫ندارد‬‫لزومی‬‫به‬‫اه‬‫ا‬‫عرض‬‫آن‬‫ات‬‫ا‬‫نیس‬‫چراکه‬‫هرچه‬‫مجوزهای‬ ‫ارویس‬‫ا‬‫س‬‫اتری‬‫ا‬‫بیش‬‫اته‬‫ا‬‫داش‬،‫اد‬‫ا‬‫باش‬‫احتمال‬‫بروز‬‫رفتاری‬
‫غیرقابل‬‫انتظار‬‫از‬‫آن‬‫بیشتر‬‫خواهد‬‫شد‬.
‫رد‬ ‫سیاست‬ ‫اعمال‬10
‫کردن‬‫پ‬‫یش‬‫فرض‬
‫هر‬ ‫به‬ ‫کاربران‬ ‫دساترسای‬ ‫ساط‬‫سارویسای‬‫پیش‬ ‫صاورت‬ ‫به‬ ‫سارور‬ ‫سامت‬ ‫در‬‫باشاد‬ ‫مسادود‬ ‫فرض‬.‫مجوز‬ ‫نیاز‬ ‫صاورت‬ ‫در‬
‫برای‬ ‫دسترسی‬‫خاص‬ ‫کاربر‬.‫شود‬ ‫صادر‬
‫از‬ ‫استفاده‬ ‫عدم‬‫داده‬‫ها‬‫ی‬‫کش‬11
‫هویت‬ ‫احراز‬ ‫در‬
‫َش‬‫ک‬ ‫دیتای‬ ‫مبنای‬ ‫بر‬ ‫نباید‬ ‫هرگز‬ ‫سرویس‬‫دسترسی‬ ‫سط‬ ‫شده‬‫کند‬ ‫مدیریت‬ ‫را‬ ‫ها‬.
‫عبور‬ ‫رمز‬ ‫سازی‬ ‫هم‬ ‫در‬
‫پس‬‫سازی‬ ‫درهم‬ ‫از‬12
‫کلیه‬‫اطالعات‬‫حساس‬‫کاربران‬‫همچون‬‫پسوردهای‬‫ش‬،‫می‬‫توان‬‫این‬‫تضمین‬‫را‬‫ایجاد‬‫کرد‬‫که‬‫اگر‬‫بنا‬
‫به‬‫هر‬‫دلیلی‬‫اتم‬‫ا‬‫ایس‬‫ا‬‫س‬،‫گرفت‬ ‫قرار‬ ‫خطر‬ ‫معرض‬ ‫در‬‫داده‬‫های‬‫کاربران‬‫ناخوانا‬‫خواهند‬‫بود‬‫او‬ ‫حیاتی‬ ‫و‬ ‫ای‬‫ا‬‫اخص‬‫ا‬‫ش‬ ‫اطالعاتی‬ ‫و‬
‫فاش‬‫نم‬‫ی‬‫شود‬.
‫گرفتن‬ ‫نظر‬ ‫در‬Timestamp‫ارسال‬ ‫حین‬ ‫در‬‫درخواست‬
‫سااارویس‬ ‫وب‬ ‫روی‬ ‫اسااات‬ ‫ممکن‬ ‫که‬ ‫حمالتی‬ ‫انواع‬ ‫از‬ ‫یکی‬‫گردد‬ ‫ِعمال‬‫ا‬ ‫ها‬Brute Force‫افزودن‬ ‫منظور‬ ‫به‬ ‫که‬ ‫اسااات‬
‫یک‬‫الیه‬‫امنیتی‬‫به‬‫وب‬‫اارویس‬‫ا‬‫س‬‫خود‬‫می‬‫توان‬‫در‬‫کلیه‬‫اات‬‫ا‬‫درخواس‬‫ها‬‫یک‬ ‫از‬Timestamp‫این‬ ‫افزودن‬ ‫با‬ .‫نمود‬ ‫ااتفاده‬‫ا‬‫اس‬
9
permission
10
Deny
11
chash
12
hash
‫ارسال‬ ‫سرور‬ ‫برای‬ ‫درخواستی‬ ‫که‬ ‫دفعه‬ ‫هر‬ ،‫پارامتر‬‫م‬‫ی‬‫شو‬‫د‬‫می‬ ،‫توان‬‫زمان‬‫با‬ ‫را‬ ‫فعلی‬‫زمان‬‫درج‬‫در‬ ‫شده‬‫درخواست‬‫مق‬‫ایسه‬
‫اجازه‬ ً‫ا‬‫صرف‬ ‫و‬ ‫کرده‬‫مدیریت‬‫درخواست‬‫هایی‬‫را‬‫داد‬‫که‬‫در‬‫یک‬‫بازه‬‫زمانی‬‫معقول‬(ً‫ال‬‫مث‬1‫الی‬2)‫دقیقه‬‫سرور‬ ‫در‬ ‫و‬ ‫ارسال‬
‫دریافت‬‫شده‬‫اند‬‫کار‬ ‫این‬ .‫وقوع‬ ‫از‬‫حمالت‬‫ی‬‫تاییر‬ ‫بدون‬ ‫هکر‬ ‫آن‬ ‫در‬ ‫که‬Timestamp‫تا‬ ‫دارد‬ ‫قصد‬‫درخواست‬‫تکراری‬ ‫های‬
‫می‬ ‫را‬ ‫کند‬ ‫ارسال‬ ‫سرور‬ ‫سمت‬ ‫به‬‫گیرد‬.
‫پارامترها‬ ‫اعتبارسنجی‬
‫انجام‬ ‫از‬ ‫پیش‬‫هرگونه‬‫به‬ ‫اقدام‬ ً‫ا‬‫اصطالح‬ ‫تا‬ ‫است‬ ‫نیاز‬ ،‫سرور‬ ‫سمت‬ ‫در‬ ‫عملیاتی‬‫اعتبارسنج‬‫ی‬13
‫در‬ .‫کنیم‬ ‫ارسالی‬ ‫پارامترهای‬
‫می‬ ،‫ارتباط‬ ‫این‬‫ساااخت‬ ‫قوانین‬ ‫باید‬‫گیرانه‬‫ب‬ ‫نظر‬ ‫در‬ ‫ورودی‬ ‫پارامترهای‬ ‫برای‬ ‫ای‬‫چنانچه‬ ‫و‬ ‫گیریم‬‫درخواساااتی‬‫نت‬‫از‬ ‫وانسااات‬
‫فیلترهای‬‫می‬ ،‫کند‬ ‫عبور‬ ‫اعتبارساانجی‬‫انجام‬ ‫جلوی‬ ‫باید‬‫فعالیت‬‫پیام‬ ‫و‬ ‫گرفته‬ ‫را‬ ‫مربوطه‬‫در‬ ‫مرتبطی‬ ‫خطای‬ ‫های‬‫قالب‬‫پاسااخ‬
‫کاربر‬ ‫اختیار‬ ‫در‬‫دهد‬ ‫قرار‬.
‫تشکر‬ ‫با‬
‫موسوی‬ ‫مسعود‬ ‫سید‬
13
Validation

Recomendados

معرفي فايروال پايگاه داده von
معرفي فايروال پايگاه دادهمعرفي فايروال پايگاه داده
معرفي فايروال پايگاه دادهHamid Torkashvand
411 views4 Folien
راهنمای کامل راه اندازی الاستیک سرچ و استفاده آن در شرکت گارتکس von
راهنمای کامل راه اندازی الاستیک سرچ و استفاده آن در شرکت گارتکسراهنمای کامل راه اندازی الاستیک سرچ و استفاده آن در شرکت گارتکس
راهنمای کامل راه اندازی الاستیک سرچ و استفاده آن در شرکت گارتکسSeied Mahdi Sadat Hosseini
97 views43 Folien
Microsoft BI Sumery von
Microsoft BI SumeryMicrosoft BI Sumery
Microsoft BI SumeryReza Bahadorizadeh
64 views2 Folien
Soap vs restful von
Soap vs  restfulSoap vs  restful
Soap vs restfulsajjad Mohammadi
29 views20 Folien
1st Hadoop Tehran Workshop - اسلاید اولین کارگاه آموزش هدوپ تهران von
1st Hadoop Tehran Workshop - اسلاید اولین کارگاه آموزش هدوپ تهران1st Hadoop Tehran Workshop - اسلاید اولین کارگاه آموزش هدوپ تهران
1st Hadoop Tehran Workshop - اسلاید اولین کارگاه آموزش هدوپ تهرانFarafekr Technology
2.2K views81 Folien

Más contenido relacionado

Similar a لحاظ کردن موارد امنیتی در طراحی سرویس‌های از نوع RESTFUL

گاهنامه چهارمحال و_بختیاری_دیماه von
گاهنامه چهارمحال و_بختیاری_دیماهگاهنامه چهارمحال و_بختیاری_دیماه
گاهنامه چهارمحال و_بختیاری_دیماهtarasad
114 views22 Folien
مجازي سازي، مجازى سازى von
مجازي سازي، مجازى سازىمجازي سازي، مجازى سازى
مجازي سازي، مجازى سازىmarketingfarkhad
1.8K views7 Folien
Keydoc presentation (1) von
Keydoc presentation (1)Keydoc presentation (1)
Keydoc presentation (1)danesh hamara
66 views15 Folien
پلتفرمهای نرم افزاری و سخت افزاری پیاده سازی راهکارهای اینترنت اشیاء von
پلتفرمهای نرم افزاری و سخت افزاری پیاده سازی راهکارهای اینترنت اشیاءپلتفرمهای نرم افزاری و سخت افزاری پیاده سازی راهکارهای اینترنت اشیاء
پلتفرمهای نرم افزاری و سخت افزاری پیاده سازی راهکارهای اینترنت اشیاءstartupIoT
2.1K views56 Folien
ESB von
ESBESB
ESBHamed Hatami
1.1K views11 Folien
OpenStack and its service von
OpenStack and its serviceOpenStack and its service
OpenStack and its serviceYashar Esmaildokht
118 views75 Folien

Similar a لحاظ کردن موارد امنیتی در طراحی سرویس‌های از نوع RESTFUL(20)

گاهنامه چهارمحال و_بختیاری_دیماه von tarasad
گاهنامه چهارمحال و_بختیاری_دیماهگاهنامه چهارمحال و_بختیاری_دیماه
گاهنامه چهارمحال و_بختیاری_دیماه
tarasad114 views
مجازي سازي، مجازى سازى von marketingfarkhad
مجازي سازي، مجازى سازىمجازي سازي، مجازى سازى
مجازي سازي، مجازى سازى
marketingfarkhad1.8K views
پلتفرمهای نرم افزاری و سخت افزاری پیاده سازی راهکارهای اینترنت اشیاء von startupIoT
پلتفرمهای نرم افزاری و سخت افزاری پیاده سازی راهکارهای اینترنت اشیاءپلتفرمهای نرم افزاری و سخت افزاری پیاده سازی راهکارهای اینترنت اشیاء
پلتفرمهای نرم افزاری و سخت افزاری پیاده سازی راهکارهای اینترنت اشیاء
startupIoT2.1K views
مقدمه ای بر هوش تجاری von Zahra Mansoori
مقدمه ای بر هوش تجاریمقدمه ای بر هوش تجاری
مقدمه ای بر هوش تجاری
Zahra Mansoori62 views
Blockchain proposal-corporation -partly von armanriazi
Blockchain proposal-corporation -partlyBlockchain proposal-corporation -partly
Blockchain proposal-corporation -partly
armanriazi65 views
2017 - مقاله چالشهای امنیتی در مدلهای رایانش ابری - نویسندگان: ناصری فرد و ... von Aidin NaseriFard
 2017  - مقاله چالشهای امنیتی در مدلهای رایانش ابری - نویسندگان: ناصری فرد و ... 2017  - مقاله چالشهای امنیتی در مدلهای رایانش ابری - نویسندگان: ناصری فرد و ...
2017 - مقاله چالشهای امنیتی در مدلهای رایانش ابری - نویسندگان: ناصری فرد و ...
Aidin NaseriFard489 views
Spring security configuration von Hamid Ghorbani
Spring security configurationSpring security configuration
Spring security configuration
Hamid Ghorbani1.2K views
Opendata and business - داده های باز و کسب و کار von efazati
Opendata and business - داده های باز و کسب و کار Opendata and business - داده های باز و کسب و کار
Opendata and business - داده های باز و کسب و کار
efazati147 views
cloud computing , رایانش ابری von vhd-abdarbashi
cloud computing , رایانش ابریcloud computing , رایانش ابری
cloud computing , رایانش ابری
vhd-abdarbashi1.2K views

لحاظ کردن موارد امنیتی در طراحی سرویس‌های از نوع RESTFUL

  • 1. ‫کردن‬ ‫لحاظ‬‫امن‬ ‫موارد‬‫ی‬‫ت‬‫ی‬‫طراح‬ ‫در‬‫ی‬‫سرو‬‫ی‬‫س‬‫ها‬‫ی‬‫نوع‬ ‫از‬RESTFUL ‫موسوی‬ ‫مسعود‬ ‫سید‬ ‫ایمیل‬ Mousavi.2020@gmail.com ‫لینکدین‬ https://www.linkedin.com/in/seyed-masoud-mousavi-57374044/
  • 2. ‫فه‬‫مطالب‬ ‫رست‬ 1-‫مقدمه‬..........................................................................................................................1 1-1-‫معرف‬‫ی‬REST.........................................................................................................................1 1-2-‫معرف‬‫ی‬RESTFUL....................................................................................................................1 1-3-RESTFUL API.......................................................................................................................2 1-4-JSON................................................................................................................................2 1-5-‫اهم‬‫ی‬‫ت‬‫امن‬‫ی‬‫ت‬‫در‬RESTFUL.........................................................................................................2 2-‫موارد‬‫امن‬‫ی‬‫ت‬‫ی‬‫در‬RESTFUL..................................................................................................2
  • 3. 1-‫مقدمه‬ 1-1-‫معرفی‬Rest ‫برنامه‬ ‫رابط‬‫نویسی‬‫کاربردی‬ ‫برنامه‬‫به‬ ‫یا‬‫اختصار‬API‫مجموعه‬‫روش‬ ‫از‬ ‫ای‬‫های‬‫تعریف‬‫اجزای‬ ‫بین‬ ‫ارتباطات‬ ‫از‬ ‫مشخص‬ ‫شده‬ ‫نرم‬‫یک‬ .‫ست‬‫ا‬ ‫مختلف‬ ‫افزاری‬API‫فراهم‬ ‫با‬ ‫خوب‬‫اجزای‬ ‫تمام‬ ‫سازی‬‫موردن‬‫یاز‬‫می‬ ‫باعث‬ ‫ساخت‬ ‫برای‬‫یک‬ ‫سعه‬‫تو‬ ‫تا‬ ‫شود‬ ‫ساااده‬ ‫کامپیوتری‬ ‫برنامه‬‫مجموعه‬ ‫اینجا‬ ‫در‬ .‫شااود‬ ‫انجام‬ ‫تر‬‫برنامه‬ ‫به‬ ‫که‬ ‫دارد‬ ‫وجود‬ ‫قوانین‬ ‫از‬ ‫ای‬‫می‬ ‫اجازه‬ ‫ها‬‫یکدیگر‬ ‫با‬ ‫دهد‬ ‫گفت‬‫توساااعه‬ .‫کنند‬ ‫وگو‬،‫دهنده‬API‫می‬ ‫ایجاد‬ ‫سااارور‬ ‫روی‬ ‫را‬‫می‬ ‫اجازه‬ ‫کالینت‬ ‫به‬ ‫و‬ ‫کند‬‫گفت‬ ‫آن‬ ‫با‬ ‫دهد‬.‫کند‬ ‫وگو‬‫با‬ ‫وجود‬‫این‬‫مشاااخصاااه‬ ‫که‬‫های‬API‫فراهم‬ ‫نیایی‬ ‫هده‬ ،‫اسااات‬ ‫متفاوت‬ ‫یکدیگر‬ ‫با‬ ‫مختلف‬ ‫های‬‫برای‬ ‫امکاناتی‬ ‫ساااازی‬ ‫برنامه‬‫به‬ ‫طریق‬ ‫از‬ ‫تا‬ ‫است‬ ‫نویسان‬‫کا‬‫ارائه‬ ‫خدمات‬ ‫رگیری‬‫توسط‬ ‫شده‬API‫نرم‬ ‫توسعه‬ ‫به‬‫معروه‬ .‫بپردازند‬ ‫خود‬ ‫افزاری‬‫ترین‬ ‫برای‬ ‫روش‬‫ارائه‬API‫ها‬‫ی‬‫وب‬REST‫است‬. REST1‫نرم‬ ‫معماری‬ ‫یک‬‫پروتکل‬ ‫و‬ ‫سی‬‫سا‬‫ا‬ ‫صیات‬ ‫صو‬‫خ‬ ‫از‬ ‫سیاری‬‫ب‬ ‫که‬ ‫ست‬‫ا‬ ‫ستقل‬‫م‬ ‫افزاری‬‫کالینت‬ ‫رفتار‬ ‫که‬ ‫هایی‬‫و‬ ‫ها‬ ‫می‬ ‫کنترل‬ ‫را‬ ‫سرورها‬‫کنند‬‫را‬‫می‬ ‫فراهم‬‫این‬ .‫کند‬‫طراحی‬ ‫در‬ ‫رویکرد‬API‫سم‬‫مکانی‬ ‫مزایای‬ ‫همان‬ ‫از‬‫اینترنتی‬ ‫های‬(‫بر‬ ‫مبتنی‬ ‫پروتکل‬HTTP)‫بیره‬‫می‬ ‫مند‬‫می‬ ‫استفاده‬ ‫وب‬ ‫معمولی‬ ‫صفحات‬ ‫نمایش‬ ‫برای‬ ‫که‬ ‫شود‬‫پیاده‬ ‫مزیت‬ ‫همان‬ ‫بنابراین‬ ،‫شود‬‫سازی‬ ‫سریع‬.‫داشت‬ ‫خواهد‬ ‫وجود‬ ‫نیز‬ ‫اینجا‬ ‫در‬ ‫توسعه‬ ‫سادگی‬ ‫و‬ ‫تر‬‫ازآنجاکه‬REST API‫از‬ ‫ها‬HTTP‫می‬ ‫استفاده‬‫عمل‬ ‫در‬ ‫کنند‬ ‫می‬‫آن‬ ‫توان‬‫برنامه‬ ‫زبان‬ ‫هر‬ ‫در‬ ‫را‬ ‫ها‬‫کرد‬ ‫استفاده‬ ‫نویسی‬. 1-2-‫معرفی‬RESTful ‫هر‬API‫ویژگی‬ ‫که‬،‫باشد‬ ‫داشته‬ ‫را‬ ‫زیر‬ ‫های‬‫عنوان‬ ‫به‬‫یک‬RESTful API‫می‬ ‫شناخته‬‫شود‬: ‫کالینت‬ ‫معماری‬‫ا‬‫کالینت‬ :‫سرور‬‫عنوان‬ ‫به‬front-end‫سرور‬ ‫و‬‫عنوان‬ ‫به‬back-end‫می‬ ‫شناخته‬‫نکته‬ ‫این‬ ‫به‬ .‫شود‬ ‫توجه‬ ‫میم‬‫شود‬‫که‬‫هردو‬‫ی‬‫هستند‬ ‫یکدیگر‬ ‫از‬ ‫مستقل‬. ‫داده‬ ‫هیچ‬ :‫مستقل‬‫پردازش‬ ‫زمان‬ ‫در‬ ‫نباید‬ ‫ای‬،‫انتقال‬‫و‬‫جلسه‬ ‫وضعیت‬ .‫شود‬ ‫ذخیره‬ ‫سرور‬ ‫روی‬ ‫درخواست‬2‫با‬‫ید‬‫در‬ ‫شود‬ ‫ذخیره‬ ‫کالینت‬ ‫سمت‬. ‫پاسخ‬ ‫که‬ ‫باشد‬ ‫داشته‬ ‫را‬ ‫توانایی‬ ‫این‬ ‫باید‬ ‫کالینت‬ :‫شدن‬ ‫کش‬ ‫قابل‬‫کاری‬ ‫چنین‬ .‫کند‬ ‫ذخیره‬ ‫کش‬ ‫یک‬ ‫در‬ ‫را‬ ‫ها‬ ً‫ال‬‫اصو‬‫عملکرد‬API‫می‬ ‫بیبود‬ ‫را‬‫بخشد‬. 1 Representational State Transfer 2 session
  • 4. 1-3-RESTful API RESTful API‫یک‬ ‫عنوان‬ ‫با‬ ‫که‬RESTful‫می‬ ‫شناخته‬ ‫نیز‬ ‫وب‬ ‫سرویس‬‫شود‬)‫از‬ ‫استفاده‬ ‫با‬ ‫که‬ ‫است‬ ‫وب‬ ‫سرویس‬ ‫یک‬ ‫پروتکل‬HTTP‫اصول‬ ‫و‬REST‫پیاده‬‫می‬ ‫سازی‬‫مجموعه‬ ‫شامل‬ ‫و‬ ‫شود‬‫که‬ ‫است‬ ‫منابع‬ ‫از‬ ‫ای‬‫متدهای‬HTTP GET, PUT, POST, DELETE‫می‬ ‫خدمت‬ ‫به‬ ‫را‬‫منابع‬ ‫از‬ ‫مجموعه‬ ‫این‬ .‫گیرد‬‫درنیا‬‫یت‬‫اساااتاندارد‬ ‫فرم‬ ‫یک‬ ‫در‬ً‫ال‬‫معمو‬XML‫که‬ ‫می‬‫می‬ ‫ارائه‬ ،‫باشد‬ ‫معتبر‬ ‫اینترنت‬ ‫رسانه‬ ‫نوع‬ ‫هر‬ ‫تواند‬‫شود‬. RESTful API‫از‬ ‫استفاده‬ ‫به‬ ‫قادر‬ ‫ها‬HTTP‫به‬ ،‫اجرا‬ ،‫ساخت‬ ‫عملیات‬ ‫انجام‬ ‫برای‬‫و‬ ‫روزرسانی‬.‫هستند‬ ‫منابع‬ ‫و‬ ‫داده‬ ‫حذه‬ ‫فرمت‬‫درخواست‬ ‫های‬RESTful API‫شامل‬ ‫معروه‬REST،XML-RPC،SOAP‫فرمت‬ .‫است‬‫پاسخ‬ ‫های‬RESTful API‫شامل‬ ‫نیز‬ ‫معروه‬REST،XML-RPC،SOAP،JSON‫و‬PHP‫هستند‬. 1-4-JSON JSON3‫برنامه‬ ‫به‬ ‫که‬ ‫است‬ ‫روشی‬‫می‬ ‫اجازه‬ ‫ها‬‫بپردازن‬ ‫اطالعات‬ ‫تبادل‬ ‫به‬ ‫دهد‬.‫د‬API‫ها‬‫برنامه‬ ‫برای‬ ‫روشی‬‫بتوانند‬ ‫تا‬ ‫هستند‬ ‫ها‬ ‫اما‬ ،‫کنند‬ ‫برقرار‬ ‫ارتباط‬ ‫یکدیگر‬ ‫با‬‫ازآنجاکه‬‫آن‬‫داده‬ ‫بتوانند‬ ‫تا‬ ‫دارند‬ ‫نیاز‬ ‫شی‬ ‫رو‬ ‫به‬ ،‫ندارند‬ ‫تکلم‬ ‫قدرت‬ ‫ها‬‫را‬ ‫اطالعاتی‬ ‫و‬ ‫ها‬ ‫کنند‬ ‫توصیف‬ ،‫هستند‬ ‫آن‬ ‫تبادل‬ ‫حال‬ ‫در‬ ‫که‬. JSON‫داده‬ ‫جداسازی‬ ‫برای‬‫معنا‬ ‫ساختاری‬ ‫اطالعات‬ ‫دادن‬ ‫و‬ ‫ها‬‫ب‬ ‫از‬ ‫دار‬،‫راکت‬ ‫نقل‬‫می‬ ‫اساااتفاده‬ ‫کاما‬ ‫و‬ ‫کولون‬ ،‫قول‬،‫کند‬‫ا‬ ‫به‬‫ین‬‫ترت‬‫یب‬‫می‬ ‫کامپیوترها‬‫یا‬ ‫خانوادگی‬ ‫نام‬ ،‫نام‬ ‫بین‬ ‫تفاوت‬ ‫توانند‬‫ه‬‫رگونه‬ ‫به‬ ‫که‬ ‫را‬ ‫دیگری‬ ‫اطالعات‬‫داده‬ ‫این‬ ‫بالقوه‬ ‫طور‬‫می‬ ‫توصیف‬ ‫را‬ ‫ها‬‫دهند‬ ‫تشخیص‬ ،‫کند‬. JSON‫روش‬ ‫از‬ ‫یکی‬ ‫به‬‫های‬‫موردعالقه‬‫برنامه‬‫فعال‬ ‫برای‬ ‫نویسااان‬‫ارت‬ ‫سااازی‬‫باطات‬API‫تبدیل‬‫روش‬ ‫این‬ ‫با‬ .‫اساات‬ ‫شااده‬ ‫می‬‫درحالی‬ ،‫اینترنت‬ ‫محیط‬ ‫در‬ ‫داده‬ ‫تبادل‬ ‫برای‬ ‫را‬ ‫سااابک‬ ‫و‬ ‫سااااده‬ ‫راهکار‬ ‫یک‬ ‫توان‬‫حف‬ ‫داده‬ ‫این‬ ‫معنای‬ ‫و‬ ‫سااااختار‬ ‫که‬ ‫می‬‫کرد‬ ‫فراهم‬ ،‫شود‬. 1-5-‫در‬ ‫امنیت‬ ‫اهمیت‬RESTful ‫امنیت‬API‫بزرگ‬‫سازمان‬ ‫که‬ ‫ست‬ ‫ا‬ ‫شی‬ ‫چال‬ ‫ترین‬‫سال‬ ‫طی‬ ‫تا‬ ‫ستند‬ ‫ه‬ ‫آن‬ ‫دنبال‬ ‫به‬ ‫ها‬‫های‬‫ساس‬ ‫ا‬ ‫بر‬ .‫شود‬ ‫برطره‬ ‫رو‬ ‫پیش‬ ‫انجام‬ ‫تحقیقات‬‫گرفته‬SmartBear‫شناخته‬ ‫فناوری‬ ‫یک‬ ‫شماره‬ ‫چالش‬ ‫امنیت‬ ،.‫است‬ ‫شده‬41.2%‫مشارکت‬ ‫از‬‫این‬ ‫کنندگان‬ ‫کرده‬ ‫اعالم‬ ‫نیز‬ ‫تحقیق‬‫بزرگ‬ ‫امنیت‬ ،‫اند‬‫چالش‬ ‫ترین‬‫فناوری‬API‫آن‬ ‫که‬ ‫ست‬ ‫ا‬‫در‬ .‫شود‬ ‫برطره‬ ‫روزی‬ ،‫ستند‬ ‫ه‬ ‫امیدوار‬ ‫ها‬ ‫نیمی‬ ‫به‬ ‫نزدیک‬ ‫حاضر‬ ‫حال‬‫ارائه‬ ‫از‬‫دهندگان‬API‫امنیت‬ ‫آزمایش‬ ‫برای‬ ‫را‬ ‫ابزاری‬API‫گرفته‬ ‫خدمت‬ ‫به‬‫اند‬. ‫یک‬ ‫توسااعه‬ ‫و‬ ‫طراحی‬ ‫زمان‬ ‫در‬RESTful API‫جنبه‬‫گیرد‬ ‫قرار‬ ‫جدی‬ ‫موردتوجه‬ ‫باید‬ ‫امنیتی‬ ‫های‬‫بررساای‬ ‫به‬ ‫ادامه‬ ‫در‬ ‫که‬ ‫پرداخته‬ ‫آنان‬‫م‬‫ی‬‫شود‬. 2-‫موارد‬‫امنیت‬‫ی‬‫در‬RestFul 3 JavaScript Object Notation
  • 5. ‫و‬ ‫صه‬ ‫خال‬ ‫صورت‬ ‫به‬ ‫راهکارها‬ ‫که‬ ‫شده‬ ‫آن‬ ‫بر‬ ‫سعی‬ ‫ادامه‬ ‫در‬‫کاربرد‬‫ی‬‫در‬ ‫امنیت‬ ‫ایجاد‬ ‫بر‬‫سرو‬‫یس‬‫ها‬‫بر‬ ‫مبتنی‬REST‫ارائه‬ .‫شود‬ ‫پروتکل‬ ‫از‬ ‫استفاده‬HTTPS ‫ساارویس‬ ‫در‬ ‫ساارور‬ ‫و‬ ‫کالینت‬ ‫بین‬ ‫اطالعات‬ ‫انتقال‬‫های‬Restful‫امن‬ ‫کانال‬ ‫در‬ ‫باید‬HTTPS.‫پذیرد‬ ‫صااورت‬‫این‬ ‫غیر‬ ‫در‬ ‫در‬ ‫فردی‬ ‫حمالت‬ ‫صورت‬‫بود‬ ‫خواهد‬ ‫محتمل‬ ‫اطالعات‬ ‫شنود‬ ‫و‬ ‫میان‬ ‫دسترسی‬ ‫کنترل‬ ‫ارو‬‫ا‬‫س‬‫یس‬‫های‬‫هر‬ ‫برای‬ ‫ات‬‫ا‬‫اس‬‫ا‬‫نش‬ ‫مدیریت‬ ‫و‬ ‫ای‬‫ا‬‫اترس‬‫ا‬‫دس‬ ‫کنترل‬ ،‫کاربران‬ ‫هویت‬ ‫احراز‬ ‫باید‬ ‫ات‬‫ا‬‫نیس‬ ‫عمومی‬ ‫که‬API‫اورت‬‫ا‬‫ص‬ .‫پذیرد‬ API Keys ‫برای‬‫سرو‬‫یس‬‫های‬‫اجرا‬ ‫سی‬ ‫ستر‬ ‫د‬ ‫کنترل‬ ‫بدون‬ ‫که‬ ‫عمومی‬‫م‬‫ی‬‫شود‬‫گرفت‬ ‫نظر‬ ‫در‬ ‫سک‬ ‫ری‬ ‫این‬ ‫باید‬‫شود‬ ‫ه‬‫ممک‬ ‫که‬‫ست‬ ‫ا‬ ‫ن‬ ‫باند‬ ‫پینای‬‫سا‬‫یساتم‬‫اشاتاال‬ ‫زیادی‬ ‫طرز‬ ‫به‬‫شاود‬.API Keys‫کاهش‬ ‫برای‬‫ا‬‫ین‬‫گونه‬‫از‬‫ریساک‬‫مورداساتفاده‬‫قرار‬‫م‬‫ی‬‫گیرد‬. ‫اغلب‬ ‫هم‬ ‫گاهی‬‫اازمان‬‫ا‬‫س‬‫ها‬‫م‬‫ی‬‫توانند‬‫این‬ ‫از‬API‫کرد‬ ‫ادود‬‫ا‬‫مس‬ ‫جای‬ ‫به‬ .‫کنند‬ ‫درآمد‬ ‫اب‬‫ا‬‫کس‬‫اال‬‫ا‬‫اتص‬‫ها‬‫یی‬4 ‫با‬‫فرکانس‬،‫باال‬ ‫سازمان‬‫م‬‫ی‬‫توان‬‫با‬ ‫دسترسی‬ ‫کنترل‬ ‫برنامه‬‫هز‬‫ینه‬‫های‬‫به‬ ‫متفاوتی‬‫مشتریان‬‫کند‬ ‫عرضه‬.‫عالوه‬‫این‬ ‫بر‬API KEY‫ها‬‫م‬‫ی‬‫توانند‬ ‫حمله‬ ‫خطر‬DOS.‫دهد‬ ‫کاهش‬ ‫سرور‬ ‫را‬‫درع‬‫ین‬‫حال‬.‫است‬ ‫تطبیق‬ ‫قابل‬ ‫راحتی‬ ‫به‬ ‫ثالث‬ ‫مشتریان‬ ‫از‬ ‫استفاده‬ ‫برای‬ ‫کلیدهای‬API‫از‬ ‫سیاری‬ ‫ب‬ ‫سط‬ ‫تو‬API‫می‬ ‫ستفاده‬ ‫ا‬ ‫وب‬ ‫های‬‫از‬ ‫نوعی‬ ‫تا‬ ‫شوند‬‫کلیدهای‬ .‫کنند‬ ‫فراهم‬ ‫را‬ ‫سی‬ ‫ستر‬ ‫د‬ ‫کنترل‬ API‫درواقع‬‫نمی‬ ‫و‬ ‫هستند‬ ‫کاربر‬ ‫و‬ ‫اپلیکیشن‬ ‫تشخیص‬ ‫و‬ ‫شناسایی‬ ‫برای‬ ‫ابزاری‬‫آن‬ ‫توان‬‫امنیت‬ ‫پروتکل‬ ‫یک‬ ‫را‬ ‫ها‬‫و‬ ‫مستقل‬ ‫ی‬ ‫خدمات‬ .‫گرفت‬ ‫نظر‬ ‫در‬ ‫کامل‬REST‫عمومی‬‫می‬ ‫و‬ ‫هسااتند‬ ‫مواجه‬ ‫تیدیداتی‬ ‫با‬ ‫دسااترساای‬ ‫کنترل‬ ‫بدون‬‫کلیدهای‬ ‫از‬ ‫توان‬ API‫ک‬ ‫کم‬ ‫برای‬‫سازمان‬ .‫کرد‬ ‫استفاده‬ ‫تیدیدات‬ ‫این‬ ‫ردن‬‫از‬ ‫درآمد‬ ‫کسب‬ ‫برای‬ ‫شیوه‬ ‫این‬ ‫از‬ ‫اغلب‬ ‫ها‬API‫می‬ ‫استفاده‬،‫کنند‬ ‫که‬ ‫شکل‬ ‫این‬ ‫به‬‫بجا‬‫ی‬‫کردن‬ ‫مسدود‬‫اساس‬ ‫بر‬ ‫مشتریان‬ ‫به‬ ‫سرویس‬ ‫کل‬ ‫گذاشتن‬ ‫باز‬ ‫یا‬‫برنامه‬‫خرید‬ ‫دسترسی‬‫اری‬‫اجازه‬ ‫شده‬ ‫می‬ ‫داده‬ ‫دسترسی‬‫شود‬. ً‫ال‬‫معمو‬‫کلید‬ ‫یک‬API‫کامل‬ ‫ای‬‫ا‬‫اترس‬‫ا‬‫دس‬ ‫امکان‬‫یک‬ ‫که‬ ‫را‬ ‫اعمالی‬ ‫تمام‬ ‫به‬API‫می‬ ‫فراهم‬ ،‫ات‬‫ا‬‫اس‬ ‫آن‬ ‫انجام‬ ‫به‬ ‫قادر‬‫که‬ ‫کند‬ ‫داده‬ ‫واردکردن‬ ‫شااامل‬‫داده‬ ‫حذه‬ ‫و‬ ‫جدید‬ ‫های‬‫می‬ ‫نیز‬ ‫موجود‬ ‫های‬‫کلید‬ ‫یک‬ ‫از‬ ‫شااما‬ ‫اگر‬ .‫شااود‬API‫چند‬ ‫در‬ ‫یکسااان‬ ‫می‬ ‫شن‬ ‫اپلیکی‬ ‫یک‬ ‫در‬ ‫نقص‬ ،‫کنید‬ ‫ستفاده‬ ‫ا‬ ‫شن‬ ‫اپلیکی‬‫داده‬ ‫تواند‬‫ضی‬ ‫بع‬ .‫ببرد‬ ‫بین‬ ‫از‬ ‫را‬ ‫شما‬ ‫کاربران‬ ‫های‬‫شن‬ ‫اپلیکی‬ ‫از‬‫به‬ ‫ها‬ ‫می‬ ‫اجازه‬ ‫کاربران‬‫کلیدهای‬ ‫تا‬ ‫دهند‬API‫کلید‬ ‫یک‬ ‫تاییر‬ ‫توانایی‬ .‫کنند‬ ‫لاو‬ ‫را‬ ‫نامعتبر‬ ‫کلیدهای‬ ‫یا‬ ‫کنند‬ ‫تولید‬ ‫جدید‬API ‫محدودیت‬‫می‬ ‫کاهش‬ ‫را‬ ‫امنیتی‬ ‫های‬‫دهد‬. 4 Connection
  • 6. ‫متدهای‬ ‫کردن‬ ‫محدود‬HTTP ‫پروتکل‬ ‫از‬ ‫مشخصی‬ ‫متدهای‬ ‫از‬HTTP‫سفید‬ ‫لیست‬ ‫در‬ ‫که‬5 ‫قرار‬‫داده‬‫ا‬‫ید‬‫استفا‬.‫شود‬ ‫ده‬‫به‬‫عنوان‬‫مثال‬‫سرور‬ ‫در‬ ‫تنیا‬ ‫شما‬‫م‬‫ی‬‫توان‬‫متد‬ ‫از‬GET،PUT،POST‫پروتکل‬HTTP.‫کرد‬ ‫استفاده‬ ‫کردن‬ ‫رد‬‫همه‬‫ی‬‫درخواست‬‫ها‬‫ی‬‫این‬ ‫به‬ ‫پاسخ‬ ‫در‬ .‫است‬ ‫تعارض‬ ‫در‬ ‫سفید‬ ‫لیست‬ ‫با‬ ‫که‬‫درخواست‬‫ها‬‫م‬‫ی‬‫تو‬‫ان‬ ‫کد‬ ‫شماره‬405 Method not allowed‫استفاده‬‫کرد‬. ‫اعتبارسنج‬‫ی‬‫ورود‬‫ی‬‫ها‬ ‫اعتماد‬ ‫ورودی‬ ‫پارامترهای‬ ‫به‬‫نشود‬‫آنان‬ ‫تمامی‬ ‫و‬‫اعتبارسنج‬‫ی‬.‫شوند‬ ‫ارزیابی‬‫ورود‬‫ی‬‫ها‬‫(تعداد‬ ‫طول‬ :‫اساس‬ ‫بر‬‫کاراکترها‬/)( ‫محدوده‬‫رنج‬‫داده‬‫ها‬‫ی‬‫ورودی‬)‫نوع‬ ‫و‬ ‫فرمت‬ / .‫پذیرد‬ ‫انجام‬ ‫اعتبارسنجی‬‫ورود‬‫ی‬‫ها‬‫اساس‬ ‫بر‬‫نوع‬‫ها‬‫ی‬‫اولیه‬‫زبان‬‫ها‬‫ی‬‫برنامه‬‫نو‬‫یسی‬‫مانند‬numbers, Booleans dates, times.‫پذیرد‬ ‫صورت‬ ‫نیز‬ ‫رشته‬‫ها‬‫ی‬‫از‬ ‫استفاده‬ ‫با‬ ‫ورودی‬regexps‫کنید‬ ‫محدود‬. ‫سرور‬‫ورود‬‫ی‬‫های‬‫غیر‬‫پ‬‫یش‬‫بینی‬‫شده‬‫یا‬‫غ‬‫یرقانونی‬.‫نکند‬ ‫پذیرش‬ ‫و‬ ‫کند‬ ‫رد‬ ‫را‬ ‫گردد‬ ‫حاصل‬ ‫اطمینان‬‫کتابخانه‬‫ها‬‫ی‬‫استفاده‬ ‫برنامه‬ ‫در‬ ‫که‬‫م‬‫ی‬‫شود‬‫معتبر‬‫بررس‬‫ی‬‫شده‬‫د‬ ‫و‬ ‫هستند‬‫ارای‬ .‫نیستند‬ ‫مخرب‬ ‫کدهای‬ ‫حد‬ ‫یک‬ ‫کردن‬ ‫تعریف‬6 ‫کردن‬ ‫رد‬ ‫و‬ ‫درخواست‬ ‫از‬ ‫مناسب‬‫درخواست‬‫ها‬‫ی‬‫پاسخ‬ ‫با‬ ‫حد‬ ‫این‬ ‫از‬ ‫بیش‬ 413Request Entity Too Large ‫گرفتن‬ ‫نظر‬ ‫در‬LOGIN.‫شود‬ ‫گرفته‬ ‫نظر‬ ‫در‬ ‫آنان‬ ‫قبال‬ ‫در‬ ‫روشن‬ ‫سیاستی‬ ‫و‬ ‫سیستم‬ ‫به‬ ‫موفق‬ ‫غیر‬ ‫های‬ ‫دچار‬ ‫اولیه‬ ‫هویت‬ ‫احراز‬ ‫در‬ ‫ثانیه‬ ‫یک‬ ‫در‬ ‫بار‬ ‫صدها‬ ‫فرد‬ ‫یک‬ ‫کنید‬ ‫فرض‬‫حالت‬ ‫این‬ ،‫است‬ ‫شده‬ ‫شکست‬ ‫باال‬ ‫را‬ ‫دیکشنری‬ ‫حمله‬ ‫احتمال‬‫م‬‫ی‬‫رود‬.‫به‬‫عنوان‬‫مثال‬‫که‬ ‫سیاستی‬‫م‬‫ی‬‫تواند‬‫گردد‬ ‫لحاظ‬ ‫قسمت‬ ‫این‬ ‫در‬‫این‬ ‫کاربر‬ ‫اگر‬ ‫که‬ ‫است‬5‫آیپی‬ ‫با‬ ‫را‬ ‫کاربر‬ ‫این‬ ‫دسترسی‬ ‫سرور‬ ،‫شد‬ ‫مواجه‬ ‫شکست‬ ‫با‬ ‫هویت‬ ‫احراز‬ ‫در‬ ‫بار‬ ‫مدت‬ ‫به‬ ‫فوق‬15‫دقیقه‬‫غ‬‫یرفعال‬.‫کند‬ ‫یک‬ ‫از‬ ‫استفاده‬‫تجز‬‫یه‬‫کننده‬7 ‫کردن‬ ‫تجزیه‬ ‫برای‬ ‫ایمن‬ ‫پیام‬‫پ‬‫یام‬‫های‬.‫ورودی‬‫فرمت‬ ‫از‬ ‫اگر‬XML‫استفاده‬ ‫م‬‫ی‬‫شود‬‫مطمئن‬‫شوید‬‫که‬‫تجز‬‫یه‬‫کننده‬(parser‫حمالت‬ ‫به‬ ‫نسبت‬ )XXE‫غیره‬ ‫و‬‫آس‬‫یب‬‫پذیر‬.‫نیست‬ 5 White List 6 Limit parser7
  • 7. ‫اعتبارسنج‬‫ی‬‫پیام‬ ‫محتویات‬ ‫نوع‬ ‫فیلد‬ ‫در‬ ‫موجود‬ ‫محتوای‬ ‫نوع‬ ‫با‬ ‫باید‬ ‫سخ‬‫پا‬ ‫یا‬ ‫ست‬‫درخوا‬ ‫یک‬ ‫بدنه‬type‫این‬ ‫غیر‬ ‫در‬ ‫شد؛‬‫با‬ ‫شته‬‫دا‬ ‫همخوانی‬ ‫پیام‬ ‫سرآیند‬ ‫در‬ ‫به‬ ‫منجر‬ ‫و‬ ‫دهد‬ ‫رخ‬ ‫سیری‬ ‫تف‬ ‫شتباه‬ ‫ا‬ ‫سرور‬ ‫یا‬ ‫کاربر‬ ‫سمت‬ ‫در‬ ‫ست‬ ‫ا‬ ‫ممکن‬ ‫صورت‬‫حمالت‬code injection/execution ‫شود‬. ‫اعتبارسنج‬‫ی‬‫درخواست‬ ‫محتویات‬ ‫نوع‬ ‫کردن‬ ‫رد‬‫درخواست‬‫ها‬‫ی‬‫محتویات‬ ‫شامل‬ ‫که‬‫پ‬‫یش‬‫بینی‬‫نشده‬‫سرآیند‬ ‫با‬ ‫مخالف‬ ‫یا‬HTTP‫پاسخ‬ ‫در‬ ‫باید‬ .‫هستند‬ ‫ا‬‫ین‬‫گونه‬‫درخواست‬‫خطای‬esponse status 406 Unacceptable or 415 Unsupported‫داده‬ ‫نمایش‬ ‫کاربر‬ ‫به‬ .‫شود‬ ‫امن‬ ‫فرمت‬ ‫توسط‬ ‫پاسخ‬ ‫ارسال‬ ‫عادی‬ ‫امری‬‫م‬‫ی‬‫باشد‬‫برای‬ ‫که‬‫سرو‬‫یس‬‫های‬REST‫کاربر‬ ‫به‬ ‫ارسال‬ ‫برای‬ ‫پاسخ‬ ‫فرمت‬ ‫چندین‬ ‫که‬ ‫باشد‬ ‫داشته‬ ‫وجود‬ ‫امکانی‬ ‫با‬ ‫فراهم‬.‫شد‬‫به‬‫عنوان‬‫مثال‬‫فرمت‬‫ها‬‫ی‬application/xml‫یا‬application/Jason‫سرویس‬ ‫یک‬ ‫برای‬‫قابل‬‫دسترس‬‫ی‬‫در‬ .‫است‬ ‫قسمت‬ ‫در‬ ‫حالت‬ ‫این‬Header‫را‬ ‫پاسخ‬ ‫آن‬ ‫اساس‬ ‫بر‬ ‫سرور‬ ‫و‬ ‫کرده‬ ‫ارسال‬ ‫سرور‬ ‫برای‬ ‫را‬ ‫انتخابی‬ ‫فرمت‬ ‫کاربر‬ ،‫درخواست‬ ‫می‬ ‫ارسال‬.‫کند‬ ‫کردن‬ ‫رد‬‫درخواست‬‫ها‬‫خطای‬ ‫پیام‬ ‫با‬406 Not Acceptable response‫فرمت‬ ‫درخواست‬ ‫سرآیند‬ ‫در‬ ‫اگر‬ ‫موردن‬‫یاز‬‫پیام‬‫فرمتی‬‫انتخاب‬‫شده‬‫جز‬ ‫که‬ ‫باشد‬‫فرمت‬‫ها‬‫ی‬.‫نباشد‬ ‫مجاز‬ ‫سرویس‬‫شامل‬ ‫که‬ ‫های‬‫کدها‬‫ی‬‫در‬ )‫اسکریپت‬ ‫جاوا‬ ‫(مانند‬ ‫است‬ ‫اسکریپتی‬‫پاسخ‬‫ها‬‫ی‬‫باید‬ ‫آنان‬‫به‬‫شدت‬‫م‬‫حافظت‬ ‫و‬ ‫شوند‬‫اعتبارسنج‬‫ی‬‫سر‬ ‫تزریق‬ ‫حمالت‬ ‫مقابل‬ ‫تا‬ ‫پذیرد‬ ‫صورت‬.‫گردند‬ ‫مقاوم‬ ‫آیند‬
  • 8. ‫اتصال‬ ‫نقاط‬ ‫مدیریت‬ ‫قرار‬ ‫از‬ ‫اجتناب‬‫دادن‬‫مدیریت‬ ‫اتصال‬ ‫نقاط‬‫سرو‬‫یس‬‫ها‬‫اینترنت‬ ‫طریق‬ ‫از‬ ‫اگر‬‫به‬ ‫دسترسی‬‫مدیریت‬ ‫اتصال‬ ‫نقاط‬‫سرو‬‫یس‬‫ها‬‫که‬ ‫شود‬ ‫حاصل‬ ‫اطمینان‬ ،‫باشد‬ ‫الزم‬ ‫اینترنت‬ ‫طریق‬ ‫از‬ ‫می‬ ‫استفاده‬ ‫عامله‬ ‫چند‬ ‫هویت‬ ‫احراز‬ ‫مثل‬ ‫قوی‬ ‫هویت‬ ‫احراز‬ ‫مکانیزم‬ ‫یک‬ ‫از‬ ‫کاربران‬‫کنند‬. ‫طریق‬ ‫از‬ ‫مدیریت‬ ‫دسترسی‬ ‫نقاط‬‫پورت‬‫ها‬‫ی‬‫متفاوت‬HTTP‫دیگری‬ ‫هاست‬ ‫یا‬‫ترج‬ً‫ا‬‫یح‬‫یک‬ ‫روی‬NIC .‫گیرد‬ ‫قرار‬ ‫متفاوت‬ ‫شبکه‬ ‫زیر‬ ‫و‬ ‫دسترسی‬ ‫کردن‬ ‫محدود‬‫ا‬‫تصال‬‫ها‬‫ی‬‫مدیر‬‫ی‬‫تی‬‫وس‬ ‫به‬‫یله‬‫های‬‫رول‬‫ها‬‫ی‬‫از‬ ‫استفاده‬ ‫یا‬ ‫فایروال‬‫ل‬‫یست‬‫های‬ .‫دسترسی‬ ‫کنترل‬ ‫خطاها‬ ‫مدیریت‬ ‫با‬ ‫پاسخ‬‫پ‬‫یام‬‫های‬‫کلی‬ ‫خطای‬-‫از‬ ‫جزئیات‬ ‫شدن‬ ‫آشکار‬ ‫از‬ ‫اجتناب‬‫خراب‬‫ی‬‫های‬‫حیاتی‬ ‫غیر‬ ‫مانند‬ ‫فنی‬ ‫جزئیات‬call stacks or other internal hints‫نشود‬ ‫ارسال‬ ‫مشتری‬ ‫برای‬ ‫را‬. ‫الگ‬‫امنیتی‬ ‫های‬ ‫نوشتن‬audit logs‫از‬ ‫بعد‬ ‫و‬ ‫قبل‬‫رخدادها‬‫ی‬‫امنیت‬ ‫رویدادهای‬ ‫با‬ ‫مرتبط‬ ‫حمالت‬ ‫تشخیص‬ ‫منظور‬ ‫به‬‫؛‬‫پیام‬‫توکن‬ ‫از‬ ‫که‬ ‫خطای‬ ‫های‬‫صادر‬ ‫هویت‬ ‫احراز‬ ‫های‬‫م‬‫ی‬‫شود‬‫نظر‬ ‫در‬ ‫را‬ .‫بگیرید‬ ‫حمله‬ ‫از‬ ‫پیشگیری‬log injection‫طریق‬ ‫از‬‫پاک‬‫ساز‬‫ی‬‫داده‬‫ها‬‫ی‬‫سیستم‬ ‫به‬ ‫ورود‬ ‫از‬ ‫قبل‬ ‫الگ‬ ‫امنیتی‬ ‫سرآیندهای‬ ‫برای‬‫اطمینان‬‫از‬‫اینکه‬‫محتوای‬‫یک‬‫منبع‬‫داده‬‫به‬‫درستی‬‫توسط‬‫مرورگر‬‫تفسیر‬‫شده‬،‫است‬‫س‬‫رور‬‫همیشه‬ ‫باید‬Content Type.‫دهد‬ ‫مطابقت‬ ‫محتویات‬ ‫نوع‬ ‫با‬ ‫را‬ ‫سرآیند‬ ‫باید‬ ‫سرور‬X-Content-Type-Options: nosniff‫اطمینان‬ ‫اینکه‬ ‫منظور‬ ‫به‬ .‫کند‬ ‫ارسال‬ ‫هدر‬ ‫در‬ ‫را‬ ‫در‬ ‫را‬ )‫اسکریپت‬ ‫جاوا‬ ‫کدهای‬ ‫(مانند‬ ‫متفاوت‬ ‫موارد‬ ‫مرورگر‬ ‫شود‬ ‫حاصل‬Content-Type‫اجرا‬‫نم‬‫ی‬‫کند‬ ‫روی‬ ‫بر‬ ‫حمله‬ ‫انجام‬ ‫از‬ ‫اقدام‬ ‫این‬ ‫(با‬Content-Type‫جلوگیری‬‫م‬‫ی‬‫شود‬). ‫عالوه‬‫این‬ ‫بر‬‫باید‬ ‫مشتری‬X-Frame-Options: deny‫کرد‬ ‫ارسال‬ ‫را‬‫از‬ ‫محافظت‬ ‫برای‬ ‫امنیتی‬ ‫هدر‬ ‫این‬ . ‫حمله‬drag'n drop clickjacking‫انجام‬ ‫قبلی‬ ‫مرورگرهای‬ ‫در‬‫م‬‫ی‬.‫شود‬
  • 9. CORS ‫مکانیزم‬CORS8‫دو‬ ‫بین‬ ‫منابع‬ ‫اشتراک‬ ‫معنای‬ ‫به‬‫مبدأ‬‫متفاوت‬‫م‬‫ی‬‫باشد‬‫که‬ ‫سایتی‬ ‫که‬ ‫معنا‬ ‫این‬ ‫به‬ .‫م‬‫بدأ‬A‫در‬ ‫است‬ ‫اجرا‬ ‫حال‬‫م‬‫ی‬‫تواند‬‫داده‬‫ها‬‫سرور‬ ‫از/به‬ ‫را‬‫مبدأ‬B‫کند‬ ‫دریافت/ارسال‬‫که‬ ‫؛‬‫پیکربندی‬ ‫عدم‬ ‫صورت‬ ‫در‬ ‫در‬ ‫اسکریپت‬ ‫جاوا‬ ‫فراخوانی‬ ‫امکان‬ ‫است‬ ‫ممکن‬ ‫نامناسب‬‫سرویس‬REST‫می‬ ‫فراهم‬.‫شود‬ ‫پیشنیاد‬‫م‬‫ی‬‫شود‬CORS headers‫اگر‬domain calls-cross‫پشتیبانی‬ ‫را‬‫نم‬‫ی‬‫کند‬‫را‬‫غ‬‫یرفعال‬.‫کنید‬ ‫از‬ ‫حفاظت‬‫درخواست‬ ‫در‬ ‫حساس‬ ‫اطالعات‬HTTP ‫در‬RESTful‫وب‬‫سرو‬‫یس‬‫ها‬‫باید‬‫از‬‫نشتی‬‫اعتبارنامه‬‫ها‬‫این‬ .‫شود‬ ‫جلوگیری‬‫اعتبارنامه‬‫ها‬‫ی‬‫عبارت‬‫اند‬‫ا‬‫رمز‬ ‫ز‬ ‫توکن‬ ،‫عبور‬‫و‬ ‫امنیتی‬ ‫های‬API keys‫در‬ ‫نباید‬ ‫که‬URL‫الگ‬ ‫در‬ ‫است‬ ‫ممکن‬ ‫که‬ ‫شوند‬ ‫ظاهر‬‫وب‬ ‫های‬ ‫سرو‬‫یس‬‫ها‬‫هستند‬ ‫ارزشمند‬ ‫اصل‬ ‫در‬ ‫آنان‬ ‫که‬ ‫شود‬ ‫ذخیره‬ ‫در‬‫درخواست‬‫ها‬‫ی‬PUT‫و‬POST،‫داده‬‫ها‬‫ی‬‫حساس‬‫م‬‫ی‬‫تواند‬‫یا‬ ‫پیام‬ ‫بدنه‬ ‫در‬‫سرآیند‬‫درخواست‬‫ها‬‫ارسال‬ .‫شوند‬ ‫در‬‫درخواست‬‫ها‬‫ی‬GET‫داده‬‫ها‬‫ی‬‫حساس‬‫باید‬‫در‬HTTP Header‫منتقل‬‫شوند‬. ‫به‬‫عنوان‬‫مثال‬.‫است‬ ‫مناسب‬ ‫زیر‬ ‫موارد‬ https://example.com/resourceCollection/[ID]/action https://twitter.com/vanderaj/lists ‫مناسب‬ ‫زیر‬ ‫مورد‬ ‫و‬‫نم‬‫ی‬‫باشد‬ https://example.com/controller/123/action?apiKey=a53f435643de32 because API Key is into the URL. ‫بازگشتی‬ ‫کدهای‬HTTP ‫پروتکل‬ ‫در‬HTTP‫اعیتی‬‫ا‬‫وض‬ ‫کدهای‬‫را‬ ‫زیر‬‫م‬‫ی‬‫توان‬‫برا‬‫ی‬REST‫کرد‬ ‫تعریف‬.‫وقت‬‫ی‬‫که‬‫طراحی‬‫یک‬REST API‫از‬ ‫تنیا‬ ‫وضاااعیت‬ ‫کد‬ ‫دو‬200‫برای‬‫پ‬‫یام‬‫های‬‫موفقیت‬‫آمی‬‫ز‬‫و‬404‫برای‬‫پ‬‫یام‬‫های‬‫اساااتفاده‬ ‫خطا‬‫می‬‫کند‬‫به‬ ‫نسااابت‬ ‫دقیقی‬ ‫اطالعات‬ ‫؛‬ ‫خطای‬‫واردشده‬‫به‬‫استفاده‬‫کننده‬‫داده‬‫نم‬‫ی‬‫شود‬‫پیشنیاد‬ ‫پاسخ‬ ‫بیتر‬ ‫ارائه‬ ‫برای‬ .‫می‬‫شود‬‫کد‬ ‫از‬‫وضع‬‫یت‬‫های‬‫است‬‫زیر‬ ‫اندارد‬‫در‬ .‫شود‬ ‫استفاده‬ ‫پاسخ‬ 8 Cross Origin Resource Sharing
  • 10. ‫فیرست‬‫ی‬‫به‬ ‫مربوط‬ ‫خطای‬ ‫از‬RESTful‫ب‬‫یان‬‫شده‬.‫است‬ DecriptionMessageCode Response to a successful REST API action. The HTTP method can be GET, POST, PUT, PATCH or DELETE. OK200 The request has been fulfilled and resource created. A URI for the created resource is returned in the Location header. Created201 The request has been accepted for processing, but processing is not yet complete. Accepted202 Permanent redirection.Moved Permanently301 Caching related response that returned when the client has the same copy of the resource as the server. Not Modified304 Temporary redirection of resource.Temporary Redirect307 The request is malformed, such as message body format error. Bad Request 400 Wrong or no authentication ID/password provided. Unauthorized401 It's used when the authentication succeeded but authenticated user doesn't have permission to the request resource. Forbidden403 When a non-existent resource is requested. Not Found 404 The error for an unexpected HTTP method. For example, the REST API is expecting HTTP GET, but HTTP PUT is used. Method Not Acceptable405 The client presented a content type in the Accept header which is not supported by the server API. Unacceptable 406 Use it to signal that the request size exceeded the given limit e.g. regarding file uploads. Payload too large413 The requested content type is not supported by the REST service. Unsupported Media Type415 The error is used when there may be DOS attack detected or the request is rejected due to rate limiting. Too Many Requests 429 An unexpected condition prevented the server from fulfilling the request. Be aware that the response should not reveal internal Internal Server Error 500
  • 11. information that helps an attacker, e.g. detailed error messages or stack traces. The REST service does not implement the requested operation yet. Not Implemented 501 The REST service is temporarily unable to process the request. Used to inform the client it should retry at a later time. Service Unavailable 503 ‫دسترسی‬ ‫حداقل‬ ‫سیاست‬ ‫دسااترساای‬ ‫مجوزهای‬9 ‫پ‬‫یش‬‫فرض‬‫ساارویس‬‫می‬‫باید‬‫حداقلی‬‫باشااد؛‬‫به‬‫عبارت‬‫دیگر‬ ‫ی‬،‫مادامی‬‫که‬‫کاربر‬API‫نیاز‬‫به‬‫مجوز‬ ‫ای‬‫ا‬‫خاص‬،‫ندارد‬‫لزومی‬‫به‬‫اه‬‫ا‬‫عرض‬‫آن‬‫ات‬‫ا‬‫نیس‬‫چراکه‬‫هرچه‬‫مجوزهای‬ ‫ارویس‬‫ا‬‫س‬‫اتری‬‫ا‬‫بیش‬‫اته‬‫ا‬‫داش‬،‫اد‬‫ا‬‫باش‬‫احتمال‬‫بروز‬‫رفتاری‬ ‫غیرقابل‬‫انتظار‬‫از‬‫آن‬‫بیشتر‬‫خواهد‬‫شد‬. ‫رد‬ ‫سیاست‬ ‫اعمال‬10 ‫کردن‬‫پ‬‫یش‬‫فرض‬ ‫هر‬ ‫به‬ ‫کاربران‬ ‫دساترسای‬ ‫ساط‬‫سارویسای‬‫پیش‬ ‫صاورت‬ ‫به‬ ‫سارور‬ ‫سامت‬ ‫در‬‫باشاد‬ ‫مسادود‬ ‫فرض‬.‫مجوز‬ ‫نیاز‬ ‫صاورت‬ ‫در‬ ‫برای‬ ‫دسترسی‬‫خاص‬ ‫کاربر‬.‫شود‬ ‫صادر‬ ‫از‬ ‫استفاده‬ ‫عدم‬‫داده‬‫ها‬‫ی‬‫کش‬11 ‫هویت‬ ‫احراز‬ ‫در‬ ‫َش‬‫ک‬ ‫دیتای‬ ‫مبنای‬ ‫بر‬ ‫نباید‬ ‫هرگز‬ ‫سرویس‬‫دسترسی‬ ‫سط‬ ‫شده‬‫کند‬ ‫مدیریت‬ ‫را‬ ‫ها‬. ‫عبور‬ ‫رمز‬ ‫سازی‬ ‫هم‬ ‫در‬ ‫پس‬‫سازی‬ ‫درهم‬ ‫از‬12 ‫کلیه‬‫اطالعات‬‫حساس‬‫کاربران‬‫همچون‬‫پسوردهای‬‫ش‬،‫می‬‫توان‬‫این‬‫تضمین‬‫را‬‫ایجاد‬‫کرد‬‫که‬‫اگر‬‫بنا‬ ‫به‬‫هر‬‫دلیلی‬‫اتم‬‫ا‬‫ایس‬‫ا‬‫س‬،‫گرفت‬ ‫قرار‬ ‫خطر‬ ‫معرض‬ ‫در‬‫داده‬‫های‬‫کاربران‬‫ناخوانا‬‫خواهند‬‫بود‬‫او‬ ‫حیاتی‬ ‫و‬ ‫ای‬‫ا‬‫اخص‬‫ا‬‫ش‬ ‫اطالعاتی‬ ‫و‬ ‫فاش‬‫نم‬‫ی‬‫شود‬. ‫گرفتن‬ ‫نظر‬ ‫در‬Timestamp‫ارسال‬ ‫حین‬ ‫در‬‫درخواست‬ ‫سااارویس‬ ‫وب‬ ‫روی‬ ‫اسااات‬ ‫ممکن‬ ‫که‬ ‫حمالتی‬ ‫انواع‬ ‫از‬ ‫یکی‬‫گردد‬ ‫ِعمال‬‫ا‬ ‫ها‬Brute Force‫افزودن‬ ‫منظور‬ ‫به‬ ‫که‬ ‫اسااات‬ ‫یک‬‫الیه‬‫امنیتی‬‫به‬‫وب‬‫اارویس‬‫ا‬‫س‬‫خود‬‫می‬‫توان‬‫در‬‫کلیه‬‫اات‬‫ا‬‫درخواس‬‫ها‬‫یک‬ ‫از‬Timestamp‫این‬ ‫افزودن‬ ‫با‬ .‫نمود‬ ‫ااتفاده‬‫ا‬‫اس‬ 9 permission 10 Deny 11 chash 12 hash
  • 12. ‫ارسال‬ ‫سرور‬ ‫برای‬ ‫درخواستی‬ ‫که‬ ‫دفعه‬ ‫هر‬ ،‫پارامتر‬‫م‬‫ی‬‫شو‬‫د‬‫می‬ ،‫توان‬‫زمان‬‫با‬ ‫را‬ ‫فعلی‬‫زمان‬‫درج‬‫در‬ ‫شده‬‫درخواست‬‫مق‬‫ایسه‬ ‫اجازه‬ ً‫ا‬‫صرف‬ ‫و‬ ‫کرده‬‫مدیریت‬‫درخواست‬‫هایی‬‫را‬‫داد‬‫که‬‫در‬‫یک‬‫بازه‬‫زمانی‬‫معقول‬(ً‫ال‬‫مث‬1‫الی‬2)‫دقیقه‬‫سرور‬ ‫در‬ ‫و‬ ‫ارسال‬ ‫دریافت‬‫شده‬‫اند‬‫کار‬ ‫این‬ .‫وقوع‬ ‫از‬‫حمالت‬‫ی‬‫تاییر‬ ‫بدون‬ ‫هکر‬ ‫آن‬ ‫در‬ ‫که‬Timestamp‫تا‬ ‫دارد‬ ‫قصد‬‫درخواست‬‫تکراری‬ ‫های‬ ‫می‬ ‫را‬ ‫کند‬ ‫ارسال‬ ‫سرور‬ ‫سمت‬ ‫به‬‫گیرد‬. ‫پارامترها‬ ‫اعتبارسنجی‬ ‫انجام‬ ‫از‬ ‫پیش‬‫هرگونه‬‫به‬ ‫اقدام‬ ً‫ا‬‫اصطالح‬ ‫تا‬ ‫است‬ ‫نیاز‬ ،‫سرور‬ ‫سمت‬ ‫در‬ ‫عملیاتی‬‫اعتبارسنج‬‫ی‬13 ‫در‬ .‫کنیم‬ ‫ارسالی‬ ‫پارامترهای‬ ‫می‬ ،‫ارتباط‬ ‫این‬‫ساااخت‬ ‫قوانین‬ ‫باید‬‫گیرانه‬‫ب‬ ‫نظر‬ ‫در‬ ‫ورودی‬ ‫پارامترهای‬ ‫برای‬ ‫ای‬‫چنانچه‬ ‫و‬ ‫گیریم‬‫درخواساااتی‬‫نت‬‫از‬ ‫وانسااات‬ ‫فیلترهای‬‫می‬ ،‫کند‬ ‫عبور‬ ‫اعتبارساانجی‬‫انجام‬ ‫جلوی‬ ‫باید‬‫فعالیت‬‫پیام‬ ‫و‬ ‫گرفته‬ ‫را‬ ‫مربوطه‬‫در‬ ‫مرتبطی‬ ‫خطای‬ ‫های‬‫قالب‬‫پاسااخ‬ ‫کاربر‬ ‫اختیار‬ ‫در‬‫دهد‬ ‫قرار‬. ‫تشکر‬ ‫با‬ ‫موسوی‬ ‫مسعود‬ ‫سید‬ 13 Validation