آموزش طراحی وب

امنیت فرم تماس با cookie

security contact form

سلام خدمت همراهان همیشگی ماهنامه طراحی وب

امنیت در سایت یکی از مهم ترین معقوله های برنامه نویسی محسوب میشه. بیشترین راه نفوذ نفوذگرها و هکرها به سایت ، فرم هایی هستند که در سایت شما در اختیار تمامی کاربران قرار میگیره. یکی از این فرم ها ، فرم تماس با ما هست.

شما توسط کد امنیتی و فیلتر کردن ورودی های ارسالی میتونید بخشی از امنیت این فرم رو تامین کنید. اما آیا راهه دیگه ای برای تامین امنیت هم هست ؟

بله راه های بسیاری وجود داره ، در این مقاله یکی از تجربیات خودم رو در رابطه با یکی از راه های افزایش امنیت فرم ها در اختیارتون قرار میدم. بالاخره هرچقدر لایه های امنیتی سایتتون رو بالا ببرید خیالتون آسوده تر هست و هکرها هم با مشکلات بیشتری روبرو میشن و در نهایت از تصمیمشون صرف نظر میکنن ، البته امیدوارم که اینطور باشه 🙂

تصور کنید یک فرم تماس دارید و ربات پیشرفته ای هم برای ورود اطلاعات از طریق فرم برای سایت شما تعبیه کردن؛ اینجاست که بصورت غیر منتظره در کمترین زمان شاهد ذخیره سازی چند هزار رکورد در دیتابیس میشید، بالاخره از طریق یکی از دستورات به دیتابیس شما نفوذ میکنن.

یکی از روش های جلوگیری از ارسال پی در پی اطلاعات از طریق فرم ، بستن دسترسی ارسال اطلاعات در هر چند دقیقه هست. به این صورت که زمانی که کاربر و یا ربات اطلاعات اول رو فرستاد تا مثلا ۵ دقیقه دسترسیشو برای ارسال دوم ببندید. در این حالت کاربر مجبور میشه هر ۵ دقیقه یکبار اطلاعات ارسال کنه و ادامه ی کار ربات هم کلا قطع میشه چون نمیتونه پی در پی اطلاعات در دیتابیس ثبت کنه.

 

خوب حالا به چه صورت باید این کار رو انجام بدیم؟

کار ساده ایه، شما میتونید با ست کردن cookie این کار رو به راحتی انجام بدید. هر بار ارسال اطلاعات یک کوکی به مدت ۵ دقیقه ست میکنیم. شاید یک انسان بتونه با پاک کردن این کوکی دوباره اطلاعات ارسال کنه اما یک ربات نمیتونه، هدف ماهم در این آموزش ربات ها هستند چون بیشترین هک ها توسط ربات های هکری انجام میشه.

 

خوب حالا بریم سراغ آموزش؛ زمانی که اطلاعات فرم به سمت سرور ارسال میشه، ابتدا چک می کنیم که cookie قبلا ست شده یا نه؟

اگر کوکی ست شده بود یعنی هنوز ۵ دقیقه نگذشته و کاربر قصد ارسال اطلاعات مجدد رو داره ، بنابراین پیغامی به کاربر نمایش میدیم ” در هر ۵ دقیقه تنها یکبار میتوانید پیغام خود را ارسال نمایید “.

اگر کوکی ست نشده بود، اون رو با مدت زمان ۵ دقیقه ست میکنیم و عملیات ارسال رو انجام میدیم. در مثالی که قراره براتون بزنم اطلاعات ارسال شده رو با تابعی که خودم نوشتم به نام Sanitize فیلتر هم میکنیم.

به کد زیر دقت کنید:

1

ابتدا یک تابع نوشتیم تا ورودی های ارسال شده رو فیلتر کنیم و عباراتی که یک هکر ممکنه وارد کنه حذف کنیم و یک داده ی تمیز به دیتابیس ارسال کنیم.

2

سپس با چک کردن کوکی ارسال و عدم ارسال رو چک میکنیم. در صورتی که کوکی قبلا ست شده باشه به کاربر یک پیغام نمایش داده میشه و ارسال انجام نمیشه ، زمانی که کوکی ست نشده باشه به صورت زیر یک کوکی با نام StopSubmit ست میکنیم و عملیات ارسال رو انجام میدیم:

3

این کوکی به مدت ۵ دقیقه یعنی ۳۰۰ ثانیه اعتبار داره و بعد از ۵ دقیقه منقضی میشه و از کار میوفته و شما میتونید ارسال مجدد داشته باشید.

 

جدای از این دو مورد که خدمتتون آموزش دادم حتما از کد امنیتی هم استفاده کنید، دقت داشته باشید کدهای امنیتی که با session کار میکنن نفوذناپذیر تر از کدهای امنیتی دیگه هستند.

خوب دوستان امیدوارم که این آموزش براتون مفید بوده باشه.

میتونید این پروژه رو انتهای مطلب دانلود کنید

همیشه امن و پاینده باشید.

منتشر شده در پنجمین ماهنامه طراحی وب

حسین همت یار

نویسنده در مدرسه مجازی ایرانیان ، دانشجوی رشته IT ، طراح وب و علاقه مند به تازه های دنیای اینترنت و وب و البته لینوکس

دیدگاه ۳

  • درود خوب چرا از SESSION استفاده نکنیم که کاربر هم نتونه اونو دور بزنه علاوه بر روبات ها !؟ کوکی ها عملا به درد کارهای ساده می خورند و در تکنولوژی امروز زبان های برنامه نویسی تحت وب عملا کاربردی ندارند پس لزومی ندارد از مسیرهای قدیمی استفاده کنیم یا بهتر بگم ساده.

    • سلام دوست عزیز
      session از نظر امنیتی بهتره اما با بستن مرورگر از بین میره ، مگر اینکه تو دیتابیس ذخیره کنی، که این کار رو با cookie هم میتونید انجام بدید، اما cookie تا زمانی که کاربر پاکش نکنه از بین نمیره و شما میتونید زمان برای expire شدنش تعیین کنید.
      من شخصا از session برای ورود و خروج و کدهای امنیتی استفاده میکنم که در اینجا بستن مرورگر مهم نیست و امنیت هم بهتر بر قرار میشه، اما تو این مقاله ما میخوایم کاربر رو حتی با بستن مرورگرش مسدود نگه داریم، بدون اینکه بخوایم از دیتابیس استفاده کنیم.
      باز بستگی به سلیقه و انتخاب برنامه نویس داره که از کدوم راه استفاده کنه، کسایی که بخوان از کوکی استفاده کنن میتونن از این مقاله بهره ببرن.
      موفق باشید.

  • سلام چرا فکر میکنید ربات نمیتونه کوکی و در مرحله بعد سیشن هارو کنه؟؟ بهترین راه قراردادن سوال امنیتی هست یا این که ای پی هارو در دیتابیس ذخیره کنیم که اینم زیاد روش جالبی نیس!!

آیا سوالی دارید؟

پنل کاربران

بستن
*
*

نظرسنجی

به کدام دسته موضوعی علاقه مند هستید؟

آخرین پرسش و پاسخ ها

اموزش تصادفی

خبرهای باحال دریافت کن

خبرهای باحال دریافت کن

ما هم مثل شما از دریافت ایمیل های مزاحم خوشمون نمیاد. فقط مطالب جدید و خبرهای ویژه رو به اطلاع شما میرسونیم. قول میدیم اسپم نکنیم :)

ثبت نام انجام شد ، لطفا ایمیلی که براتون ارسال میشه رو تایید کنین