‫ نمایش خطای 4-4 هنگام ارسال درخواست پست همراه فایل به صفحه افزونه

Amin

با عرض سلام و خسته نباشید خدمت تیم شاب.

 

چند مورد راهنمایی برای توسعه یک افزونه نیاز داشتم.

اول اینکه من یک افزونه نوشته ام که از طریق rest API یک پیام به صورت خصوصی برای کاربر مشخص شده در api ارسال میکند.

 

تمام روت ها به درستی کار میکنند اما وقتی درخواست خود را به صورت پست حاوی یک یا چند فایل میفرستم همان روت ها ارور 404 میدهند.

 

نکته دوم برای attach کردن یک فایل به پیام ارسالی و یا درکل ارسال یک پیام در صندوق کاربر به صورت برنامه نویسی از طریق پلاگین توسط شاب امکانی تعبیه شده است؟

 

در صورت وجود خوشحال میشوم معرفی کنید که باید به کدام قسمت نگاه کنم. مخصوصا بخش پیوست فایل.

 

با تشکر

کشاورز - تیم فنی توسعه شاب آپای دانشگاه گیلان

سازنده: Amin زمان ایجاد: 19 اسفند 1396

پاسخ‌ها:

مرتب‌سازی بر اساس
یاسر علیمردانی تیم توسعه
یاسر علیمردانی 20 اسفند 1396

سلام. وقت بخیر.

نکته اول: دلیل عدم توانایی در ارسال داده (با مکانیزم post) از طریق api، این است که موتوشاب فرض می‌کند تمامی داده‌های ارسالی از طریق فرم‌های درون خود سامانه صورت می‌گیرد. در نتیجه فرض بر این است که همواره یک فیلد csrf همراه با فرم بوده و باید مقدار معتبری داشته باشد.

فرایند اعتبارسنجی فیلدهای فرم در تابع isValid از کلاس ow_form اجرا می‌شود. در صورتیکه می‌خواهید از این فرایند استفاده نکنید، یا باید فیلد csrf رو نیز در api خود اضافه کرده و یا از تابع isValid فرم استفاده نکنید و خودتان آن را مدیریت کنید.

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

نکته دوم: افزونه پیام امکان ارسال فایل در بخش گفت‌وگو را برای کاربران فراهم کرده و همچنین مکانیزمی برای نگهداری فایل‌های بارگذاری کاربران در موتوشاب وجود داشته و تمامی اطلاعات فایل‌ها درون جدول attachment نگهداری می‌شوند. شما نیز می‌توانید از مکانیزم استفاده شده در افزونه پیام استفاده کرده و از طریق api، فایل مورد نظر خود را در افزونه توسعه یافته مدیریت کرده و اطلاعات آن را درون جدول مذکور نگهداری کنید.

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

Amin
Amin 21 اسفند 1396
نقل قول از یاسر علیمردانی

سلام. وقت بخیر.

نکته اول: دلیل عدم توانایی در ارسال داده (با مکانیزم post) از طریق api، این است که موتوشاب فرض می‌کند تمامی داده‌های ارسالی از طریق فرم‌های درون خود سامانه صورت می‌گیرد. در نتیجه فرض بر این است که همواره یک فیلد csrf همراه با فرم بوده و باید مقدار معتبری داشته باشد.

فرایند اعتبارسنجی فیلدهای فرم در تابع isValid از کلاس ow_form اجرا می‌شود. در صورتیکه می‌خواهید از این فرایند استفاده نکنید، یا باید فیلد csrf رو نیز در api خود اضافه کرده و یا از تابع isValid فرم استفاده نکنید و خودتان آن را مدیریت کنید.

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

نکته دوم: افزونه پیام امکان ارسال فایل در بخش گفت‌وگو را برای کاربران فراهم کرده و همچنین مکانیزمی برای نگهداری فایل‌های بارگذاری کاربران در موتوشاب وجود داشته و تمامی اطلاعات فایل‌ها درون جدول attachment نگهداری می‌شوند. شما نیز می‌توانید از مکانیزم استفاده شده در افزونه پیام استفاده کرده و از طریق api، فایل مورد نظر خود را در افزونه توسعه یافته مدیریت کرده و اطلاعات آن را درون جدول مذکور نگهداری کنید.

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



با تشکر از توضیحات خوبتون. میتوانید یک مقدار تکنیکال تر راجع به نحوه ارسال دیتا به شاب بدون استفاده از متد های ولیدیشن توضیح دهید؟

قاعدتا امکان ایجاد csrf در طرف استفاده کننده از سرویس نیست.

برای اینکه این قابلیت را خاموش کنم باید به چه کدی و در کجا نگاه کنم و یا چه کدی باید بزنم؟ چون این مورد را ندیده ام و آشنایی لازم را ندارم.

 

با تشکر

ویرایش شده توسط Amin (21 اسفند 1396)
یاسر علیمردانی تیم توسعه
یاسر علیمردانی 21 اسفند 1396

در افزونه موارد امنیتی ضروری با کلید iissecurityesentials، یک متد با عنوان «onAfterFormSubmission» وجود دارد که وجود csrf در داده‌های فرم را بررسی می‌کند. می‌توانید فعلا اول این تابع یک return قرار داده تا اعتبارسنجی آن فیلد از طریق این افزونه صورت نگیرد. اما تیم فنی در حال ایجاد یک رویداد در این تابع بوده تا از طریق bind شدن روی آن، امکان عدم بررسی فیلد csrf برای توسعه‌دهندگان، بدون تغییر افزونه مذکور، مقدور باشد.

این موضوع مهم است