Hyper Text Acces یا httacces چیست و چگونه می توانیم از آن استفاده کنیم ؟

تاریخ انتشار:

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

فایل .htaccess یک فایل ساده اسکی (ASCII) می‏باشد که می‏توانید آن را به وسیله نرم‏افزارهای متنی ساده نظیر Notepad و یا SimpleText به وجود آورید. دقت داشته باشید که این فایل دارای هیچ نامی نمی‏ باشد و فقط دارای پسوند است که پسوند آن، htaccess می‏باشد. برای درست کردن این فایل می‏توانید فایل متنی خود را که مثلا به صورت test.txt می‏ باشد، تغییر نام داده و آن را به صورت .htaccess درآورید.

تذکر: اگر از ویندوز استفاده می‏ کنید و هنگام تغییر نام دادن فایل به .htaccess، پیغام خطایی مبنی بر اینکه «می‏ بایست برای فایل خود نامی را اختیار کنید» دریافت می‏ کنید، فایل را بر روی سرور آپلود کرده و سپس در سرور آن را تغییر نام دهید. این کار به وسیله نرم‏افزارهای FTP نظیر CuteFTP یا AbsoluteFTP بسیار ساده می‏ باشد.

در هنگام استفاده از فایل .htaccess دانستن چهار نکته از اهمیت به‏ سزایی برخوردار است:

نکته اول: فایل .htaccess را می‏ بایست به صورت ASCII آپلود کرده و مجوز دسترسی به آن را بر روی 644 (یا rw-r–r–) تنظیم نمایید.

نکته دوم: فایل .htaccess را می‏توانید به پوشه ‏های مختلفی اعمال نمایید. به عنوان مثال اگر آن را بر روی root آپلود نمایید، تنظیمات آن به کل وب‏ سایت اعمال خواهد شد و اگر آن را درون پوشه‏ای نظیر images/ آپلود نمایید، تنظیمات آن به پوشه images و زیرپوشه ‏های آن اعمال خواهد شد.

نکته سوم: هر htaccess را می‏ بایست درون یک خط تایپ نمایید. یعنی در انتهای هر دستور، می‏ بایست یک‏بار کلید Enter را فشار دهید.

نکته چهارم: به دلیل آنکه نحوه پیکربندی این فایل مانند پیکربندی فایل اصلی سرور (httpd.conf)است تصمیمات بر اساس شرایط اخذ می شود. البته تمامی امکانات httpd.conf را شامل نمی شود!

استفاده از این فایل در همه موارد پیشنهاد نمی شود زیرا امنیت وب سرور را تحت شعاع قرار می دهد. اما در مواقعی که سرور به صورت اشتراکی و اصطلاحا share شده خدمت رسانی می کند و تعداد زیادی سایت برروی آن قرار دارد پیشنهاد آن است که از فایل htaccess استفاده شود. زیرا هر سایت باید توانایی پیکر بندی قسمت مربوط به خود را دارا باشد.

دستوراتی که در یک فایل htaccess مورد استفاده قرار می گیرند، شامل فرامینی جهت کنترل موارد زیر هستند:

  • تصدیق هویت (Authentication) و کنترل دسترسی به دایرکتویرها با تعریف نام کاربری و کلمه عبور در فایلهای htpasswd.
  • – انتقال و هدایت صفحه به مسیر جدید.
  • -جلوگیری و یا کنترل نمایش لیست فایلهای دایرکتوری در مورد تمام فایلها و یا فقط برخی از آنها.
  • -کنترل و یا مسدود کردن دسترسی IP های تعیین شده به محتوای وب.
  • -تعیین نام فایل Index پیشفرض.
  • -تعیین محتوا و صفحاتی جهت نمایش در حالات بروز خطاهای وب (مانند ۴۰۱، ۴۰۲، … ۵۰۵).
  • -جلوگیری از عمل hotlink یا نمایش تصاویر موجود در دایرکتوریها در وبسایتهای دیگر.
  • …….

قلب وب سایت خود را تحت کنترل بگیرید!

ریدایرکت-Redirects

شاید تا به حال برایتان اتفاق افتاده باشد که به وب‏ سایتی مراجعه کرده باشید و سپس متوجه شوید که آدرس وب‏سایت به طور اتوماتیک عوض شده و در واقع شما به آدرس دیگری ارجاع داده‏ شده‏ اید. برای این‏کار می‏توانید از دستور Redirect استفاده نمایید:

Redirect /OldDir/OldFile.html http://www.domainname.com/newdir

حالت کلی دستور به شرح زیر است

Redirect oldlocation newlocation

همچنین می توان همه کاربران را بجز یک IP خاص به صفحه مورد نظر ریدایرکت کرد

ErrorDocument 403 http://www.yahoo.com/
Order deny,allow
Deny from all
Allow from IP

تغییر صفحات خطا

با این کد هم برای خطای 404 یا 500 و … به دلخواه یه صفحه طراحی کنید و وقتی اون خطاها رخ داد صفحه خودتون رو نمایش بدید.

ErrorDocument errornumber /filename.html

به جای errornumber شماره خطا را می نویسید اصولا خطای 404 زیاد اتفاق میفتد بنابراین میتوانید شماره 404 را بنویسید .
در مورد شماره پیغام خطاها هم کمی بگویم :
400این پیغام اصولا زمانی ظاهر می شود که کاربر ادرس اشتباهی رفته باشد
401وقتی کاربر به دایرکتوری و یا جایی میرود که اجازه ورود به انرا ندارد
403وقتی فایل طوری تنظیم شده است که کاربر اجازه دسترسی به ان را ندارد
500internal server error اشکال عموما از اسکریپت های داخلیست

 

جلوگیری از لیست شدن محتویات یک پوشه

بسیاری از هکرها بعد از نفوذ با browse کردن در دایرکتوریهای سایت شما و گشتن به دنبال فولدرها یا فایلها با پرمیشن مطلوب کارشونو تکمیل میکنن و البته خیلی ها از اول از روش دید زدن فولدرهایی که حاوی موتور اسکریپت ها و اطلاعات با ارزشی هستن مثلا فایل config رو در بردارن به سایت نفوذ میکنن برای جلوگیری از این کار، سه راه وجود دارد:

1- ساخت یک صفحه index و قرار دادن آن در پوشه مورد نظر

2- استفاده از فایل .htaccess

3- استفاده از فایلهای HEADER و README

از آنجا که بحث ما در مورد فایل .htaccess می‏ باشد، راه دوم را مورد بررسی قرار می‏دهیم. برای این کار می‏ بایست از فرمان IndexIgnore استفاده نمایید:

IndexIgnore *

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

IndexIgnore *.gif *.jpg

در واقع این کد از لیست‏ شدن تمامی فایل‏هایی که به .gif و .jpg ختم می‏شوند، جلوگیری می‏کند.

استفاده از رمز عبور برای بخش های مختلف سایت

ابتدا فایلی به این نام ایجاد کنید .htpasswd این فایل هم خصوصیاتی چون فایل .htaccess دارد این فایل حاوی نام های کاربری و کلمه های عبور . که بصورت زیر انها را تعیین می کنید

Username:password
Username:password
Username:password

حواستان باشد که هر کدام در یک خط باشند و همچنین به اشتباه فضای space در اخر خط ها وارد نکنید . در ضمن برای نام های کاربری که مشکلی پیش نمی اید اما برای کلمه های عبور برای افزایش امنیت باید از نرم افزارهایی که انها را به کد تبدیل می کنند استفاده کنید . می توانیید از این سایت استفاده نمایید
یادتان باشد که این فایل را در فولدر های بالایی www یا public_html بگذارید یعنی در فولدر main
حال برای انکه مشخص کنید کدام بخش از سایت یا کدام دایرکتوری شامل رمز عبور بشوند باید به این صورت عمل کنید در فایل htaccess خطوط زیر را اضافه

AuthUserFile /pathto/.htpasswd
AuthType Basic
AuthName "Secret Place"
require valid-user

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

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

<files "filename.cgi">
AuthUserFile /home/pathto/.htpasswd
AuthType Basic
AuthName "Secret Place"
require valid-user
</files>

عوض کردن صفحه پیش‏فرض وب‏ سایت

به طور کلی، تمامی وب‏ سرورها از روی قانون خاصی صفحات وب را نشان می‏ دهند. برای آنکه صفحات وب تنها به یک پسوند منحصربه ‏فرد نظیر .htm ختم نمی‏ شوند و انواع‏ و‏اقسام پسوند‏های مختلف، برای صفحات وب وجود دارد.
حال فرض کنید که وب‏ سرور شما، ابتدا فایل index.html را نشان می‏ دهد و در صورت نبود آن، فایل‏های index.htm، index.php و … شما می‏ خواهید این روند را تغییر داده و فایل index.php را در اولویت قرار دهید. بدین منظور می‏ بایست از دستور DirectoryIndex استفاده نمایید:

DirectoryIndex index.php index.cgi index.pl default.htm

کد بالا ابتدا به دنبال فایل index.php گشته و در صورت پیدا کردن آن، آن را به عنوان صفحه وب پیش‏فرض نمایش می‏ دهد. اگر فایل index.php پیدا نشد، سرور به دنبال فایل بعدی که index.cgi می‏ باشد گشته و همین روال، ادامه پیدا می‏کند. دقت داشته باشید که شما حتما مجبور به استفاده از index برای نام فایل نیستید و از هر اسم دیگری نیز، می‏توانید استفاده کنید.

DefaultCharset

بسیاری از مشکلات دوستان نمایش اینکودینگ صفحات اینترنتی هست که با دستور زیر میتونید آپاچی رو مقید کنید تا Charset موردنظر شما رو ایجاد کنه

AddDefaultCharset utf-8

در این مطلب سعی شد تعدادی از موارد کاربردی httacces بیان شود برای مطالعه بیشتر می توانید از این سایت بازدید نمایید.

دیدگاه خود را ارسال کنید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *