فرهاد مهریاری
Full Stack Web Developer

4 نکته مهم در امنیت وبسایت ها که باید رعایت کنید

چگونه امنیت وب سایت را بالا ببریم؟ در این مقاله قصدمون بررسی چند نکته مهم و ضروری جهت افزایش ضریب امنیتی وب سایت هست و اولین نکته یا مقد این که ما ضریب امنیتی 100% نداریم ، هر کسی هم این ادعا رو داشته باشه بدونید که فقط در حد ادعاست

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران

به دو دلیل :

1- به نظر ضخصی من توی برنامه نویسی ، یه حد مشخصی نداریم که هر کسی به اون مقدار معین از دانش رسید ادعا داشته باشه هر حفی که من بزنم دست و هر کدی که من بنویسم در هر شرایط صحیح و امن هست ، چرا که همه چیز در حال پیشرفت و بروزرسانی هست.

2- امنیت یک وبسایت تنها وابسته به کد های برنامه نویسی ما نیست ! سرور ی که ما تهیه می کنیم در این امنیت دخیل هست ، کاربری که از برنامه ما استفاده می کنه هم دخیل هست به همین جهت ممکن هست وب سایت ما هر چند از لحاظ امنیت خیلی مطمئن باشه ولی به دلیل سهل انگاری کاربر ، از طریق روشی مثل دسکتاپ فیشینگ یا مهندسی اجتماعی وب سایت مورد حمله قرار بگیره.خب بریم سراغ نکات اصلی :

4 نکته مهم در امنیت وبسایت ها که باید رعایت کنید

نکته اول SESSION

در برنامه زمانی که اطلاعات مهمی در session ذخیره میشه بهتر هست که از sessionregenerateid استفاده کنیم که این امر برنامه ما رو در مقابل حملات session hijacking ایمن میکنه ، که این حملات قبلا توسط آقای احسان امجدی عزیز در جزیره امنیت مفصلا بحث شده ، حتما بخونید و منظورمون از این جمله که گفتیم زمانی که اطلاعات مهمی در session ذخیره میشه ، وقتی هست که مثلا کاربر ورود می کنه و مواردی از این قبیل

نکته ی دوم CAPTCHA

ما توی برنامه یا همون وب سایتمون از فرم هایی استفاده می کنیم که نیاز هست توسط کاربر پر بشه ، مثل فرم ورود کاربران که آدرسی که اطلاعات فرم به اون ارسال میشه قابل رویت برای همه هست (حتی اگه برنامه نویس کد های جاوا اسکریپت و کد گذاری بکنه یا از آجاکس استفاده کنه یا هر نوع پنهان کاره دیگه ای باز میشه از طریق developer tools از تب network آدرس و اطلاعات ارسالی رو دید ) با استفاده از حمله brute force از طریق کد به اون آدرسی که فرم ما ارسال میشه .

در هر لحظه تعداد خیلی زیادی درخواست ارسال میشه که توسط این میشه در صورت آگاهی به نام کاربری ، رمز عبور رو پیدا کرد که روشش هم خیلی ساده هست چون نام کاربری رو میدونیم مکررا درخواست رو با اون نام کاربری و پسورد هایی که تولید می کنیم ارسال می کنیم در یکی از حالات پاسخ دریافتی از سرور با بقیه متفاوت هست که پسورد ارسالی در اون حالت همون رمز عبوری هست که ما دنبالش بودیم خب حالا برای اینکه از این امر جلوگیری بکنیم استفاده از captcha ها هست که به زبان ساده همون تصاویری که ما متن داخل اون رو در کادری مینویسیم

آموزش ساخت captcha در php

4 نکته مهم در امنیت وبسایت ها که باید رعایت کنید

نکته ی سوم پسورد دو مرحله ای

زمانی که برنامه تحت وب ما از اهمیت بالاتری برخوردار هست طبیعتا نیاز به یک فرم ورود ایمن بیشتر احساس میشه به همین جهت میتونیم برای ورود پسورد دو مرحله ای رو توسعه بدیم.برای شروع ما دو رمز عبور برای کاربر در نظر میگیریم در فرم ورود کاربر رمز اول رو با نام کاربری وارد می کنه در صورت صحیح بودن یک session مبنی بر صحیح بودن رمز اول ایجاد میشه و سپس کاربر به یک صفحه دیگری هدایت میشه

که اون صفحه زمانی معتبر هست که session صحت رمز اول مقدار دهی و مقدارش true باشه.همچنین صفحه ای که قرار هست کاربر رمز دوم رو وارد بکنه با استفاده از یک تایمر حدودا 30 ثانیه ای در صورت وارد نکردن رمز دوم توسط کاربر اون session صحت رمز عبور اول رو غیر فعال میکنه و کاربر رو هدایت میکنه به فرم ورود اول و نهایتا پس از وارد کردن رمز عبور دوم در صورت صحیح بودن کاربر به صفحه کاربری خود هدایت میشه

نکته ی چهارم MySQL procedure

روش معمولی که در فرم ورود ها برای بررسی صحت نام کاربری و رمز عبور استفاده میشه این هست که کاربر پس از تکمیل اطلاعات در صفحه ای که اطلاعات به اون ارسال شده با استفاده از دستور select اطلاعات کاربران رو از پایگاه داده میگیرند و در آرایه ای با مقادیر وارد شده توسط کاربر مقایسه می کنند که در این حالت اطلاعات کاربران از پایگاه داده منتقل میشه به اون کدی که احراز هویت رو انجام میده خب این چندان خوب به نظر نمیرسه کار بهتری که میشه کرد استفاده از procedure هست که به طریق اون ما در پایگاه داده توابعی رو تعریف می کنیم ، برای این مورد هم ما یک تابعی رو در mysql تعریف می کنیم و دو پارامتر ورودی یعنی نام کاربری و رمز عبور رو برای اون در نظر میگیریم و داخل همون تابع احراز هویت رو انجام میدیم که در این حالت هیچ گاه اطلاعات کاربری مثل نام کاربری و رمز عبور ها از پایگاه داده خارج نمیشه


نظرات