استاندارد دفع/کنترل رباتهای تحت وب

* یعنی من دو بار این مطلبو نوشتم و هربار موقع پابلیش برق رفته ها :((

* یه ضرب المثل امنیتی داریم که شاعر میگه:

“Security through obscurity” is not reliable.

اگه یادتون باشه من قبلا یه مطلب نوشته بودم در مورد رباتهای دنیای وب یا Web Botها. اینکه کلا چند نوع ربات تحت وب داریم، کدومهاش رباتهای خوش ساخت هستند و کدوماش به اصطلاح بدخیم هستند؟ در ادامه اون متن هم نوشته بودم که هر کدوم از این رباتها ممکنه چه نوع مشکلاتی رو برای مدیر وب فراهم کنن. در پایانش هم گفته بودم که راه خلاصی از دست این مشکلاتی که بیان کردیم رو بعدا میگم که البته هیچ وقت فرصت نشد اون بحث رو ادامه بدم. تا الان که حالا در ادامه میگم چرا مطرحش کردم..
پس بهتره ابتدا یه دور برید این پست و صورت مسئله رو بخونین و در پاراگرافهای زیر هم راه حل آورده شده این لحن جدیش واسه این بوده که این بخش متعلق به یک گزارش تخصصی بوده که خودم راجع به امن سازی وب سرورها نوشتم:-)

* خوشبختانه روشی برای مدیران وب و یا وب مسترها وجود دارد که تاثیرات منفی بیشتر ربات‌ها را روی وب سایتشان کم کنند و یا از بین ببرند. بدین منظور، یک سری قراردادها به نام استاندارد دفع ربات‌ها (REP) ایجاد شده است. با اینکه REP یک استاندارد رسمی برای اینترنت محسوب نمی شود، ولی توسط اغلب ربات‌های خوش نیت یا خوش ساخت پشتیبانی می‌شوند (در اینجا منظور ربات‌هایی هستند که در اغلب موتورهای جستجو وجود دارند.)
مدیران وب و آنهایی که مایلند فعالیت‌های ربات‌ها را روی وب‌سرورشان محدود کنند، باید یک فایل متنی به نام robots.txt ایجاد کنند. نام فایل همیشه باید همین باشد و در دایرکتوری root وب‌سرور قرار داده می شود. به علاوه، فقط یک فایل برای هر وب سایت مجاز است. توجه داشته باشید که فایل robots.txt استانداردی است که به صورت ارادی توسط برنامه‌نویسان ربات‌های خوش نیت پشتیبانی می‌شود ولی ربات‌های مهاجم (مانند EmailSiphon و Cherry Picker) این استاندارد را نادیده می‌گیرند.

robots.txt یک فایل ساده متنی است که شامل چند کلید اصلی و سپس مشخصات فایل است. هر خط از فایل یا خالی است و یا شامل یک کلید اصلی و اطلاعات مرتبط با آن می‌باشد. این کلیدها جهت آگاهی ربات‌ها از بخش‌هایی از وب سایت که باید از نظر فهرست بندی استثناء شوند، استفاده می‌شوند.
برای ایجاد این فایل، کلیدهای زیر قابل استفاده هستند:
- User-agent: نام ربات یا اسپایدر است. مدیر وب می‌تواند یک یا چند نام در اینجا بنویسد. نام‌ها حساس به حروف نیستند (به عبارت دیگر googlebot و GOOGLEBOT و GoogleBot یکسان تلقی می‌شوند)
یک * مشخص می‌کند که این خط، یک رکورد پیش فرض است و باقی ربات‌ها را نیز در بر می گیرد. برای مثال اگر فقط بنویسید GoogleBot و بعد * بگذارید، سایر ربات‌ها مشابه نیز فیلتر می‌شوند.
- Disallow: به ربات‌هایی که در بخش User-Agent نامبرده شده‌اند، می‌گوید که چه بخش‌هایی از وب سایت قابل جستجو نیست. برای مثال images/ به ربات‌ها می‌گوید که هیچ فایلی را در دایرکتوری images و یا زیر دایرکتوری‌های آن باز و یا فهرست‌بندی نکنند. بنابراین برای مثالimages/special/ توسط ربات‌های محروم شده فهرست نمی‌شود.
توجه کنید که do/ به همه دایرکتوری‌هایی که با do شروع می‌شوند اعمال می‌شود (مانند do/ documents/، docs/ و …) در حالیکه /do/ فقط به دایرکتوری که نام آن do است اعمال می‌شود. همچنین مدیر وب می‌تواند یک فایل خاص را مشخص کند. برای نمونه میتواند بنویسد: /mydata/help.html تا از دسترسی این فایل توسط ربات‌ها جلوگیری کند.
ورودی‌ای که فقط شامل / باشد می‌گوید که هیچ چیز از وب سایت مذکور نباید توسط ربات‌ها قابل دسترسی باشد. حداقل باید یک disallow برای User-agent وجود داشته باشد.

راه‌های زیادی برای استفاده از فایل robots.txt وجود دارد. برخی مثالهای ساده آن عبارتند از:
مثالی جهت نپذیرفتن کلیه ربات‌ها از دایرکتوری‌های خاص:

User-agent: *
Disallow: /images/
Disallow: /banners/
Disallow: /Forms/
Disallow: /Dictionary/

برای نپذیرفتن کلیه ربات‌ها از کل دایرکتوریهای وب سایت

User-agent: *
Disallow: /

جهت نپذیرفتن ربات خاصی (مثلا Googlebot) از دسترسی به یک صفحه مشخص

User-agent: GoogleBot
Disallow: tempindex.html

نکته مهم: توجه داشته باشید که robots.txt برای هر کسی قابل استفاده است. به عبارتی دیگر یافتن این فایل امری ساده است. بنابراین یک مدیر وب باید دقت کند که نام فایل‌ها و یا پوشه‌های مهم را مشخص نکند و اگر لازم است این فایل‌ها توسط ربات‌ها قابل دسترسی نباشند بهتر است از صفحات رمز دار (Password Protected Pages) استفاده کنید تا توسط ربات‌ها جستجو نشوند.
اگر اطلاعاتی که روی وب سرور قرار دارد، حساس است، از این فایل استفاده نکنید مگر اینکه ترافیک وب سایت بالا باشد. در اینصورت، توجه کنید که علاوه بر قرار دادن نام آنها در این فایل از سایر مکانیزمهای هویت شناسی (authentication) جهت هویت سنجی کاربری که بدانها دسترسی پیدا کرده است، استفاده کنید. نیز باید این خطر را بپذیرید که در این حالت، به مهاجم این شانس اعطا شده است که بدون هیچ زحمتی، دست کم نام فولدرهای مهم و یا مسیر برخی از فایلهای حساس را بداند.

* خوب این چیزی بود که باید مینوشتم. به طور خلاصه این فایل به عنوان راهی پیشنهاد شد که تاثیر رباتها رو روی وب سرور کاهش بده. اما طبق معمول این تکنولوژی هم مورد سوء استفاده قرار گرفت:) بهانه ام برای نوشتن این متن، این مطلب بود: سایت ها و مقالات مخفی اینترنت را چگونه بیابیم؟!
توی این متن اصلا اشاره نشده که هدف از این فایل این نیست که یه مرجعی باشه که شما اطلاعات مخفی یک سایت رو بیابید بلکه این تکنولوژی نیتش خیر بوده طفلک اما هکرها اونو مورد سوء استفاده قرار دارند چون اغلب احساس میکنن ممکنه اطلاعات مربوط به پیکربندی سایت و یا سرور ممکنه توی مسیرهایی باشه که توسط این فایل مشخص شدن.
برای مثال به این آدرس برید و فایل Robots.txt مربوط به سایت مایکروسافت رو نگاه کنن:)

* چند توصیه مهم:
۱- همون طور که گفتم اگه داده های سایتتون از نظر امنیتی حساس محسوب میشن از این فایل برای مخفی کردن اونها استفاده نکنید! همونطوری که اون ضرب المثل میگه ایجاد ایمنی از طریق اختفا هیچ وقت قابل اتکا نیست. چون ابزارهایی هستند که ظرف چند ثانیه کلیه موارد مخفی روی یک وب سرور رو واسه تون ردیف می کنن.
۲- از روشهای دیگه برای مخفی کردن اینگونه اطلاعات استفاده کنید. حتما نامهای غیرمعمول روی اونها بگذارید و اطلاعات را رمزنگاری (Encryption)  کنید.
۳- از قرار دادن هر نوع سرویس و یا برنامه اضافی روی وب سرور اکیدا بپرهیزید و سعی کنید غیر از پورتهای مربوط یه وب سایت (یعنی پورت ۸۰ برای http و پورت ۴۴۳ برای SSL/HTTPS) تمامی پورتهای دیگه رو مسدود کنید.
۴- روی فایلها و یا فولدرهای حساس قویا، دسترسی های مربوط به وب سرور (مثلا مجوزهای IIS و یا آپاچی) و همین طور اختیارات NTFS رو تنظیم کنید تا کاربران اینترنت (یعنی کاربران anonymous کارگزار) رو اکیدا از دسترسی به اینگونه اطلاعات محروم کنید.

۱۸ نظر

  1. فرزاد ۱۳۸۷-۰۳-۹، ۱:۴۱ ق.ظ

    “از قرار دادن هر نوع سرویس و یا برنامه اضافی روی وب سرور اکیدا بپرهیزید”

    شده حکایت خرما D:

    جواب به این نظر

  2. زهرا ۱۳۸۷-۰۳-۹، ۱:۴۲ ق.ظ

  3. فرزاد ۱۳۸۷-۰۳-۹، ۱:۴۷ ق.ظ

    یادم نیست دقیقا کی بوده که به یکی نگفته خرما نخور چون که خودش خورده بوده.

    ۵ + ۸ چند میشه ؟ امیدوارم درست جواب بدم

    جواب به این نظر

  4. آرش زاد ۱۳۸۷-۰۳-۹، ۱:۵۰ ق.ظ

    سلام…
    در مورد اون پستی که بهانه نوشتن این پست شد باید بگم که در اونجا هیچ اشاره ای به اینکه از این طریق مرجع صفحات مخفی رو میشه بیرون کشید گفته نشده…!
    فکر نمی کنم هم این فایل چندان برای هکرها اهمیت داشته باشه…
    چرا که هیچ آدم عاقلی نمیاد آدرس های خاص خودش رو از طریق این فایل پنهان کنه…!
    علاوه بر اینکه در اون متن، به پستی که توضیح نسبی ای رو در مورد Robots.txt داده، ارجاع شده، بلکه داخل متن هم چنین جمله ای پیدا میشه که:
    “Robots.txt همانطور که از پسوند آن پیداست، فایلی است متنی که در ریشه اصلی سایت قرار می گیرد و به وسیله آن می توان فهرست شدن صفحات را توسط روبوت های جستجو کنترل کرد.”
    به هر حال، از دیدن متن مرتبطی با این موضوع خوشحال شدم… :)

    جواب به این نظر

  5. ©Mersoft® ۱۳۸۷-۰۳-۹، ۱:۵۲ ق.ظ

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

    جواب به این نظر

  6. زهرا ۱۳۸۷-۰۳-۹، ۲:۰۰ ق.ظ

    جدای از همه چیز پس شما آرش زاد هستید؟!!!!!!!!!

    ما اینهمه توی توئیتر غوغا کردیم!! اگه نظرخواهی شما درست بود من شاید اصلا این پستو نمی نوشتم:)) هیشکی نگفت اون وبلاگ مال کیه؟:)

    این فایل از اینجهت مهمه که بالاخره برخی از فولدرها و یا اسامی فایلهای مهم رو میاره. مثلا در مورد سایت شما login ;)

    جواب به این نظر

  7. زهرا ۱۳۸۷-۰۳-۹، ۲:۰۱ ق.ظ

    به Mersoft:
    من الان با آی ای میبینم با فایرفاکس هم دیدم مشکلی نداشت. میتونین یه اسکرین شات بهم بدین؟

    جواب به این نظر

  8. ©Mersoft® ۱۳۸۷-۰۳-۹، ۲:۲۱ ق.ظ

    اینم شات توی آی ای ۷

    جواب به این نظر

  9. ©Mersoft® ۱۳۸۷-۰۳-۹، ۲:۲۱ ق.ظ

  10. آرش زاد ۱۳۸۷-۰۳-۹، ۲:۴۷ ق.ظ

    اینجانب آرش زاد هستم…!!!
    از غوغای توییتر خبر ندارم منتها دوست دارم با خبر بشم…!
    کدوم نظر خواهی، کی نگفت اون وبلاگ مال منه…؟!

    در مورد دایرکتوری لاگین وبلاگ من هم باز چیز مهمی به حساب نمیاد…
    همونطور که میشه صفحه لاگین وبلاگ شما رو دید، صفحه لاگین وبلاگ من رو هم میشه مشاهده کرد…!

    جواب به این نظر

  11. زهرا ۱۳۸۷-۰۳-۹، ۲:۵۵ ق.ظ

    منظور من چیز دیگری بود… شما گفتید چیز مهمی توی این فایل نیست:) میگم این نظر امثال آگاهانی چون شماست که میدونن نباید چیز مهمی توی این فایل گذاشت. وگرنه با همون کلیدواژه ای که توی وبلاگتون هست سرچ کنین و این فایل رو درباره برخی از سایتهای دیگه ببینین
    یارو حتی مسیر web.config رو داده به این فایل:)

    در مورد غوغا همون روز که این مطلب رو نوشتید میخواستم براتون کامنت بذارم که نظرخواهیتون مشکل داشت یعنی هی می پرید

    منم تو توئیتر چند بار پرسیدم این وبلاگ مال کیه؟ نویسنده اش کیه و اینا کسی جواب نداد و ما تاکنون حسرت این پست به دلمان مانده بود. دوبارم که برق رفت :دی

    جواب به این نظر

  12. آرش زاد ۱۳۸۷-۰۳-۹، ۳:۰۵ ق.ظ

    گمون کنم اینکه در توییتر نمی دونستین که این وبلاگ متعلق به کیه این بود که یوزر توییتر اینجانب رو بلاک کردین…!

    ضمنا، این فیـــــــلتر اسپم کامنتینگ شما چرا اصلا تنوع نداره…؟!
    من مدام باید ۴ رو با ۱ جمع کنم…!!!

    جواب به این نظر

  13. زهرا ۱۳۸۷-۰۳-۹، ۳:۱۲ ق.ظ

    نه بابا.
    من تا به حال تو توئیتر کسیو بلاک نکردم
    الان چک کردم
    از روی همین آواتارتون
    دیدم تو لیست فالورز هستید :دی

    البته اون آیدش به گمانم تنزاد؟ یا همچین چیزی بود. درتسه؟

    جواب به این نظر

  14. آرش زاد ۱۳۸۷-۰۳-۹، ۳:۱۷ ق.ظ

    بله درتسه، آرش زاد هستم…!!!!

    جواب به این نظر

  15. زهرا ۱۳۸۷-۰۳-۹، ۳:۳۶ ق.ظ

    بسیار خوب. شرمنده. شاید اون لحظه آنلاین نبودید:)

    جواب به این نظر

  16. مهدی ۱۳۸۷-۰۳-۹، ۳:۱۲ ب.ظ

    تو هم که رفتی جزو مافیا

    جواب به این نظر

  17. persianeyes ۱۳۸۷-۰۳-۱۱، ۹:۰۸ ق.ظ

    مطلب خیلی مفیدی بود، من این چند روزه وقت نکرده بودم بخونمش.
    ولی همون طور که خودت گفته بودی این فایل فقط در صورت encrypt شدن مفید خواهد بود.
    خودت میدونی خیلیا هستن که connection string دیتابیس رو هم روی web.config بدون رمز گذاری قرار میدن، بعد انتظار دارن وب سایتشون هک نشه.

    جواب به این نظر

  18. تبلیغات رایگان ۱۳۸۷-۰۹-۲۲، ۵:۴۳ ب.ظ

    http://www.onlinetabligh.com

    اولین سایت تبلیغاتی رایگان در ایران…

    انواع تبلیغات از قبیل:
    ۱- متنی
    ۲- ویژه متنی
    ۳- عکس دار
    ۴- ویژه عکس دار
    ۵- لینک دار
    ۶- ستاره دار

    حتما دیدن فرمایید……

    جواب به این نظر

نظر شما