همهی ما میدانیم که یکی از بخشهای خیلی مهم در برنامهها، امنیت آن است، که مبادا اطلاعات حساس ما و کاربران ما در دسترس اشخاص نامعتبر بیفتد و حتی زمانی که برای راه اندازی و سرپا نگه داشتن وب سایت هزینه کردهایم از بین برود، دغدغهای که ما در این میان داریم امنیت آنها است و چگونگی محافظت از آن در برابر انواع حملات، خطاهای برنامه نویسی و … میباشد. در این مقاله ما قصد داریم به بررسی چند مورد از برقراری امنیت در PHP بپردازیم.
چرا باید برنامههای ایمن بنویسیم؟
تنها راه اندازی یک نرم افزار به این معنا نیست که این نرم افزار عمر طولانی خواهد داشت، اگه نرم افزار شما از امنیت پایینی برخوردار باشد یک نوجوان میتواند با دانلود یک برنامهی ساده سایت شما را مورد حمله قرار دهد و به آن آسیب بزند. پس وب سایت شما باید سپری باشد در برابر تمامی حملات و سوء استفادهها.
چگونه برنامههای ایمن بنویسیم؟
این سوال در ذهن خیلی از افراد است که در این حوزه فعالیت میکنند. باید به شما بگوییم که مشکلات امنیتی وب سایت شما و یا حملات هکرها ناشی از اشتباهات و خطاهای شما است، چون هکرها با آزمون و خطا بر روی وب سایت شما باگهای آن را پیدا میکنند و از باگها علیه شما استفاده میکنند. در این قسمت از مقاله و در قسمت بعدی به مباحث امنیت در PHP میپردازیم.
1- هرگز به دادههای کاربر اعتماد نکنید
دادههای کاربر هرگز قابل اعتماد نیستند چون ممکن است در جاهایی که شما از کاربران داده دریافت میکنید، دادههای خطرناک به سمت وب سایت شما بیاید این دادهها ممکن است اطلاعات ساده یک کاربر باشد یا حتی میتواند یک اسکریپت باشد که در بک اند وب سایت شما شروع به اجرا کردن بکند.برای جلوگیری کردن از این خطاها در نرم افزارهای شما باید دادههایی که از سمت کاربر میآید را احراز هویت کنید، مانند کنترل کردن طول کاراکتر، بررسی ساختار (برای مثال اگر یک ایمیل ارسال میشود بررسی کنید که درست همان ساختار ایمیل را داشته باشد)، از بین بردن تگهای HTML درون دادهها.
2- دردسرهای رمز عبور (Password) ضعیف
یکی از دردسرهایی که همیشه وجود داشته و دارد این است که در بعضی از اوقات ما و کاربران از رمز عبور (Password)های ضعیف خواسته یا ناخواسته استفاده میکنیم که همیشه خیلی زود حدس زده میشود و میتوانند هم به ما و هم به کاربران آسیب بزنند. رمز عبور (Password)های ضعیف مانند 123456، password، iloveyou، football و … که هکرها میتوانند با در نظر گرفتن لیستی از رمز عبور (Password)های ضعیف به سیستم شما وارد شوند.مشکلاتی که میتواند رمز عبور (Password)های ضعیف برای ما ایجاد کنند دزدیده شدن اطلاعات، سوء استفاده کردن از اطلاعات، ویروسی کردن و … است، برای مثال اگر رمز عبور (Password) شما را در یک وب سایت به دست بیاورند میتوانند با اطلاعات شما در همان سایت فعالیتهای مشکوکی داشته باشند.برنامه نویسانی که وب سایتها را توسعه میدهند حتما حتما باید رمز عبوری (Password) که در سمت کاربر میآید را هش کنند و آن را به صورت خام درون پایگاه داده ذخیره سازی نکنند.
3- مشکلات موجود در انکودینگ (Encoding)
در بعضی مواقع میتوان در برخی از وب سایتها مشاهده کرد که یک سری از خروجیها با ظاهری بسیار نامناسب مشاهده میشوند یا به اصطلاح خرچنگ قورباغه نمایش داده میشوند، دلیل نمایش خروجیها به این شکل انکودینگ (Encoding) آنها میباشد، مناسبترین انکودینگ برای نمایش خروجیها utf8 میباشد.
4- بروز بودن نسخهی (Version) PHP
روز نگه داشتن نسخهی (version) PHP از اهمیت بالایی برخوردار است چون به احتمال زیاد Version قبلی PHP یک سری باگها یا خطاهایی داشته است و با بروز کردن Version آن میتوانیم از آسیبپذیری وب سایت کم کنیم. تاکید بر بروز کردن نسخهی PHP این است که باگهای Version قبلی در اختیار تمامی توسعه دهندگان قرار داده میشود تا سازمان یا افرادی که PHP کار میکنند اقدام به بروزرسانی آن کنند, ولی چه بلایی سر آنهایی میآید که بروزرسانی نمیکنند؟ افراد سودجود با دانستن ورژن PHP شما میتوانند باگهای شما را بفهمند و به شما از طریق آن باگها ضربه بزنند، پس همیشه در بروز نگه داشتن نسخهیPHP وب سایت خود کوشا باشید.
5- امنیت در cookie ها
کی دیگر از مباحث امنیت که باید آن را رعایت کنیم برقراری امنیت در کوکیهاست که باید از دزدیده شدن آنها جلوگیری کنیم یا باید به نحوی عمل کنیم که اگر هم دزدیده شد به پروژهی ما ضربهای نزند.اولین نکته: هرگز اطلاعات حساس را در کوکیها ذخیره سازی نکنید، برای مثال آیدی کاربری خود را در کوکیها ذخیره سازی نکنید چون کوکیها قابل ویرایش هستند و میتوان به راحتی اطلاعات کاربر را با آنها دزدید.دومین نکته: مقداری که در کوکیها ذخیره میکنید حتما حتما رمزگذاری یا هش کنید و آنها را در پایگاه داده خود ذخیره کنید تا وقتی که یک کوکی را از سمت کاربر میخوانید با آن کوکی که در پایگاه داده شما دخیره شده است مطابقت داشته باشد تا از دستکاری احتمالی کوکی جلوگیری کنیم.سومین نکته: کوکیها را از دسترس جاوا اسکریپت خارج کنید.
ادامه مقاله را در قسمت دوم …
