زبان برنامه نویسی PHP یکی از زبان های محبوب و پر کاربرد جهت طراحی سایت و اپلیکیشن های سمت سرور (Server Side) است.
این زبان برنامه نویسی نیاز به سیستم عامل لینوکس جهت اجرا دارد. لذا برای سایت هایی که با زبان PHP نگارش می شوند نیاز به سرور لینوکسی داریم.
مهم تر از همه امنیت سرور لینوکسی است که می تواند تا حد بسیار بالایی به امنیت وب سایت ها کمک کند.
و مبحث امنیت PHP نیز یک موضوع جدا نشدنی از برنامه نویسی و توسعه دهندگان است.
چرا که اگر به نکات امنیتی توجه نداشته باشیم ، امنیت برنامه ما و به دنبال آن کاربران آن به خطر می افتد.
در این مقاله می خواهیم به بررسی ۱۰ نکته امنیتی PHP برای ادمین های لینوکس بپردازیم…
که بتوانید امنیت اپلیکیشن و سرور خود را بالاتر ببرید.
وب سرور : Apache
مسیر مورد نظر : var/www/public_html
این ترفند ها وب سایت شما را از حملات رایجی مانند SQL injection, XSS, sea-surf attacks, eval(), File uploads و … ایمن می کند.
۱- ماژول های PHP
زمانی که PHP را بر روی سرور خود نصب می کنید ،
به صورت پیش فرض یک سری از پکیج یا ماژول ها را همراه خود دارد.
که مفید هستند اما شاید به همه ی آنها نیازی نباشد ، با دستور زیر می توانید لیست ماژول های PHP را مشاهده کنید.
# php - m
پس از مشاهده لیست ماژول ها می توانید آنها را customize کنید. به این صورت عملکرد و امنیت برنامه های خود را افزایش می دهید.
۲- جلوی فاش اطلاعات PHP را بگیرید
معمولا PHP می تواند اطلاعات سیستم عامل یا سرور خود را مانند version و … نمایش دهد.
این قابلیت توسط آپشن expose_php در /etc/php.d/security.ini. کنترل می شود.
به این صورت می توانید از نمایش اطلاعات سیستمی خود توسط PHP جلوگیری کنید:
expose_php=Off
۳- غیرفعال کردن اجرای کد از راه دور
اجرای کد از راه دور (RCE) می تواند امکانات بیشتری به ما ارائه دهد ،
اما نداشتن آگاهی لازم در زمینه ایمن سازی ، باعث می شود همین امکانات امنیت ما را تضعیف کند.
این آپشن به صورت پیش فرض روی PHP فعال می باشد.
با استفاده از آپشن allow_url_fopen امکان استفاده از توابع فراخوانی مانند require و include را به صورت مستقیم فراهم می کند.
در اینجا امکان دسترسی و فراخوانی فایل ها توسط پروتکل های HTTP و FTP وجود دارد که امنیت برنامه را به خطر می اندازد.
جهت جلوگیری از فراخوانی فایل ها توسط allow_url_fopen لازم است آن را خاموش کنید:
Allow_url_fopen=Off allow_url_include=Off
۴- ارور لاگ های PHP
زمانی که برنامه PHP ما در هنگام اجرا با خطا مواجه شود ،
توضیحی در مورد ارور یا خطای به وجود آمده ارائه می دهد.
یکی دیگر از راه هایی که امنیت برنامه ما را افزایش می دهد ، عدم نمایش ارور یا خطا ها به کاربر است.
برای این کار باید آپشن display_errors را در فایل /etc/php.d/security.ini file خاموش کنید :
display_errors=Off
البته خطا ها می توانند در توسعه وب اپلیکشین ما حائز اهمیت باشند ،
برای این موضوع یک فایل لاگ می توانیم برای برنامه نویس تولید کنیم :
log_errors=On error_log=/var/log/httpd/php_scripts_error.log
۵- منابع سیستم را به درستی کنترل کنید
کنترل منابع برای ایمن سازی برنامه شما مهم است.
برای کنترل منابع باید محدودیتی در اجرای اسکریپت های PHP ایجاد کنیم.
همچنین جهت جلوگیری از بار و فشار روی سرور ،
باید یک محدودیت زمانی برای اجرای اسکریپت ها و درخواست ها ایجاد کنیم.
# set in seconds max_execution_time = 25 max_input_time = 25 memory_limit = 30M
۶- غیرفعال سازی توابع خطرناک PHP
PHP دارای توابعی است که به توسعه برنامه ها کمک می کند.
اما ممکن است این توابع مفید توسط هکر ها مورد سو استفاده قرار بگیرند.
پس لازم است لیستی از توابع را غیرفعال کنیم تا امنیت برنامه را بالاتر ببریم :
disable_functions =exec,passthru, shell_exec,system,proc_open,popen,curl_exec, curl_multi_exec,parse_ini_file,show_source
۷- آپلود فایل ها
اگر برنامه شما نیازی به آپلود فایل ها ندارد ، غیرفعال کردن قابلیت بارگذاری فایل ها می تواند منجر به افزایش امنیت شود.
از این جهت باید آپشن file_uploads موجود در فایل security.ini واقع در مسیر /etc/php.d/ تغییر کند:
file_uploads=Off
۸- همه چیز را به روز نگه دارید
توسعه دهندگان و برنامه نویسان همواره درحال پچ کردن باگ های برنامه های خود هستند.
PHP نیز از این برنامه ها مستثنا نیست ، پس باید همیشه آخرین نسخه ی آن را استفاده کنید.
۹- کنترل دسترسی به فایل های سیستمی
به طور پیش فرض ، PHP می تواند با استفاده از توابعی مانند ()fopen به فایل ها دسترسی پیدا کند.
آپشن open_basedir مسیر دسترسی به فایل های سیستمی را کنترل می کند.
همیشه آپشن open_basedir را در در مسیر / var / www / html تنظیم کنید.
چرا که تنظیم آن در هر مسیر دیگری می تواند منجر به مشکلات امنیتی شود.
open_basedir="/var/www/html/"
۱۰- کنترل سایز POST
بهتر است مقدار POST را که برای ارسال اطلاعات به وب سرور استفاده می شود را نیز کنترل کنید.
فرض کنیم در بین کاربران یک هکر بخواهد ، برای اشغال منابع وب سرور یک فایل حجیم را ارسال کند.
پس باید برای محافظت از سرور یا دان شدن آن ، محدودیتی برای ارسال اطلاعات در فایل /etc/php.d/security.ini اعمال کنیم:
post_max_size=1k
امنیت یکی از بزرگترین دغدغه های هر برنامه نویس قبل از شروع کد زدن است.
که رعایت نکات ذکر شده می تواند باعث بهبود امنیت شود.
اگر نکته ای علاوه بر ۱۰ نکته امنیتی PHP مد نظر دارید می توانید آن را در “نظرات مربوط به همین صفحه” بنویسید.
در پناه الله یکتا شاد و پیروز باشید.
۱۰ نکته امنیتی PHP برای ادمین های لینوکس