توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : htaccess.
WAHID
06-18-2010, 11:10 AM
سلام
به امید خدا قصد دارم توی این تاپیک به بحث در مورد فایل htaccess. بپردازم.:75:
مطالب پراویت نیستن ولی تا کامل شدن مطالب در این بخش قرار می گیرند.98:
مطالب به صورت تحقیق و ترجمه جمع آوری شدن و در پایان هر پست منابع آورده خواهد شد. تا کامل شدن مطلب هر قسمت به صورت تک پست ارسال می شود ولی در پایان به شکل یک فایل PDF کامل خدمت عزیزان ارائه خواهد شد.
نکته: این مطالب به طور همزمان در سایت های «آشیانه» و «PC7» منتشر می شوند.
پ.ن: اینجانب به رسم انسانیتم از تعدادی نقص برخوردارم. بدیهی است انتقادات هر چند کوچک شما عزیزان پل های رو به فردای من خواهد بود.
آنها را از من دریغ نکنید.
WAHID
06-18-2010, 09:36 PM
قسمت اول
htaccess. چیست؟
در بسیاری از وب سرور ها (مخصوصاً در آپاچی) در حالت پیش فرض htaccess. نام فایل تنظیمات سطح مسیر[1] است که اجازه مدیریت غیر متمرکز پیکربندی وب سرور را می دهد. فایلهای htaccess. یا به عبارت دیگر «فایل تنظیمات توزیع شده» روشی برای تغییر تنظیمات پیکربندی بر اساس هر مسیر ارائه می دهند.
اگر شما دوست دارید فایل htaccess. را با نام دیگری استفاده کنید, می توایند با استفاده از دستور Accessfilename نام آن را تغییر دهید. برای مثال, اگر دوست دارید آن را config. بنامید باید دستور زیر را در فایل پیکربندی اصلی سرور وارد کنید:
AccessFileName .config
هدف اصلی htaccess. تنظیم دسترسی به شاخه هاست. مانند درخواست رمز عبور برای دسترسی به محتویات یک مسیر. به همین جهت نام آن htaccess انتخاب شده است. اما امروزه htaccess. قادر است بسیاری از تنظیمات پیکربندی را زیر پا گزارد که تنظیمات کنترل دسترسی بیشترین این تنظیمات هستند. مانند: نوع محتوا, مجموعه کاراکتر ها, گردادنندهای CGI و ... . بدین معنی که شما می توانید به جای استفاده از فایل دیکربندی اصلی سرور از این فایل برای هر شاخه استفاده کنید. دستوراتی که شما مجاز به استفاده از آنها در این فایل هستید توسط دستور AllowOverride مشخص می شوند. به عبارت دیگر این دستور شایستگی حضور دستورات در داخل فایل htaccess. را بر اساس دسته بندی ها مشخص می کند.
نحو htaccess. مشابه نحو فایل پیکر بندی اصلی سرور می باشد.
دستورات موجود در فایل htaccess. فقط بر روی مسیر جاری و تمام مسیر های زیر مجموعه قابل اجرا هستند (مگر اینکه این قابلیت از طریق پیکربندی سرور غیر فعال شده باشد.) اما به دلایل امنیتی و کارایی, بر روی مسیر های پدر خود قابل اجرا نیستند. اسم فایل همواره با یک نقطه شروع می شود چون در عرف سیستم عامل های شبه یونیکس فایل هایی که اسم آن ها با یک نقطه آغاز می شوند مخفی هستند.
چه زمانی باید از htaccess. استفاده کرد:
فایل htaccess. در هر درخواست خوانده می شود و به همین علت تغییرات اعمال شده در آن بر خلاف فایل پیکربندی اصلی که برای اعمال تغییرات باید وب سرور از نو راه اندازی شود اثری بلافاصله دارند.
در سرور هایی با چندین کاربر, که از یک سرور به اشتراک گذاری شده استفاده می کنند, مطلوب است که هر کاربر بتواند پیکربندی سایت خود را تغییر دهد و به طور معمول, فایل htaccess. باید توسط کاربرانی مورد استفاده قرار گیرد که به فایل پیکربندی سرویس دهنده اصلی دسترسی ندارند.
چه زمانی نباید از htaccess. استفاده کرد:
به طور معمول شما نباید از این فایل استفاده کنید مگر زمانی که به فایل پیکربندی اصلی دسترسی نداشته باشید.
منع استفاده از این فایل دو دلیل عمده دارد:
اولین آنها دلیل کارایی است. وقتی دستور AllowOverride اجازه استفاده از فایل htaccess. را میدهد آپاچی وجود آنرا در هر در خواست در هر مسیری بررسی می کند. بنابراین استفاده از آن باعث تحمیل بار اضافی بر روی سرور و افت کارایی آن خواهد شد, خواه شما از آن استفاده کنید یا نه! علاوه بر آن در هر درخواست فایل htaccess. بار گزاری می شود.
توجه داشته باشید که آپاچی به منظور تکمیل دستوراتی که باید اعمال شوند باید همه ی فایل های htaccess. موجود در مسیر های بالاتر را کنترل کند. بنابراین اگر فایلی از مسیر [Only registered and activated users can see links] فراخوانی شود, آپاچی تمام فایل های زیر را کنترل خواهد کرد:
/.htaccess
/[Only registered and activated users can see links]
/[Only registered and activated users can see links]
/[Only registered and activated users can see links]
به این ترتیب برای دسترسی به هر فایل از آن شاخه, 4 فایل اضافی دیگر نیز, حتی در صورت عدم وجود, بررسی خواهند شد. (البته این مسأله فقط زمانی اتفاق می افتد که استفاده از فایل htaccess. در مسیر / فعال شده باشد.)
دلیل دوم یک مسأله امنیتی است. با این کار شما به کاربران اجازه تغییر پیکربندی های سرور را می دهید, که ممکن است نتایجی متفاوت با آن چیزی که شما انتظارش را داشتید داشته باشد.به گونه ای که تنظیم دستور نادرست می تواند نگرانی های امنیتی مختلفی در پی داشته باشد. همچنین باید در نظر داشته باشید دسترسی کمتر از مقدار لازم موجب درخواست تعداد زمان های بیشتر پشتیبانی خواهد شد. به طور کلی اعطای این امتیاز به کاربران دقت زیادی می خواهد, همچنین مطلوب است آگاه بودن کاربران از میزان دسترسی که به آن ها داده شده است اطمینان حاصل کنید.
به هر حال باید تا جای ممکن در استفاده از این فایل دوری کرده و تغییرات خود را در نشست <Directory> فایل پیکربندی اصلی قرار دهید. در حالت کلی استفاده از htaccess. در مسیر [Only registered and activated users can see links] کاملاً مطابق استفاده از نشست
<directory /[Only registered and activated users can see links]>
در فایل اصلی پیکربندی با دستورات مشابه است.
برای مثال:
فایل htaccess. در مسیر [Only registered and activated users can see links] :
AddType text/example .exm
نشست مربوطه در فایل پیکربندی اصلی :
<Directory /[Only registered and activated users can see links]>
AddType text/example .exm
</Directory>
منابع
[Only registered and activated users can see links]_note
[Only registered and activated users can see links]
ــــــــــــــــــــــ
.[1]directory-level
پایان قسمت اول
WAHID
06-28-2010, 07:05 PM
قسمت دوم
مقدمه:
اگر بر روی سایت خود اطلاعات حساسی دارید که می خواهید فقط اشخاص خاصی بتوانند به آنها دسترسی داشته باشند, روش ارائه شده در این پست به شما کمک می کند تا مطمئن شوید فقط افراد تأیید شده توسط خود شما به آنها دسترسی خواهند داشت.
نکته:
اگر اطلاعات شما واقعا به امنیت نیاز دارند, به غیر از تصدیق هویت از حالت mod_ssl نیز استفاده نمایید.
ماژول ها و دستورات مربوطه:
برای اعمال رمز عبور بر روی مسیر های مورد نظر سایت با استفاده از فایل htaccess به 3 نوع ماژول نیاز داریم:نوع اول: ماژول های مربوط به نوع تصدیق هویت, که شامل mod_auth_basic و mod_auth_digest است. و توسط دستور AuthType مشخص می شوند.
نوع دوم: ماژول های ارائه دهنده ی تصدیق هویت, که شامل ماژول هایmod_authn_alias, mod_authn_anon, mod_authn_dbd, mod_authn_dbm, mod_auth_default, mod_authn_file, mod_authnz_ldap می شوند.
نوع سوم: ماژول های مربوط به اعطای اختیار که عبارتند از mod_authnz_ldap, mod_authz_dbm, mod_authz_default, mod_authz_groupfile, mod_authz_owner, mod_authz_user. این ماژول های توسط دستور Require به کار برده می شوند.
نکته:
توجه داشته باشید که به فعال سازی حداقل یک ماژول از هر نوع نیاز داریم.
یادآوری:
1.ماژول mod_authnz_ldap سرویسهای تصدیق هویت و اعطای اختیار را ارائه می دهد.
1.ماژول mod_authn_alias خود به تنهایی ماژول ارائه دهنده ی تصدیق هویت نیست, اما به دیگر ارائه دهنده گان اجازه میدهد تا به شکل انعطاف پذیرتری پیکربندی شوند.
1.ماژول mod_authz_host سرویس های اعطای اجازه و کنترل دسترسی را بر اساس نام میزبان, آدرس IP یا مشخصات در خواست ارائه میدهد, اما خود به تنهایی بخشی از سیستم ارائه دهنده ی تصدیق هویت نیست.
روش کار:
در ابتدا نیاز به ایجاد فایل رمز عبور (برای نگه داری رمزهای عبور) داریم. چگونگی انجام این کار به ارائه دهنده تصدیق هویت انتخابی شما بستگی دارد. برای شروع, ما از یک فایل متنی استفاده میکنیم.
از لحاظ امنیتی خیلی مهم است که این فایل را در محلی ذخیره و نگهداری کنید که از طریق اینترنت غیر قابل دسترسی باشد, تا کسی نتواند آنرا بر روی سیستم خود بارگیری کند. برای مثال اگر اسناد سایت شما از مسیر usr/local/apache/htdocs/ مورد دستیابی قرار می گیرند شما باید فایل (های) رمز عبور را در مسیری مانند usr/local/apache/passwd/ قرار دهید.
ما برای تولید فایل رمز عبور, از دستور سودمند htpasswd که به همراه آپاچی ارائه می شود استفاده میکنیم. این دستور در پوشه ی bin محل نصب آپاچی نگهداری می شود.
برای ایجاد فایل رمز عبور از دستور htpasswd به شکل زیر استفاده می کنیم:
htpasswd -c /usr/local/apache/passwd/passwords rbowen
htpasswd رمز عبوری که برای کاربر rbowen در نظر گرفته اید را از شما سؤال خواهد کرد که باید برای تأیید, آن را دوباره وارد کنید.
# htpasswd -c /usr/local/apache/passwd/passwords rbowen
New password:
Re-type new password:
Updating password for user rbowen
یادآوری:
توجه داشته باشید که به جای استفاده از دستور htpassed می توانید با ویرایش کردن فایل رمز های عبور, نام های کاربری و رمز های عبور مروبطه را به صورت دستی به فایل اضافه کنید. به شکلی که در هر خط یک نام کاربری و به دنبال آن رمز عبور مربوطه که توسط یک علامت دونقطه [:] از نام کاربری جدا می شود اضافه می گردد.
توجه:
به یاد داشته باشید رمز های عبور نوشته شده در این فایل باید به روش MD5 در هم شوند. برای این کار می توانید از ایجاد کننده های رمز عبور آنلاین موجود در اینترنت مانند:
[Only registered and activated users can see links]
[Only registered and activated users can see links]استفاده نمایید.
در مرحله بعد, باید سرور را برای پرسیدن رمز عبور و بررسی مجاز بودن کاربر تنظیم کنیم.
برای این کار از فایل htaccess موجود در مسیر مورد نظر استفاده می کنیم. برای مثال اگر قصد داشته باشم از مسیر usr/local/apache/htdocs/secret/ محافظت کنیم از فایل htaccess. موجود در همین مسیر استفاده خواهیم کرد.
برای این منظور, دستورات زیر را در فایل htaccess مورد نظر قرار می دهیم: AuthType Basic
AuthName "Top Secret Zone"
# (Following line optional)
AuthBasicProvider file
AuthUserFile /usr/local/apache/passwd/passwords
Require user rbowen
دستورات بالا را خط به خط بررسی میکنیم:
AuthType : از این دستور برای مشخص کردن نوع تصدیق هویت انتخابی استفاده می کنیم. پر کاربردترین روش, روش Basic است که توسط ماژول mod_auth_basic پیاده سازی می شود.
یادآوری:
مهم است که بدانید که در این روش رمز عبور بدون درهم سازی برای سرور ارسال می شود. به این ترتیب نباید از این روش برای محافظت از اطلاعات بسیار حساس استفاده نمایید مگر اینکه به همراه mod_ssl به کار برده شود.
آپاچی از نوع دیگری از تصدیق هویت به نام AuthType digest نیز پشتیبانی می کند که توسط ماژولmod_auth_digest پیاده سازی می شود. این نوع بسیار امن است و بیشتر مرورگر های وب آن را پشتیبانی می کنند.
AuthName : از این دستور برای تخصیص نام به ناحیه تصدیق هویت استفاده می کنیم. این نام از دو جهت مهم است :
ماشین مشتری این نام را در جعبه دریافت رمز عبور به نمایش می گذارد.
ماشین مشتری از این نام برای مشخص کردن اینکه رمز عبور به کدام ناحیه محافظت شده ارسال می شود استفاده می کند.
نکته:
برای اینکه کاربر در هر دستیابی به اسناد موجود در ناحیه محافظت شده مجبور به وارد کردن رمز عبور نباشد, بعد از اولین تصدیق هویت, در مراجعات بعدی به همان ناحیه محافظت شده بر روی همان سرور, کاربر به صورت اتوماتیک تأیید میشود.
AuthBasicProvider : از این دستور برای مشخص کردن منبع ذخیره رمز های عبور استفاده می کنیم. که از میان منابع file , dbm , dbd و ldap که به ترتیب توسط ماژول های mod_authn_file , mod_authn_dbm , mod_authn_dbd وmod_authn_ldap پیاده سازی می شوند منبع file, منبع پیش فرض است. توجه داشته باشید که این دستور در این مورد اختیاری است اما برای منابع دیگر شما ملزم به استفاده از این دستور و مشخص کردن منبع مورد استفاده هستید.
AuthUserFile : از این دستور برای مشخص کردن محل ذخیره فایل (های) رمز عبور استفاده می کنیم.
نکته:
اگر شما تعداد زیادی کاربر دارید, جستجوی یک فایل متنی بزرگ به دنبال یک کاربر در هر درخواست بسیار کند انجام میگیرد. از این جهت آپاچی توانایی ذخیره اطلاعات کاربران در پایگاه داده های سریع را دارد برای مثال دستور AuthDbMUserFile که توسط ماژول mod_authn_dbm پیاده سازی می شود برای مشخص کردن محل قرار گیری پایگاه های داده مورد استفاده قرار می گیرد.
Require : از این دستور برای مشخص کردن اینکه کدام کاربران تأیید هویت شده اجازه ی دسترسی به منابع را دارند مورد استفاده قرار می گیرد. در ادامه در مورد کاربرد های این دستور بیشتر بحث خواهیم کرد.
ScreenShot:[Only registered and activated users can see links]
اعطای اجازه به بیش از یک نفر:
در قسمت قبلی فقط یک نفر (که مشخصاً به نام rbown مشخص میشد) اجازه دسترسی به اسناد ناحیه محافظت شده را داشت. اما در اغلب موارد شما قصد دارید بیش از یک نفر اجازه دسترسی به این اسناد را داشته باشد, در این حالت دستور AuthGroupFile به کار میرود. برای این کار نیاز به ایجاد یک فایل گروه دارید. قالب این فایل بسیار ساده است و شما می توانید با استفاده از ویرایش گر محبوبتان آنرا ایجاد یا ویرایش کنید. محتویات این فایل باید شبیه به این باشد:
GroupName: rbown robert jon smith
که فقط شامل یک لیست طولانی از نام های کاربری است که هر نام کاربری را به وسیله ی یک فضای خالی از دیگر نام های کاربری جدا می کند.
نکته:
به یاد داشته باشید باید نام گروه با نام فایل گروه یکسان باشد.
یادآوری:
برای اضافه کردن یک نام کاربری به فایل رمز های عبور از دستور htpasswd به شکل زیر استفاده می کنیم:htpasswd /usr/local/apache/passwd/passwords robertاین بار نیز باید رمز عبور در نظر گرفته ی خود را برای تأیید 2 بار وارد کنید. اما به جای ایجاد فایل جدید, نام کاربری به همراه رمز عبور در هم شده به فایل موجود اضافه خواهد شد. (گزینه ی c- موجب ایجاد فایل رمز عبور جدید می شود.)
اکنون باید فایل htaccess خود را به شکل زیر ویرایش کنید: AuthType Basic
AuthName "By Invitation Only"
# Optional line:
AuthBasicProvider file
AuthUserFile /usr/local/apache/passwd/passwords
AuthGroupFile /usr/local/apache/passwd/groups
Require group GroupName
اکنون کاربرانی که اسم آن ها در فایل GroupName آمده و رمز عبوری برای آن ها در فایل passwords تعریف شده در صورت صحیح وارد کردن رمز عبور می توانند به اسناد محافظت شده دسترسی داشته باشند.
روش دیگر برای انجام این کار (اجازه دسترسی به کاربران متعدد) استفاده از دستور require به شکل زیر هست:Require valid-user
که با وارد کردن نام کاربری د رادامه خط Require user rbown به کاربرانی که برای آن ها رمز عبور تعیین شده اجازه میدهد تا دسترسی لازم را بدست آورند. حتی شما می توانید مانند یک گروه عمل کرده و برای هر گروه یک فایل رمز عبور جدا گانه تعریف کنید. مزیت این کار مقید کردن آپاچی به کنترل یک فایل کوچک به جای یک فایل برزگ است.
و عیب آن, این است که مجبور به نگهداری بیش از یک فایل رمز عبور هستید و باید به یاد داشته باشید که آن ها را به دستور AuthUserFile معرفی کنید.
WAHID
06-28-2010, 07:09 PM
مشکلات احتمالی:
بدلیل استفاده از نوع Basic تصدیق هویت, در هر درخواست دسترسی به اسناد محافظت شده باید نام کاربری و رمز عبور بازبینی شود حتی در هر بارگذای مجدد صفحه. به طوری که متوجه شدید این عمل باعث کاهش سرعت بارگیری صفحات خواهد شد. و این کاهش سرعت با اندازه ی فایل رمز عبور مورد استفاده شما متناسب است زیرا در هر در خواست آپاچی این فایل را باز کرده و لیست کاربران را برای یافتن نام کاربری مورد نظر جستجو می کند. نتیجه این کاهش سرعت ایجاد محدودیت برای تعداد کاربران موجود در هر فایل رمز عبور است که بسته به قدرت سرور مورد استفاده شما متغیر است. چنانچه ممکن است در چند صدمین کاربر خود شاهد کاهش سرعت سیستم خود باشید.
منابع:
[Only registered and activated users can see links]
[Only registered and activated users can see links]
[Only registered and activated users can see links]
پابان قسمت دوم
WAHID
07-04-2010, 07:17 PM
قبل از اینکه قسمت سوم رو شروع کنم می خوام یک نکته رو که توی قسمت های قبلی باید می گفتم و یادم رفته رو بگم.
برای فعال کردن فایل htaccess. در وب سرورهای آپاچی تحت لینوکس باید از فایل پیکربندی اصلی سرور استفاده کرده و مقدار All رو برای دستور AllowOverride تنظیم کنیم. البته بین گزینه های <Directory path> </Directory>.
برای مثال در وب سرور آپاچی2 برای فعال کردن فایل htaccess. در مسیر var/[Only registered and activated users can see links] خطوط زیر رو به فایل apache2.conf اضافه می کنیم:
<Directory /var/[Only registered and activated users can see links] >
AllowOverride All
</Directory>
البته نا گفته نماند مقدار AllowOverride برای اهداف مختلف متفاوت هست به طور مثال در قسمت دوم دیدم که برای محافظت از فایل با استفاده از رمز عبور مقدار AuthConfig تنظیم کردیم! (شرمنده این قسمت هم یادم رفته بود!)
قسمت سوم
خلاصه:
یک مسیر می تواند شامل یکی از دو منبع زیر باشد:
فایلی که در حالت معمول index.html نامیده شده و توسط کاربر ایجاد میشود.دستور DirectoryIndex که توسط ماژول mod_dir پیاده سازی می شود نام این فایل را مشخص می کند.
هر چیز دیگر, که وسیله لیست تولید شده توسط سرور ارائه می شود. این امکان توسط ماژول mod_autoindex پیاده سازی می شود.
این دو تابع به طور کامل از یکدیگر جدا هستند بنابراین شما می توانید با استفاده از قرار دادن صفحه ی پیش فرض در مسیر های سایت خود از به نمایش در آمدن فایل های موجود در آن ها برای مشتری جلوگیری کنید.
دستور DirectoryIndex :
Description: List of resources to look for when the client requests a directory
Syntax: DirectoryIndex local-url [local-url] ...
Default: DirectoryIndex index.html
Context: server config, virtual host, directory, .htaccess
Override: Indexes
Status: Base
Module: mod_dir
دستور DirectoryIndex اجازه ی تنظیم صفحه ی پیش فرض به هر مسیر قابل دستیابی را به شما میدهد.
برای مثال وقتی مشتری در خواست یک مسیر از سایت شما را ارسال می کند این دستور فایل مشخص شده توسط شما را به مشتری نمایش می دهد.
برای استفاده از این دستور باید خط زیر را در فایل htaccess. موجود در مسیر مورد نظر قرار دهید:DirectoryIndex local-url
local-url آدرس یک سند بروی سرور مورد درخواست است, که در حالت معمول نام یک فایل در مسیر موجود است.برای مثال:DirectoryIndex index.html
همچنین شما اجازه استفاده از چندین صفحه ی پیش فرض را دارید به طوری که در صورت عدم وجود یکی, دیگری به نمایش در خواهد آمد. برای مثال هنگام استفاده از دستور:DirectoryIndex index.php index.html index.txt
صفحه ی index.php به نمایش گذاشته می شود, در صورتی که این صفحه وجود نداشته باشد, صفحه ی index.html و در صورت عدم وجود این صفحه, صفحه ی index.txt به نمایش در خواهد آمد. در صورتی که هیچ یک از فایل های مشخص شده وجود نداشته باشند بر حسب تنشیمات اصلی یکی از اعمال زیر انجام خواهد شد:
پیام خطا نشان داده خواهد شد.
فهرست محتویات مسیر (به شرطی که گزینه ی Indexes تنظیم شده باشد) به نمایش گذاشته خواهد شد.
نکته: ما می توانیم از نمایش فهرست محتویات مسیر جلوگیری کنیم.
نکته: هیچ اجباری نیست که همه ی آدرس ها به مسیر فعلی ختم شوند. یعنی شما میتونید از فایل موجود در یک مسیر دیگر هم استفاده کنید:DirectoryIndex index.html index.txt /cgi-bin/index.pl
در این حالت اگر هیچ یک از فایل های index.html و index.txt موجود نباشند فایل cgi-bin/index.pl/ اجرا خواهد شد!
منابع
[Only registered and activated users can see links]
[Only registered and activated users can see links]
پایان قسمت سوم
WAHID
07-15-2010, 11:44 AM
قسمت چهارم
مقدمه:
در قسمت قبل یاد گرفتیم که چطور با استفاده از دستور DirectoryIndex از لیست شدن فایل ها جلوگیری کنیم. اما در بعضی مواقع به این لیست شدن فایل ها نیاز داریم مثل [Only registered and activated users can see links] توی این قسمت یاد می گیریم که چگونه با استفاده از دستور IndexIgnore لیست گیری رو مطابق میل خودمون تغییر دهیم.
دستور IndexIgnore:
Description: Adds to the list of files to hide when listing a directory
Syntax: IndexIgnore file [file] ...
Context: server config, virtual host, directory, .htaccess
Override: Indexes
Status: Base
Module: mod_autoindex
خوب همین طور که متوجه شدین برای استفاده از این دستور باید ماژول mod_autoindex آپاچی فعال شده باشه:wahid@WuX:~$ sudo a2enmod autoindex
Enabling module autoindex.
Run '/etc/init.d/apache2 restart' to activate new configuration!
برای استفاده از این دستور در فایل htaccess. موجود در مسیر مورد نظر خط زیر رو اضافه می کنیم:
IndexIgnore filename.filetype ...
برای مثال:
IndexIgnore header.jpg private.zip
با استفاده از خط بالا همه ی فایل های موجود در مسیر به غیر از دو فایل header.jpg و private.zip در ایندکس لیست خواهند شد.
شما می توانید با استفاده از ۲ عملگر ؟ و * بر روی لیست کنترل داشته باشید. برای مثال اگر لیست فایل های موجود در مسیر مورد نظر ما به این شکل باشه:
bouton.jpg header.html Iran.GIF ondex.html pc7-userbar-e.jpg RL_logo.GIF
email.PNG HeartBeat.GIF loading.gif panda.GIF readme.html RS_logo.jpg
وقتی خط زیر رو توی فایل htaccess. بنویسم :
IndexIgnore Iran.??? *.html ??_logo.*
لیستی که برای ایندکس تولید میشه به این شکل هست:
HeartBeat.GIF
bouton.jpg
email.PNG
loading.gif
panda.GIF
pc7-userbar-e.jpg
حالا به این ۲ تا لینک نگاه کنید:
[Only registered and activated users can see links]
[Only registered and activated users can see links]
این لیست های در قسمت header و footer متنی دارن برای توضیحات خاص. برای تولید این ها از دو عملگر HeadeName و ReadmeName استفاده می کنیم. یعنی مقدرا متغیر HeaderName برار با اسم فایلی هست که در نظر داریم محتویاتش قبل از لیست گیری نشون داده بشه همچنین مقدار ReadmeName برابر با اسم فایلی هست که در نظر داریم محتویاتش بعد از لیست گیری چاپ بشه!
یادتون باشه که شما اجازه ی استفاده از کد های html رو در هر دو فایل دارید.
برای مثال باید دو خط زیر رو به htaccess. اضافه کنیم:
HeaderName header.html
ReadMeName readme.html
نکته:
ترتیب قرار گرفتن این ۲ خط اصلا مهم نیست!
هر دو فایل باید از نوع html باشند. [$]
[$]: در هیچ یک از منابع لزوم استفاده از پسوند html ذکر نشده اما روی سرور من (Apche2 - debian) بدون پسوند html جواب نداد برای همین این نکته رو اضافه کردم!
منابع:
[Only registered and activated users can see links]
[Only registered and activated users can see links]
[Only registered and activated users can see links]
[Only registered and activated users can see links]
پایان قسمت چهارم
WAHID
07-19-2010, 08:24 PM
قسمت پنجم - بخش اول
محدود کردن دسترسی (Order.Allow.Deny)
مقدمه:
در قسمت دوم با نحوه ی محدود کردن دسترسی با استفاده از رمز عبور اشنا شدیم ولی مواقعی وجود داره که می خوایم دسترسی رو بر اساس آدرس hostname, IP و یا دیگر متغیر های محلی (user_agent ,OS و ...) محدود کنید در این مواقع می تونیم از دستورات Deny ,Allow و order (هردو) استفاده می کنیم.
نکته: برای استفاده از این دستورات به ماژول mod_authz_host آپاچی نیاز داریم که باید فعالش کنیم!wahid@WuX:~$ sudo a2enmod authz_host
Enabling module authz_host.
Run '/etc/init.d/apache2 restart' to activate new configuration!
wahid@WuX:~$ sudo /etc/init.d/apache2 restart
Restarting web server: apache2 ... waiting .
wahid@WuX:~$
دستور Allow:
خوب همین طور که از اسم دستور مشخصه این دستور منابع مجاز به دسترسی رو مشخص می کنه که این منابع می تونن بر اساس آدرس hostname ,IP و یا متغیر های محیطی مشخص بشن. این دستور 2 تا آرگومان داره که ارگومان اولی باید همیشه برابر مقدار from باشه و آرگومان دوم هم منبع مورد نظر رو مشخص می کنه.
آرگومان دوم می تونه یکی از مقادیر زیر یا ترکیبی از اونها باشه:
آدرس IP یا رنج آدرس IP:
برای مثال با استفاده از کدهای:Allow from 212.120.212.45
Allow from 212.122.212. 127.0 دسترسی برای مشتری با آدرس IP مورد نظر (212.120.212.45) مجاز شناخته میشه. همچنین مشتری های موجود در رنج IP های 212.120.212.1 تا 212.120.212.255 و 127.0.0.0 تا 127.0.255.255 نیز برای دسترسی به بخش مورد نظر سرور مجاز شناخته می شن.
hostname :
Allow from ashiyane.org
در مثال بالا تمام مشتری هایی که hostname آنها ashiyane.org باشد و یا زیر مجموعه ای از ashiyane.org مانند (reverse.ashiyane.org) باشند برای دسترسی مجاز هستند.
متغیر های محلی:
(بعدا در موردشون صحبت می کنیم!)
دستور Deny:
این دستور هم مطابق دستور Allow هست ولی بر عکس دسترسی رو به منبع مشخص شده نمیده! و آرگومان هاش هم دقیقا مثل همون دستور است.
دستور Order:
این دستور برای اعطای دسترسی یا جلوگیری از دسترسی از دستورات قبلی (Allow - Deny) استفاده می کنه. خوب حالا چرا از این استفاده می کنیم؟؟
به این دلیل که این دستور مثل دستورات شرطی if...else عمل میکنه و مقدار پیش فرض برای مشتری هایی که دستوری براشون صادر نشده مشخص می کنه.
نحو این دستور به این شکل هست:Order Comm1,Comm2
Comm1 from IP,Hostname & ...
Comm2 from IP,Hostname & ...
.
.
.
مقادیر Comm1 و Comm2 می تونن یکی از مقدار های Allow یا Deny باشن به شکلی که مقدار موجود در Comm2 دستور پیش فرض هست. یعنی اگر یک مشتری در شرط خاصی صدق نکرد این دستور براش اجرا میشه! (if...else)
خوب پس نتیجه گیری اینکه دستور Order به یکی از 2 شکل زیر خواهد بود:Order Allow,Deny
Order Deny,Allow خوب همین طور که گفتیم در شکل اول حالت پیش فرض Deny و در شکل دوم حالت پیش فرض Allow هست. اما یک نکته دیگه هم هست که بهتره برای نوشتن دستورات در نظر داشته باشید اونهم این هست که دستورات به ترتیب بررسی میشن! یعنی برای شکل اول ابتدا دستورات Allow بررسی میشن (در صورتی که با شرط هماهنگ باشه دسترسی مجاز شناخته میشه.) سپس دستورات Deny. ( که در صورت نادرست بودن شروط Allow دستورات Deny بررسی و تصمیم گرفته می شود.)
برای شکل دوم هم برعکس حالت قبل!
مثال:Order Allow,Deny
Allow from ashiyane.org
Allow 212.120.120.45 10.
اگر مشتری در یکی از شرط های:
hosname برابر ashiyane.org و یا یکی از زیر مجموعه های اون باشه.
آدرس IP برابر 212.120.212.45 باشه.
آدرس IP در رنج 10.0.0.0 تا 10.255.255.255 باشه.
صدق کنه مجاز به دسترسی و در غیر این صورت غیر مجاز شناخته میشه(حالت پیش فرض!).
مثال:Order Deny,Allow
Deny from all
Allow from 212.120.212.45
در این مثال فقط مشتری با آدرس IP مورد نظر حق دسترسی داره.این نکته رو در نظر داشته باشید گرچه مقدار پیش فرض Allow هست ولی همه ی مشتری ها به غیر از مشتری با آدرس 212.120.212.45 در قانون اول صدق می کننن. (قانون دوم در یک حالت نادیده گرفته میشه!)
این کد ها معادل کد های زیر هستن:
Order Allow,Deny
Allow from 212.120.212.45
خوب حالا اگر در خط اول مثال دوم جای دستورات Allow و Deny رو با هم عوض کنیم :
Order Allow,Deny
Deny from all
Allow from 212.120.212.45
نتیجه کاملا بر عکس میشه و همه درخواست ها رد میشن! چون ابتدا دستور Allow بررسی میشه و دسترسی فقط برای مشتری 212.120.212.45 مجاز شناخته میشه ولی با بررسی دستور Deny همه درخواست ها رد میشن.
حالا کد زیر رو در نظر بگیرید:
Order Allow,Deny
خوب این کد بر حسب مقدار پیش فرض همه ی درخواست ها رو رد میکنه.
یا کد زیر :
Order Allow,Deny
Allow from ashiyane.org
Deny from reverse.ashiyane.org
از بین درخواست هایی که از طرف دامنه ی ashiyane.org میان فقط در خواست های خود ashiyane.org پذیرفته میشن.
نکته ی خیلی خیلی مهم: هیچ وقت به دستور پیش فرض مقدار all ندین چون همه ی شرط ها رو لغو خواهد کرد!
مثال برای این دستورات زیاد هست ولی از حوصله این پست خارج هستن.
منابع:
[Only registered and activated users can see links]
[Only registered and activated users can see links]
[Only registered and activated users can see links]
پایان قسمت پنجم - بخش اول
yahova
06-15-2011, 06:41 PM
سلام بخش های بعدی را قرار نمی دهید ؟
در ادامه همین مطالب . ممنون عالی بود
samagh
03-03-2012, 01:28 AM
سلام وخسته نباشيددوست خوبم چرااين مطلب روناقص رهاكرديد ممنون ميشم ادامه دهيد
lastchance843
03-03-2012, 02:32 AM
سلام اقا وحید .. مطالبتون راجب .htaccess خیلی جالبه ..
من یه سوال داشتم .. میخواستم بدونم که اگه به سرور بخواهیم بفهمونیم که مثلا به یک فایل jpg مثل یه فایل php نگاه کنه و کد های داخلش رو اجر ا کنه ... محتوای فایل htaccess دقیقا باید چی باشه؟؟ ممنون میشم پاسخ بدید .. خیلی به جوابش نیاز دارم
HashoR
03-03-2012, 02:40 AM
سلام اقا وحید .. مطالبتون راجب .htaccess خیلی جالبه ..
من یه سوال داشتم .. میخواستم بدونم که اگه به سرور بخواهیم بفهمونیم که مثلا به یک فایل jpg مثل یه فایل php نگاه کنه و کد های داخلش رو اجر ا کنه ... محتوای فایل htaccess دقیقا باید چی باشه؟؟ ممنون میشم پاسخ بدید .. خیلی به جوابش نیاز دارم
سلام
اینم کد...:60:
AddType application/x-[Only registered and activated users can see links] .jpg
AddHandler php-script .jpg
AddHandler php-script .jpg
موفق باشید......
lastchance843
03-04-2012, 01:13 AM
یه دنیا ممنون جناب مدیر
lastchance843
03-06-2012, 02:04 AM
جناب مدیر کمککک.. مشگل پیش اومد... کد جواب نداد.. هاستی که استفاده می کنم htaccsess رو هم ساپورت می کنه .. به این دلیل که تو کنترل پنل هاست یه قسمت به اسم htaccess generator داره..
ببینید یه فایل دارم به اسم photo .. اگه پسوندش رو php بزارم کد داخلش به دلخواه من اجرا میشه .. پس تا اینجا کد درسته..
وقتی پسوند فایل رو jpg میزارم و فایل htaccess رو با اون کد ها که زحمتشو کشیدید آپ می کنم .. 1.تو گوگل کروم کدهای فایل photo رو اجرا نمی کنه و خود فایل رو دانلود می کنه .. 2. تو IE هم به جای اینکه کدهای php درون فایل رو اجرا کنه .. کل کد رو به عنوان خروجی برمی گردونه و تو IE ظاهر میشه.. اگه کلا htaccess رو بردارم باز هم همین اتفاق می افته .. این نشون میده کدهای htaccess ما بی تاثیر هست و من نمی دونم چرا host نسبت به کدهای htaccess واکنشی نشون نمیده..لطفا راهنمایی کنید ...
هاستی که ازش استفاده می کنم : freehostia.com
lastchance843
03-06-2012, 03:24 PM
با سلام.. اقا مشگل حل شد.. فقط اینو واسه دوستانی که مشگل مشابه دارن بگم که خط دوم کد باعث دانلود فایل میشه و به دلیل نا معلومی که من نمیدونم محتوای فایل jpg رو اجرا نمی کنه.. من فقط خط اول رو به این شکل اظافه کردم و خیلی زیبا جواب داد..
AddType application/x-[Only registered and activated users can see links] .phtml .pwml .php5 .php4 .php3 .php2 .php .inc .jpg
البته اینم بگم که بیخیال هاست شدم و خودم یه WebServer(apache) راه انداختم ..
تغییرات رو هم تو فایل [Only registered and activated users can see links] ایجاد کردم... بازم از جناب مدیر ممنون که مسیر رو نشون دادن... موفق باشید
vBulletin® v3.8.4, Copyright ©2000-2012, Jelsoft Enterprises Ltd.