جمعه ۳۱ فروردین ۱۴۰۳ |  عضویت / ورود





[ بخش اصلی آموزشها | افزودن آموزش | داری بیشترین امتیاز | دارای بیشترین بیننده | جدیدترین نظرات ]

امنیت در تابع include در php

این آموزش مربوط است به موضوع آموزش PHP‏ که توسط Gytyonline در تاریخ: Friday, 2011 April 08 ارسال شده است.   |   تعداد بازدید: 9724 بار   |   امتیاز متوسط: 5

صفحات مقاله: صفحه 1 | صفحه 2 |




مسلما می‌دانید که php بر اساس زبان سی نوشته شده است و خیلی از توابع این دو زبان هم دقیقا مثل هم هستند و حتی کاربرد‌هایشان، حالا می‌خواهم شما را به کلاس برنامه نویسی مقدماتی توی دانشگاه ببرم که تقریبا بیشتر رشته‌های فنی داشته اند اگر یادتان باشد در مبحث آرایه‌ها وقتی استادتان به شما این مبحث را آموزش می‌داد گفته بود که آخرین خانه از آرایه با عبارت 0\ و یا همان نال بایت پر‌خواهد شد و هیچ مقدار دیگری را نخواهد پذیرفت و برنامه وقتی به این عبارت برسد خواهد فهمید که آرایه به انتها رسیده و آن تمام شده است و دیگر ادامه نخواهد داد حالا کافی است کاربر ما در اسکریپت نوشته شده توسط ما از این ترفند استفاده نماید یعنی توسط یک کد هگز که به صورت 00% خواهد بود کل روال کار ما را عوض کند یعنی مقدار فرستاده شده به صورت زیر باشد:

include

 

 

 


حال دیگر پسوندی را که ما در ادامه رشته قرار داده‌ایم خوانده نخواهد شد مثل اینکه اصلا php. وجود ندارد و کاربر قادر خواهد بود هر فایل را در هر شاخه‌ای و با هر پسوندی include نمایید !!!
جالب بود نه؟ دقت کنید که تعداد /... ها اصلا مهم نیست چون به هر مقداری هم که باشد و کاربر بخواهد عقب برود از root عقب‌تر نمی‌تواند برود و از آنجا می‌تواند آدرس دلخواه خود را وارد نماید.
یا حتی ممکن است کاربر از این فراتر برود مثلا یک فایلی را بر روی سایت شما آپلود نماید یک فایل مخرب و آن را اجرا نماید مثلا در قسمت آپلود آواتار اگر مسائل ایمنی رعایت نشود کاربر همچین فایلی را آپلود خواهد کرد shell.php.jpg خوب سایز فایل کمتر از حد مجاز است پس موردی ندارد پسوند فایل jpg می‌باشد پس فایل آپلود خواهد شد اما چون عکس حقیقی نیست نمایش داده نمی‌شود و این اصلا مهم نیست برای کاربر خوب حالا کاربر آدرس آواتار‌ها بر روی سایت شما را دارد محلی که آواتار‌ها آپلود می‌شود و با استفاده از ترفندی که گفتم یعنی 00% آدرس را به این صورت وارد می‌کند:

include

 

 

 

 

و دیگه کلا هاست در اختیار هکر محترم قرار خواهد گرفت.
پس دیدی که استفاده نا مناسب و اشتباه ممکنه چه خطرات زیان باری را داشته باشد.
اما خوب حالا واقعا بهترین و امن‌ترین راه حل برای استفاده از این تابع چیست؟ در این جور مواقع چه کاری انجام دهیم؟
بهترین راه حل استفاده از آرایه‌ها می‌باشد به این صورت که ما آرایه ای به شکل زیر تعریف خواهیم کرد:

include




که داریم language[0]=$farsi و language[1]=$english و مقداری را که کاربر فرستاده است با این دو خانه از آرایه مقایسه خواهیم کرد اگر مقدار آن دقیقا برابر بود با farsi و یا دقیقا برابر بود با english خواهیم نوشت:

include






راه حل دیگری که می‌توان از آن استفاده کرد مخصوصا برای جلوگیری از کاراکتر‌های غیر مجاز مثل نال بایت استفاده از عبارات منظم می‌باشد.
خوب با استفاده و رعایت موارد گفته شد در بالا اسکریپت ما امن خواهد شد و کاربر قطعا دیگر نمی‌تواند فایل دیگری را اجرا نماید. برای انتخاب قالب نیز می‌توان از همین روش استفاده کرد.
امیدوارم این آموزش بدردتان خورده باشد.
اگر جایی از آموزش مشکلی داشت و یا موارد دیگری برای تکمیل تر شدن آموزش به نظرتان رسید خوشحال خواهم شد که برایم ارسال نمایید.
موفق باشید.
امین شفیعی؛


 


صفحات مقاله: صفحه 1 | صفحه 2 |



نظر شما در مورد این آموزش


نام شما:
نظر شما:

جمع عدد 15 با 10 را در كادر زیر وارد نمایید:
(این كار برای جلوگیری از فعالیت موتورهای اسپمر است)


چه امتیازی به این مطلب می‌دهید؟ 



بوسیله: , در: Tuesday, 2012 November 20
عااااااااااااااااااااااااااااااالی بود مرسییییییی



بوسیله: , در: Tuesday, 2012 November 20
عااااااااااااااااااااااااااااااالی بود مرسییییییی


amir
بوسیله: mafia1990, در: Sunday, 2013 September 08
tnx


saeid programmer
بوسیله: , در: Tuesday, 2013 September 10
سلام دوست عزیر
فکر نمی کنم کسی طراح سایت باشه و از این اشتباهات انجام بده
این بدترین حالت ممکن است که در سایتی زبان توسط combo box گرفته شود. اما به هر حال از این که زحمت کشیدید و مطالب رو تایپ کردید ممنونم.
اما در کل این مطالب شما صحت دارد و شاید که نه حتماً سایت هایی که هک می شوند از این قبیل حفره ها زیاد دارند!


saeid programmer
بوسیله: , در: Tuesday, 2013 September 10
سلام دوست عزیر
فکر نمی کنم کسی طراح سایت باشه و از این اشتباهات انجام بده
این بدترین حالت ممکن است که در سایتی زبان توسط combo box گرفته شود. اما به هر حال از این که زحمت کشیدید و مطالب رو تایپ کردید ممنونم.
اما در کل این مطالب شما صحت دارد و شاید که نه حتماً سایت هایی که هک می شوند از این قبیل حفره ها زیاد دارند!


saeid programmer
بوسیله: , در: Tuesday, 2013 September 10
سلام دوست عزیر
فکر نمی کنم کسی طراح سایت باشه و از این اشتباهات انجام بده
این بدترین حالت ممکن است که در سایتی زبان توسط combo box گرفته شود. اما به هر حال از این که زحمت کشیدید و مطالب رو تایپ کردید ممنونم.
اما در کل این مطالب شما صحت دارد و شاید که نه حتماً سایت هایی که هک می شوند از این قبیل حفره ها زیاد دارند!


اسماعیل
بوسیله: , در: Saturday, 2013 October 12
عالی بود ... دستتون درد نکنه ... ممنون


محمد
بوسیله: , در: Wednesday, 2024 February 28
سلام وقت بخیر rnاگه ابتدای ه صفه از سشن استفاده کنیم هم خوب است rnو فرد مهاجم به صفه های پی اچ پی دسترسی پیدا نمی‌کند

Tutorials ©