PDA

View Full Version : امنیت دستورات exec و shell_exec ???



reza-alborz
شنبه 25 مهر 1394, 14:22 عصر
سلام و احترام

من به دلیل استفاده از ffmpeg مجبورم که از دستورات exec و shell_exec استفاده کنم ، حال تو یکی از مقاله ها میخوندم که استفاده از این دستورات خیلی خطرناکه ! . ولی توضیح کامل نداده بود ، از اساتید و دوستان برنامه نویس خواهشمندم اگر توضیحی در این رابطه دارند بفرمایند. ممنون

pbm_soy
شنبه 25 مهر 1394, 18:47 عصر
فقط مواظب باشید به این دستورات هرجور مقداری را نفرستید
ویا اگر کاربر مقادیری را به این دستورات میدهد خیلی دقت کنید و یا اگر از مقادیری که کاربر وارد میکند به نحوی در این دستورات استفاده میکنید مواظب باشید

Unique
شنبه 25 مهر 1394, 22:37 عصر
ال تو یکی از مقاله ها میخوندم که استفاده از این دستورات خیلی خطرناکه
راستش این حرف خیلی کلی هست ، هر چیزی که بدون دانش چگونگی استفادش به کار بره میتونه خطرناک باشه. مثلا کسی بیاد بگه کوئری inline نزنید که خطرناک هست و ممکنه injection صورت بگیره.

بستگی داره شما از دستور exec چطور استفاده کنید ،‌ اگه command ی که میفرستین اصلا از طرف کاربر چیزی توش نیست که کلا امن هستید و امنیت بر میگرده به دستوری که خودتون یمزنید. اما اگه چیزی از کاربر میگیرین باید sanitize یا اعتبار سنجی بشه ! مثل حملات xss و sql injection ممکنه کاربر مقادیر مشکل داری بفرسته که وقتی توی command شما قرار میگیره کلا دستور را تغییر بده.

در مورد ffmpeg چند تا توصیه دارم :
۱ - یک کاربر با دسترسی در حد اجرای همین command توی دایرکتوری خاص و ساقط از جاهای دیگه بسازین.
۲ - نام فایلی که میگیرین و میخواین بدین به دستور را عوض کنین.
۳ - درخواست ها را توی صف بگذارین یا مراقب باشین چند تا تبدیل همزمان انجام میدین.
۴ - اگه argument خاصی را کاربر تعیین میکنه از escapeshellarg استفاده کنین.