در مطلب امنیت در برنامه نویسی ، ۸ مورد را بر شمردیم که با رعایت آنها، میتوانیم کد امنی بنویسیم و نرمافزار، اپلیکیشن یا سرویس وبی که میسازیم، ما و اطلاعات کاربرانمان را محفوظ نگاه دارد، در مطلب امنیت در برنامه نویسی قسمت دوم به سه مورد دیگر پرداختیم، و در ادامه به ۲ مورد آخر اشاره میکنیم :
کنترل خطا
وقتی در حال توسعه یک اپلیکیشن هستید، مشاهده error ها مفید است و شما را در مسیر صحیح توسعه قرار میدهد. اما وقتی نرمافزار خودتان را در اختیار کاربر نهایی قرار میدهید، باید حتما نمایش خطاها را برای او مخفی کنید. اگر خطایی رخ بدهد و این خطا برای کاربر نمایش داده شود ممکن است نرمافزار یا اپلیکیشن شما را آسیب پذیر کند. به هر حال بهترین راه، انجام تنظیمات جداگانه برای سرورهای توسعه و عمومی است.
در حالت نمایش برای عموم باید دو گزینه display_errors وdisplay_start_up_errors در تنظیمات php.ini به حالت Off باشد. تنظیمات error_reporting و log_errors در حالتی قرار دهید که کاربران به خطاها دسترسی نداشته باشند.
شما میتوانید از set_error_handler برای سفارشی کردن نمایش خطاها استفاده کنید. البته این گزینه محدودیتهایی دارد. شما میتوانید خطاهای استانداری که PHP تولید میکند را کنترل کنید، ولی برای مثال نمیتوانید خطاهای E_CORE_ERROR ، E_STRICT یا E_COMPILER_ERROR را کنترل کنید.
برای کنترل خطا، باید Exception ها را با try/catch کنترل کنید.
حفاظت از Included Files
اسکریپتهای PHP معمولا شامل فایلهای مختلفی مانند ارتباط با دیتابیس یا موارد از این دست هستند. بعضی از برنامهنویسان برای این فایلها از پسوند .inc استفاده میکنند. معمولا این نوع پسوند اگر به صورت مستقیم توسط کاربر فراخوانی شود توسط موتور PHP کامپایل نمیشوند و به صورت txt برای کاربر نمایش داده میشوند. اگر اپلیکیشن یا سایت شما به صورت مستقیم مورد حمله قرار بگیرد اطلاعات اتصال به دیتابیس یا موارد دیگری توسط نفوذگر قابل دسترس است و به احتمال زیاد میتواند به اطلاعات محرمانه شما یا کاربرانتان دسترسی پیدا کند. بهترین و سادهترین راه، استفاده از پسوند .php برای این فایلها است، و این کار باعث میشود که اطلاعات این فایلها از دسترسی مستقیم در امان بماند.
با توجه به ۸ نکته گفته شده و رعایت آنها، ممکن است یک اپلیکیشن PHP امن بنویسید. به طور خلاصه به ورودیهای کاربر اعتماد نکنید، همچنین از فایل سیستمها و پایگاه داده خودتان محافظت کنید.