PDA

View Full Version : سوال: پیاده سازی کلاس امن برای ویرایش قالب توسط کاربر !!



ULFSoft
شنبه 11 شهریور 1391, 13:08 عصر
سلام،
یه سری کاربر داریم که میتونن قالب یه سایت رو برای خودشون ویرایش کنن.
حالا من اومدم یه زبان واسط ایجاد کردم که کاربر بر اساس اون قالب رو ویرایش میکنه و متغیرها رو تو قالب ست میکنه.
بعد از ثبت قالب، این زبان واسط توسط کلاسی که طراحی کردم، ترجمه میشه و به صورت فایل ذخیره میشه.

مسائل ایمنی که در نظر گرفتم :
دایرکتوری ای که فایل ها داخلش ذخیره میشن با htaccess دسترسی بهش مسدود شده.
موقع ترجمه یه سری bad words تعریف کردم که اگه وجود داشته باشن، توسط preg حذف میشن.
فایل های قالب در هنگام بارگذاری توسط یه Template System لود میشن که تا حدودی جلوی دسترسی غیرمجاز به منابع غیر مجاز گرفته شه.
دسترسی به کلاس ها و توابع رو از طریق همون badwords ها مسدود کردم. به این صورت که () و -> و :: رو جزء لیست قرار دادم و در صورت مشاهده حذف میشن.

مشکلاتی که وجود داره :
به خاطر ساختار متفاوت سایتی که باهاش طرف هستم، امکانش نیست مثل سیستم های وبلاگ دهی یه whitelist داشته باشم و تو ترجمه هرچی خارج از whitelist بود رو حذف کنم! به جاش باید blacklist تعریف کنم و ... . یعنی باید تمام متغیر های موجود تو قالب رو به معادل php شون ترجمه کنم!
(البته در مورد توابع بهتر دونستم که از whitelist استفاده کنم و این محدودیت رو اعمال کردم. یعنی امکان فراخوانی توابع برای کاربر وجود نداره!)
کاربر الآن میتونه متغیر یا آرایه ای رو قرار بده که وجود نداره یا ... که تولید خطا میکنه! چطور میشه جلوی بروز این خطاها رو گرفت؟ یا از قبل تشخیص داد و پیغام خطا به کاربر نشون داد؟ :متفکر:

مورد آخری که نگرانم کرده اینه که تو این پروسه ای که تعریف کردم باگی وجود داشته باشه و به کاربر دسترسی غیر مجاز داده شه و ... :اشتباه:


توضیح آخر هم اینکه نحوه ترجمه متغیرها تو سیستم به این صورت هست :

{=var_name} =>> <?=$var_name;?>
{=arr_name['arr_index']} =>> <?=$arr_name['arr_index'];?>


از دوستان ممنون میشم راهنمایی کنن و نظراتشون رو بگن.

ULFSoft
یک شنبه 12 شهریور 1391, 08:47 صبح
آپ .