آموزش کامل برقراری امنیت در برنامه نویسی PHP
- بهدست: Admingfars
- دستهبندی: برنامه نویسی, شبکه و امنیت
آموزش کامل برقراری امنیت در برنامه نویسیphp
همهی ما میدانیم که یکی از بخشهای خیلی مهم در برنامهها، امنیت آن است، که مبادا اطلاعات حساس ما و کاربران ما در دسترس اشخاص نامعتبر بیفتد و حتی زمانی که برای راه اندازی و سرپا نگه داشتن وب سایت هزینه کردهایم از بین برود، دغدغهای که ما در این میان داریم امنیت آنها است و چگونگی محافظت از آن در برابر انواع حملات، خطاهای برنامه نویسی و … میباشد. در این مقاله ما قصد داریم به بررسی چند مورد از برقراری امنیت در PHP بپردازیم.
چرا باید برنامههای ایمن بنویسیم؟
تنها راه اندازی یک نرم افزار به این معنا نیست که این نرم افزار عمر طولانی خواهد داشت، اگه نرم افزار شما از امنیت پایینی برخوردار باشد یک نوجوان میتواند با دانلود یک برنامهی ساده سایت شما را مورد حمله قرار دهد و به آن آسیب بزند. پس وب سایت شما باید سپری باشد در برابر تمامی حملات و سوء استفادهها.
چگونه برنامههای ایمن بنویسیم؟
این سوال در ذهن خیلی از افراد است که در این حوزه فعالیت میکنند. باید به شما بگوییم که مشکلات امنیتی وب سایت شما و یا حملات هکرها ناشی از اشتباهات و خطاهای شما است، چون هکرها با آزمون و خطا بر روی وب سایت شما باگهای آن را پیدا میکنند و از باگها علیه شما استفاده میکنند. در این قسمت از مقاله و در قسمت بعدی به مباحث امنیت در PHP میپردازیم.
هرگز به دادههای کاربر اعتماد نکنید.
دادههای کاربر هرگز قابل اعتماد نیستند چون ممکن است در جاهایی که شما از کاربران داده دریافت میکنید، دادههای خطرناک به سمت وب سایت شما بیاید این دادهها ممکن است اطلاعات ساده یک کاربر باشد یا حتی میتواند یک اسکریپت باشد که در بک اند وب سایت شما شروع به اجرا کردن بکند.
برای جلوگیری کردن از این خطاها در نرم افزارهای شما باید دادههایی که از سمت کاربر میآید را احراز هویت کنید، مانند کنترل کردن طول کاراکتر، بررسی ساختار (برای مثال اگر یک ایمیل ارسال میشود بررسی کنید که درست همان ساختار ایمیل را داشته باشد)، از بین بردن تگهای HTML درون دادهها.
دردسرهای رمز عبور (Password) ضعیف:
یکی از دردسرهایی که همیشه وجود داشته و دارد این است که در بعضی از اوقات ما و کاربران از رمز عبور (Password)های ضعیف خواسته یا ناخواسته استفاده میکنیم که همیشه خیلی زود حدس زده میشود و میتوانند هم به ما و هم به کاربران آسیب بزنند. رمز عبور (Password)های ضعیف مانند 123456، password، iloveyou، football و … که هکرها میتوانند با در نظر گرفتن لیستی از رمز عبور (Password)های ضعیف به سیستم شما وارد شوند.
مشکلاتی که میتواند رمز عبور (Password)های ضعیف برای ما ایجاد کنند دزدیده شدن اطلاعات، سوء استفاده کردن از اطلاعات، ویروسی کردن و … است، برای مثال اگر رمز عبور (Password) شما را در یک وب سایت به دست بیاورند میتوانند با اطلاعات شما در همان سایت فعالیتهای مشکوکی داشته باشند.
برنامه نویسانی که وب سایتها را توسعه میدهند حتما حتما باید رمز عبوری (Password) که در سمت کاربر میآید را هش کنند و آن را به صورت خام درون پایگاه داده ذخیره سازی نکنند.
خصوصیات یک رمز عبور (Password) قوی:
یک رمز عبور (Password) قوی باید شامل اعداد، حروف بیربط و کوچک و بزرگ، علامتها مثل ! @ # $ & _ و طول بیشتر از 8 کلمه داشته باشد. باید همیشه از رمز عبور (Password)های یکنواخت بپرهیزیم، برای مثال رمز عبور (Password) زیر را بخوانید.
(chnvchnhnm_3455$%&(ENTBSABNTNKKB
بدون تردید هیچی از این رمز عبور (Password) را متوجه نشدید ولی این رمز عبور (Password) برای ما معنی دارد، بخش اول آن که chnvchnhnm بود، هر کاراکتر آن، کاراکتر اول کلمات شعر (چنین نماند و چنین نیز هم نخواهد ماند) بودند، چنین: ch، نماند: n، و: v، چنین: ch و …، بعد از آن یک _ (Underscore) وجود دارد و چندین عدد و حروف و داخل پرانتز دوباره یک شعر با قوانین بالا نوشتهایم.(ای نام تو بهترین سر آغاز بی نام تو نامه کی کنم باز) شعر دوم ما در پرانتز است
مشکلات موجود در انکودینگ (Encoding):
در بعضی مواقع میتوان در برخی از وب سایتها مشاهده کرد که یک سری از خروجیها با ظاهری بسیار نامناسب مشاهده میشوند یا به اصطلاح خرچنگ قورباغه نمایش داده میشوند، دلیل نمایش خروجیها به این شکل انکودینگ (Encoding) آنها میباشد، مناسبترین انکودینگ برای نمایش خروجیها utf8 میباشد.
بروز بودن نسخهی (Version) PHP:
بروز نگه داشتن نسخهی (version) PHP از اهمیت بالایی برخوردار است چون به احتمال زیاد Version قبلی PHP یک سری باگها یا خطاهایی داشته است و با بروز کردن Version آن میتوانیم از آسیبپذیری وب سایت کم کنیم. تاکید بر بروز کردن نسخهی PHP این است که باگهای Version قبلی در اختیار تمامی توسعه دهندگان قرار داده میشود تا سازمان یا افرادی که PHP کار میکنند اقدام به بروزرسانی آن کنند.
ولی چه بلایی سر آنهایی میآید که بروزرسانی نمیکنند؟ افراد سودجود با دانستن ورژن PHP شما میتوانند باگهای شما را بفهمند و به شما از طریق آن باگها ضربه بزنند، پس همیشه در بروز نگه داشتن نسخهیPHP وب سایت خود کوشا باشید.
امنیت در cookie ها:
یکی دیگر از مباحث امنیت که باید آن را رعایت کنیم برقراری امنیت در کوکیهاست که باید از دزدیده شدن آنها جلوگیری کنیم یا باید به نحوی عمل کنیم که اگر هم دزدیده شد به پروژهی ما ضربهای نزند.
اولین نکته: هرگز اطلاعات حساس را در کوکیها ذخیره سازی نکنید، برای مثال آیدی کاربری خود را در کوکیها ذخیره سازی نکنید چون کوکیها قابل ویرایش هستند و میتوان به راحتی اطلاعات کاربر را با آنها دزدید.
دومین نکته: مقداری که در کوکیها ذخیره میکنید حتما حتما رمزگذاری یا هش کنید و آنها را در پایگاه داده خود ذخیره کنید تا وقتی که یک کوکی را از سمت کاربر میخوانید با آن کوکی که در پایگاه داده شما دخیره شده است مطابقت داشته باشد تا از دستکاری احتمالی کوکی جلوگیری کنیم.
سومین نکته: کوکیها را از دسترس جاوا اسکریپت خارج کنید، برای این کار کافیست کد زیر را رعایت کنید.
setcookie(name, value, expire, path, domain, secure, httponly);
- name: نام کوکی
- value: مقدار کوکی
- expire: تاریخ انقضای کوکی
- path: که معمولا آن را با مقدار / جایگذاری میکنند تا در تمامی صفحات قابل دسترس باشد.
- domain: نام دامنه
- secure: که معمولا با مقدار false جایگذاری میکنند اگر true باشد فقط در پروتکلهای https در دسترس میباشد.
- httponly: با قرار دادن مقدار true میتوانیم دسترسی جاوا اسکریپت را از کوکیها ببندیم.
توجه داشته باشید که به ترتیب وارد کردن این مقادیر مهم است.
بدون دیدگاه