Simple Clean
کاربر تازه وارد
- تاریخ عضویت
- 16 آگوست 2005
- نوشتهها
- 283
- لایکها
- 2
يه كمي مقدمه:
فايلهاي .htaccess يا distributed configuration files كه شايد خيلي ديده باشيد در واقع فايلهاي مخصوص كنترل آپاچي هستن
كه روي يه شاخه و تمام زير شاخه هاي اون عمل مي كنن كه با وجود مورد استفاده بودن كمي محجور موندن . اين فايلها براي كاركرد در كنار فايلهاي معمولي html يا php قرار ميگيرن و نام اونها فقط .htaccess ميتونه باشه ( هر چند كه با دستبردن تو تنظيمات اصلي آپاچي ميشه اسمشونو عوض هم كرد)
اين فايلها از تگهاي مخصوص آپاچي استفاده ميكنن البته cgi script هم مي پذيرن
تو اين پست سعي ميكنم تعداد محدودي از كاربردها رو به زبان ساده بگم
چند تا نكته هست كه بايد بدونيد:
چون ميدونم اكثريت قبل از آپلود واسه انجام كارهاتون از لوكال هاست استفاده ميكنيد بايد بگم كه ويندوز اجازه درست كردن فايل اصلي كه ما واسه فعاليتمون نياز داريم رو نميده چون .htaccess يه فايل بدون نامه !!! اما با اين كد ساده php توي لوكال هاست هم ميتونيم اچتي اكسس رو ايجاد كنيم .
و در آخر اينكه اگه يه حرف يا حتي يه space اينور و اونور بزنيد باعث server error ميشه و سايت بالا نمي ياد
كاربرد اول- تغيير صفحات خطا
شما ميتونيد صفحات خطاي 404 يا 500 و ... رو به دلخواه خودتون طراحي و به اين طريق بشناسونيد
توضيح: خيلي واضح هست ErrorDocument xxx /xxx.html
كاربرد دوم-مخفي كردن فرمت ها ، شناساندن فرمتهاي جديد (add mime type)
يك راه امنيتي كه من واقعا پيشنهاد ميكنم واسه حفاظت از اسكريپت هاي php شما اينه كه اونا php نباشن !! بله يعني مثلا asp يا jsp باشن اينطوري هكرا واقعا گيج ميشن
توضيح: اول Addtype ميگه كه ما ميخوايم يه فرمت جديد بشناسونيم بعد نوع اون فايلهاي خاص با فرمت دلخواهمونو ميگيم مثلا image/png يا text/css بعد ميگيم كه چه فرمتي رو از اين به بعد به عنوان نوعي كه گفتيم بشناس
اما فرض كنيد ميخوايد از shtml , ssl در سايتتون استفاده كنيد و نياز به شناساندن اين فرمتها به آپاچي داريد :
كاربرد سوم - از index.php يا index.html خسته نشديد؟
با اين كد هم ميشه به وب سرور امر كرد كه كدام فايل به عنوان صفحه نخست و به قولي ايندكس به درخواست دهنده فرستاده بشه
homearea.php رو به هر فايلي با هر نامي تغيير بديد.
توضيح: خيلي واضح DirectoryIndex يه فاصله و بعد هر نام فايلي با هر فرمتي
كاربرد چهارم - redirect يا برو همونجايي كه من ميگم ...
توضيح: در اينجا ما ميگيم كه مرورگري كه درخوست فايل old.html رو در شاخه dirold داشت بره به آدرس http://site.com/DirNew/new.html
كاربرد پنجم - تامين امنيت با IndexIgnore
اين يكي ديگه يه شگرد امنيتي خيلي عاليه
درصد بالايي از هكرها بعد از نفوذ با browse كردن در دايركتوريهاي سايت شما و گشتن به دنبال فولدرها يا فايلها با پرميشن مطلوب كارشونو تكميل ميكنن و البته خيلي ها از اول از روش ديد زدن فولدرهايي كه حاوي موتور اسكريپت ها و اطلاعات با ارزشي هستن مثلا فايل config رو در بردارن به سايت نفوذ ميكنن
برنامه نويسا و php كارها واسه جلوگيري از اين كار ميان و يه index.html خالي درست ميكنن اما با اين كد ميشه يه صفحه مربوط به خالي بودن فولدر رو نشون داد يعني هيچي تو اين شاخه نيست در حالي كه شاخه ميتونه پر فايل باشه ...
توضيح: واضحه ديگه ولي اگه مثلا خواستيد فقط يه نوع فايل محافظت شه مثلا فقط فايلهاي pdf مينويسييد :
كاربرد ششم - DefaultCharset
خسته نشديد از بس بالاي صفحاتتون Charset فارسي (utf-8 يا windows-1256) رو ست كرديد؟ خوب با اين كد كوتاه شما به آپاچي محترم ميگين كه هميشه صفحات رو با يه charset خاصي ارسال كن
كاربرد هفتم - deny from all
اين يكي بيشتر واسه فايل هايي به كار ميره كه حاوي اطلاعات با ارزشين ولي محافظت نميشن ( مثلا mt-config.cgi ) اين كد ميگه كه هيچ مرورگر ي نتونه سورس اينها رو ببينه
البته میشه این دسترسی رو فقط واسه یه آی پی محدود کرد
كاربرد هشتم - محدود كردن يك عمليات خاص يا "گور پدر هكرا"
اينم دو تا كد امنيتيه ديگه كه خيلي ميتونه تو دست و پاي هكرا بپيچه
كارش فكر كنم مشخص باشه
شما به بومبرينگ اعتقاد داريد ؟ اين كد جلوي FSOCKOPEN و جوجه هكرا رو ميگيره
كاربرد نهم - rewrite engine
اول از همه Apache RewriteEngine بايد در وب سرور شما فعال باشه .
اگه دسترسي داريد ميتونيد اين خط رو در httpd.conf اضافه كنيد :
اگرم بهش دسترسي نداريد با توجه به اين كه هاستينگاي ايران همه ريسيلر سوم چهارمن !!! اين كد هم شايد بتونه كار كنه بايد تو همون اچتي اكسس كپي كنيد
اگه از easyphp يا xampp واسه لوكال استفاده ميكنيد از سرچ ويندوز واسه پيدا كردن فايل httpd.conf استفاده كنيد و بعد همون خط رو بش اضافه كنيد.
اين همون چيزيه كه واسه ساب دومين مجازي هم به كار ميبريم من يه مثال سادشو واستون ميزنم
فرض كنيد يه وبلاگ داشتيد با اين آدرس http://www.persiantools.com/ehsan
حالا بلاگتون آدرسش عوض شده به اين http://www.persiantools.com/knowhow
البته دقت داشته باشيد اين هيچ ربطي به redirct نداره
واسه Virtual Subdomain هم به يه كاراي اضافه اي مثل catch all subdomain و کمی php نياز داريم كه بعدا طريقشو ميگم...
فايلهاي .htaccess يا distributed configuration files كه شايد خيلي ديده باشيد در واقع فايلهاي مخصوص كنترل آپاچي هستن
كه روي يه شاخه و تمام زير شاخه هاي اون عمل مي كنن كه با وجود مورد استفاده بودن كمي محجور موندن . اين فايلها براي كاركرد در كنار فايلهاي معمولي html يا php قرار ميگيرن و نام اونها فقط .htaccess ميتونه باشه ( هر چند كه با دستبردن تو تنظيمات اصلي آپاچي ميشه اسمشونو عوض هم كرد)
اين فايلها از تگهاي مخصوص آپاچي استفاده ميكنن البته cgi script هم مي پذيرن
تو اين پست سعي ميكنم تعداد محدودي از كاربردها رو به زبان ساده بگم
چند تا نكته هست كه بايد بدونيد:
چون ميدونم اكثريت قبل از آپلود واسه انجام كارهاتون از لوكال هاست استفاده ميكنيد بايد بگم كه ويندوز اجازه درست كردن فايل اصلي كه ما واسه فعاليتمون نياز داريم رو نميده چون .htaccess يه فايل بدون نامه !!! اما با اين كد ساده php توي لوكال هاست هم ميتونيم اچتي اكسس رو ايجاد كنيم .
کد:
$file=".htaccess";
$fp=fopen($file,"w+");
fwrite($fp,"#is here our htaccess");
كاربرد اول- تغيير صفحات خطا
شما ميتونيد صفحات خطاي 404 يا 500 و ... رو به دلخواه خودتون طراحي و به اين طريق بشناسونيد
کد:
ErrorDocument 404 /404.html
ErrorDocument 500 /500.html
كاربرد دوم-مخفي كردن فرمت ها ، شناساندن فرمتهاي جديد (add mime type)
يك راه امنيتي كه من واقعا پيشنهاد ميكنم واسه حفاظت از اسكريپت هاي php شما اينه كه اونا php نباشن !! بله يعني مثلا asp يا jsp باشن اينطوري هكرا واقعا گيج ميشن
کد:
AddType application/x-httpd-php .asp .jsp
اما فرض كنيد ميخوايد از shtml , ssl در سايتتون استفاده كنيد و نياز به شناساندن اين فرمتها به آپاچي داريد :
کد:
AddType text/html .shtml
AddHandler server-parsed .shtml
Options Indexes FollowSymLinks Includes
كاربرد سوم - از index.php يا index.html خسته نشديد؟
با اين كد هم ميشه به وب سرور امر كرد كه كدام فايل به عنوان صفحه نخست و به قولي ايندكس به درخواست دهنده فرستاده بشه
کد:
DirectoryIndex homearea.php
توضيح: خيلي واضح DirectoryIndex يه فاصله و بعد هر نام فايلي با هر فرمتي
كاربرد چهارم - redirect يا برو همونجايي كه من ميگم ...
کد:
Redirect /Dirold/old.html http://site.com/DirNew/new.html
كاربرد پنجم - تامين امنيت با IndexIgnore
اين يكي ديگه يه شگرد امنيتي خيلي عاليه
درصد بالايي از هكرها بعد از نفوذ با browse كردن در دايركتوريهاي سايت شما و گشتن به دنبال فولدرها يا فايلها با پرميشن مطلوب كارشونو تكميل ميكنن و البته خيلي ها از اول از روش ديد زدن فولدرهايي كه حاوي موتور اسكريپت ها و اطلاعات با ارزشي هستن مثلا فايل config رو در بردارن به سايت نفوذ ميكنن
برنامه نويسا و php كارها واسه جلوگيري از اين كار ميان و يه index.html خالي درست ميكنن اما با اين كد ميشه يه صفحه مربوط به خالي بودن فولدر رو نشون داد يعني هيچي تو اين شاخه نيست در حالي كه شاخه ميتونه پر فايل باشه ...
کد:
IndexIgnore *
کد:
IndexIgnore application/pdf
كاربرد ششم - DefaultCharset
خسته نشديد از بس بالاي صفحاتتون Charset فارسي (utf-8 يا windows-1256) رو ست كرديد؟ خوب با اين كد كوتاه شما به آپاچي محترم ميگين كه هميشه صفحات رو با يه charset خاصي ارسال كن
کد:
AddDefaultCharset utf-8
كاربرد هفتم - deny from all
اين يكي بيشتر واسه فايل هايي به كار ميره كه حاوي اطلاعات با ارزشين ولي محافظت نميشن ( مثلا mt-config.cgi ) اين كد ميگه كه هيچ مرورگر ي نتونه سورس اينها رو ببينه
کد:
<Directory />
Order Deny,Allow
Deny from All
</Directory>
کد:
order allow,deny
deny from 123.45.6.7
deny from 012.34.5.
allow from all
كاربرد هشتم - محدود كردن يك عمليات خاص يا "گور پدر هكرا"
اينم دو تا كد امنيتيه ديگه كه خيلي ميتونه تو دست و پاي هكرا بپيچه
کد:
<Limit POST PUT DELETE>
Deny from All
</Limit>
کد:
<LimitExcept POST GET>
Deny from All
</LimitExcept>
كاربرد نهم - rewrite engine
اول از همه Apache RewriteEngine بايد در وب سرور شما فعال باشه .
اگه دسترسي داريد ميتونيد اين خط رو در httpd.conf اضافه كنيد :
کد:
LoadModule rewrite_module modules/mod_rewrite.so
کد:
<IfDefine ReverseProxy>
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule proxy_module modules/libproxy.so
</IfDefine>
اگه از easyphp يا xampp واسه لوكال استفاده ميكنيد از سرچ ويندوز واسه پيدا كردن فايل httpd.conf استفاده كنيد و بعد همون خط رو بش اضافه كنيد.
اين همون چيزيه كه واسه ساب دومين مجازي هم به كار ميبريم من يه مثال سادشو واستون ميزنم
فرض كنيد يه وبلاگ داشتيد با اين آدرس http://www.persiantools.com/ehsan
حالا بلاگتون آدرسش عوض شده به اين http://www.persiantools.com/knowhow
البته دقت داشته باشيد اين هيچ ربطي به redirct نداره
کد:
RewriteEngine on
RewriteRule ^ehsan(/.*)?$ /knowhow$1 [R=permanent]