ترفند امنیتی برای php

+۱۵ ترفند امنیتی برای بالا بردن امنیت برنامه PHP شما – قسمت سوم

۱۱- یک نشست برای هر کاربر:
اگر لازم است، مطمئن شوید که یک کاربر از دو محل وارد برنامه نشده باشد. اگر از محل دوم وارد برنامه شد، کاربر محل اول به صورت خودکار از برنامه خارج شود. این کار برای وبسایتهایی که اطلاعات محرمانه ردوبدل میکنند مهم است. مانند فروشگاهها.

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

 

۱۲- تعیین مناسب مجوزهای دستری برای کاربر پایگاه داده:
اگر یک مشکل امنیتی کوچک در مقابل حمله تزریق کد (sql injection) در وبسایت شما وجود داشته باشد و در مجوزهای دسترسی کاربر پایگاه داده (DB USER) مجوز نوشتن (write) بر روی فایلهای سیستمی وجود داشته باشد، یک فرصت عالی برای هکرهاست تا با یک نرم افزار ساده مثل sqlmap کل وبسایت شما را زیر و رو کنند. بنابراین در هنگام تعیین مجوزهای دسترسی به کاربر پایگاه داده توجه کافی بکنید.

 

۱۳- لیست کردن محتویات دایرکتوریها را غیر فعال کنید:
روش httaccess
نوشتن کد زیر در فایل htaccess. لیست کردن دایرکتوریها (directory listing) را غیر فعال میکند:

استفاده از فایل index.html
اگر سرور شما اجازه استفاده از روش بالا را نمیدهد. راحت ترین راه قرار دادن یک فایل index.html خالی در تمام دارکتوریهاست. در این صورت با باز شدن دایرکتوری در مرورگر، صفحه index.php اجرا خواهد شد.

 

۱۴- فایلها و منابع مهم را خارج از دایرکتوری WEB_ROOT نگهداری کنید:
در حالت عادی، زمانی که برنامه شما روی هاست هست، فایلها در پوشه زیر ذخیره میشود:

تمام محتویاتی که برای دسترسی از طریق url لازم است در پوشه www نگهداری شود، و بقیه فیلها به خارج از آن پوشه منتقل شوند تا از طریق وب قابل دسترس نباشند. مثلا فایلهایی که شامل اطلاعات برقراری ارتباط با پایگاه داده است یا عکسها و فایلهای دیگر:

با این کار، دیگر فایلها نمایش داده نمیشود حتی اگر حالت “لیست محتویات دارکتوریها” هم فعال باشد.

 

۱۵- display_errors را در فایل php.ini غیر فعال کنید:
اصلا در غیر فعال کردن نمایش خطاها (display_errors) از طریق htaccess و یا ini_set و یا هر روش دیگری صبر نکنید (همین الان این کار را انجام دهید).

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

 

۱۶- تعیین سطح دسترسی درست برای دایرکتوریها در محیط نشر:
باتوجه به نیاز برنامه به خواندن و نوشتن یک فایل، باید سطح دسترسی دایرکتوریها را بدرستی تعیین کرد. برای هر کاری دایرکتوری جداگانه درست کنید و سطح دسترسی آن را تعیین نمایید. مثلا دایرکتوری temp یا دایرکتوری cache و …

برای دایرکتوریهای مهم مانند فایلهای هسته ای (core files) برنامه، یا فایلهای کتابخانه ای (library) باید اطمینان حاصل کنید که قابل نوشتن نباشد.

 


منابع:

 ۱٫ http://www.binarytides.com/15-tips-to-make-your-php-application-secure/
۲٫ http://phpsec.org/projects/guide/
۳٫ http://en.wikipedia.org/wiki/Session_fixation
۴٫ http://www.slideshare.net/jikbal/web-application-security-with-php
۵٫ http://www.sk89q.com/2010/04/printable-php-security-checklist/
۶٫ Zend PHP 5 Certification STUDY GUIDE

قسمت اول | قسمت دوم | قسمت سوم


نظر شما چیه؟

۱۵ دیدگاه

    • فؤاد طهماسبی نویسنده

      سلام، خواهش میکنم آقا مسلم، خوشحالم اینجا میبینمتون.

    • فؤاد طهماسبی نویسنده

      سلام ، خواهش می کنم .

  1. حمید

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

    • فؤاد طهماسبی نویسنده

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

  2. وحید

    سلام مهندس. خسته نباشی. مقاله مفید و قابل تاملی بودو جای تشکر و سپاس فراوان داره. من به شخصه استفاده کردم.
    […]

    • فؤاد طهماسبی نویسنده

      سلام، ممنون ازتون.
      در رابطه با موضوع اشاره شده براتون ایمیل فرستاده شد.

  3. حامد

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

    • فؤاد طهماسبی نویسنده

      سلام، نظر لطف شماست.
      والا ما به همه گفتیم ولی مثل اینکه هیچکس از به اشتراک گذاشتن دانشش لذت نمیبره جز من 😉
      من هم متاسفانه یه مدتی هست سرم شلوغه و درگیر بعضی مسائل هستم و نتونستم مطلب بزارم.

متاسفانه امکان ارسال دیدگاه وجود ندارد!