.Htaccess এ কোনও ফাইলের অ্যাক্সেসকে কীভাবে অস্বীকার করবেন


112

আমার কাছে নিম্নলিখিত .htaccess ফাইল রয়েছে:

RewriteEngine On
RewriteBase /

# Protect the htaccess file
<Files .htaccess>
Order Allow,Deny
Deny from all
</Files>

# Protect log.txt
<Files ./inscription/log.txt>
Order Allow,Deny
Deny from all
</Files>

# Disable directory browsing
Options All -Indexes

আমি দর্শকদের নিম্নলিখিত ফাইলটি অ্যাক্সেস করতে নিষেধ করার চেষ্টা করছি:

domain.com/inscription/log.txt

তবে আমার উপরে যা কাজ করে তা কার্যকর হয় না: আমি ব্রাউজার থেকে দূর থেকে ফাইল অ্যাক্সেস করতে পারি।

উত্তর:


187

এইচটিসেসি ফাইলের মধ্যে, <Files>নির্দেশের ক্ষেত্রটি কেবলমাত্র সেই ডিরেক্টরিতে প্রযোজ্য (আমি অনুমান করি যে বিভ্রান্তি এড়াতে হবে যখন সাব-ডাইরেক্টরিগুলির htaccess এ নিয়ম / নির্দেশিকা পিতা-মাতার কাছ থেকে প্রয়োগ করা হয়) ced

সুতরাং আপনি থাকতে পারেন:

<Files "log.txt">  
  Order Allow,Deny
  Deny from all
</Files>

অ্যাপাচি ২.৪++ এর জন্য আপনি ব্যবহার করতে পারেন:

<Files "log.txt">  
  Require all denied
</Files>

আপনার inscriptionডিরেক্টরিতে একটি htaccess ফাইলে । অথবা আপনি উভয় ক্ষেত্রেই htaccess ফাইলে এবং লগ. টেক্সটের অ্যাক্সেসকে অস্বীকার করতে উভয় ক্ষেত্রেই হ্যান্ডেল বাছাই করতে mod_rewrite ব্যবহার করতে পারেন:

RewriteRule /?\.htaccess$ - [F,L]

RewriteRule ^/?inscription/log\.txt$ - [F,L]

আপনি যদি আইআইএস ব্যবহার করে থাকেন তবে পরিবর্তে ওয়েবকনফিগ ফাইলে এটি করুন।
শন লুটিন

1
পুনর্লিখনের নিয়ম ব্যবহার করা আমার নিজের কোডকে * .txt এর অ্যাক্সেস থেকে অস্বীকার করে। আপনি কিভাবে এই কাছাকাছি পেতে হবে?
প্যান্টস

8
" <Files>নির্দেশের সুযোগ কেবল সেই ডিরেক্টরিতে প্রযোজ্য" - না এটি হয় না। এটি ডিরেক্টরিটি এবং এর নীচে সমস্ত উপ- ডিরেক্টরিতে প্রযোজ্য । সুতরাং <Files "log.txt">ধরা হবে /log.txt এবং /inscription/log.txt
মিঃহাইট

1
Order Allow,Deny২.৪-এ অবনমিত হওয়ার পরে আপনি কি এই উত্তরটি আপডেট করতে পারবেন ?
টেলরিয়ান

18

শক্তিশালী প্যাটার্নের মিল - এটি প্যারেশেবল প্রেসে আমি এখানে ব্যবহার করি। দৃ pattern় নিদর্শন মেলানো ব্যবহার করে, এই কৌশলটি " .hta ", " .এইচটিএ ", বা এর সাথে কোনও সংবেদন -সংবেদনশীল সমন্বয়যুক্ত কোনও ফাইলের বাহ্যিক অ্যাক্সেসকে বাধা দেয় । উদাহরণস্বরূপ, এই কোডটি নিম্নলিখিত যে কোনও অনুরোধের মাধ্যমে অ্যাক্সেসকে আটকাবে:

  • .htaccess
  • .htaccess
  • .htaccess
  • testFILE.htaccess
  • filename.HTACCESS
  • FILEROOT.hTaCcEsS

.. ইত্যাদি। স্পষ্টতই, এই পদ্ধতিটি আপনার সাইটের এইচটিএ্যাক্সেস ফাইলগুলি সুরক্ষিত করার জন্য অত্যন্ত কার্যকর। তদ্ব্যতীত, এই কৌশলটিতে " সমস্ত সন্তুষ্ট করুন " নির্দেশকে শক্তিশালী করার অন্তর্ভুক্ত রয়েছে । মনে রাখবেন যে এই কোডটি আপনার ডোমেনের রুট এইচটিএ্যাক্সেস ফাইলে রাখা উচিত:

# STRONG HTACCESS PROTECTION
<Files ~ "^.*\.([Hh][Tt][Aa])">
order allow,deny
deny from all
satisfy all
</Files>

1
এই কোডটি ব্যবহার করার সময় আমি একটি 500 অভ্যন্তরীণ সার্ভার ত্রুটি পেয়েছি। কোন ধারণা কেন? আমি ওয়ার্ডপ্রেস ব্যবহার করছি।
ক্যারিন গিল

8
ব্যবহারকারীদের কেবল ডটফাইলে অ্যাক্সেস করা থেকে বঞ্চিত করা কি আরও বেশি অর্থবোধ করে না? মত কিছু ব্যবহার <Files ~"^\..*">
স্টেইন শ্যাট

1
টিলড এবং প্রথম উদ্ধৃতি চিহ্নের মধ্যে একটি স্থান প্রয়োজন - কমপক্ষে আমার জন্য আমার এটির দরকার ছিল। "স্পেস"
আর্ট জিগেল

আমি একই আচরণ .files নিষ্ক্রিয় প্রাপ্ত: <filesMatch "^ \ .. *"> আদেশ, অনুমতি সমস্ত </ FilesMatch> থেকে অস্বীকার অস্বীকার
Pinonirvana

14

আমি বর্তমানে গৃহীত উত্তর সঠিক বলে বিশ্বাস করি না। উদাহরণস্বরূপ, .htaccessভার্চুয়াল সার্ভারের মূলটিতে আমার কাছে নিম্নলিখিত ফাইল রয়েছে (অ্যাপাচি ২.৪):

<Files "reminder.php">
require all denied
require host localhost
require ip 127.0.0.1
require ip xxx.yyy.zzz.aaa
</Files>

এটি reminder.phpএকটি উপ-ডিরেক্টরিতে থাকা বাহ্যিক অ্যাক্সেসকে বাধা দেয় । .htaccessআমার অ্যাপাচি ২.২ সার্ভারে একই প্রভাব সহ আমার কাছে একই ফাইল রয়েছে:

<Files "reminder.php">
        Order Deny,Allow
        Deny from all
        Allow from localhost
        Allow from 127.0.0.1
     Allow from xxx.yyy.zzz.aaa
</Files>

আমি নিশ্চিত জানি না কিন্তু আমি সন্দেহ এতে বিশেষভাবে সাব সংজ্ঞায়িত করতে প্রয়াস এর .htaccessফাইল, যেমন <Files ./inscription/log.txt> যার ফলে এটি ব্যর্থ ঘটাচ্ছে। এটা করা সহজ হবে .htaccessহিসাবে একই ডিরেক্টরির মধ্যে ফাইল log.txtঅর্থাৎ inscriptionডিরেক্টরি ও সেখানে কাজ করবে।


1
আপনি আমার আপভোট পান, এটি আমার অ্যাপাচে ২.৪ এর জন্যও কাজ করেছে।
চশল্লাকা

3

আপনার .htaccess ফাইলে নীচের লাইনটি রাখুন এবং আপনার ইচ্ছামতো ফাইলের নামটি প্রতিস্থাপন করুন

RewriteRule ^(test\.php) - [F,L,NC]

-4

ঠিক আছে আপনি <Directory>ট্যাগটি উদাহরণ হিসাবে ব্যবহার করতে পারেন :

<Directory /inscription>
  <Files log.txt>
    Order allow,deny
    Deny from all
  </Files>
</Directory>

ব্যবহার করবেন না ./কারণ আপনি যদি এটি ব্যবহার করেন তবে /এটি আপনার সাইটের মূল ডিরেক্টরিটি দেখায়।

আরও বিশদ উদাহরণের জন্য http://httpd.apache.org/docs/2.2/sections.html দেখুন


2
তবে একটি <Directory>ধারক প্রবেশের অনুমতি নেই .htaccess। ইন .htaccess, .htaccessফাইলটি নিজেই " ডিরেক্টরি ধারক" (প্রতি ডিরেক্টরি কনফিগারেশন ফাইল)।
মিঃ হোয়াইট

ঠিক আছে তবে আপনি পুনঃনির্দেশ ব্যবহার করতে পারেন। Redirect /inscription/log.txt access_denied.htmlএটি access_denied.htmlযদি ব্যবহারকারী inscription/log.txtশিলালিপি ডিরেক্টরিতে যায় তবে এটি ব্যবহারকারীকে পুনর্নির্দেশ করবে ।
নিকোলাস ইংলিশ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.