কিভাবে পিএইচপি সেশন ব্যবহার করে অ্যাপাচি তে ডিরেক্টরি সুরক্ষিত করা যায়


8

আমার কাছে এমন একটি সাইট রয়েছে যা প্রমাণীকরণের জন্য পিএইচপি সেশন ব্যবহার করে। একটি ডিরেক্টরি রয়েছে যা আমি অ্যাক্সেসকে সীমাবদ্ধ রাখতে চাই যে কোনও পিএইচপি ব্যবহার করে না, এটি কেবল স্থির সামগ্রীতে পূর্ণ full

আমি ঠিক জানি না পিএইচপি স্ক্রিপ্টের মাধ্যমে প্রতিটি অনুরোধ ছাড়াই অ্যাক্সেসকে কীভাবে সীমাবদ্ধ করা যায়। আপাচে সেশন শংসাপত্রগুলি পরীক্ষা করে দেখার এবং বেসিক আথের মতো অ্যাক্সেসকে সীমাবদ্ধ করার কোনও উপায় আছে কি?

উত্তর:


5

আপনি সেটিংস পরিবর্তন না করা না হলে পিএইচপি সেশন ডেটা অস্থায়ী ডিরেক্টরিতে নিজস্ব সিরিয়ালাইজ () ফর্ম্যাটে কোনও পরিবর্তনে সংরক্ষণ করা হয় এবং পিএইচপি নিজেই ব্যবহার না করে এটি পাওয়া সহজ নয় not

দুর্ভাগ্যক্রমে, আপনি স্থির পরিবেশন করা ফাইলগুলির গতি চান বলে মনে হয় যখন প্রতিটি অনুরোধ গতিশীলভাবে অনুমোদন করা হয়, যা সত্যিকারের উপযুক্ত নয়। আপনি একটি সুপার-লাইট পিএইচপি স্ক্রিপ্ট থাকার মাধ্যমে প্রশংসা করতে পারেন যা আপনি তারপরে ফাইলগুলির অনুরোধগুলি পুনরায় লেখার জন্য মোড_উইরাইট ব্যবহার করেন, যা ভাল জিনিসগুলি পাস করে। অতি সাধারণ উদাহরণ:

.htaccess:

 RewriteEngine On
 RewriteMap auth prg:auth.php
 RewriteRule (.*) ${auth:$1}

auth.php:

#!/usr/bin/php
 <?PHP
 set_time_limit(0); # This program needs to run forever. 
 $stdin = fopen("php://stdin","r"); # Keeps reading from standard in
 while (true) {
        $line = trim(fgets($stdin));
        if (isset($_SESSION['USER_LOGGED_IN'])) {
                echo $line\n";
        } else {
                echo "authfailed.html\n";
        }
 }

উল্লেখযোগ্যভাবে, এই পিএইচপি স্ক্রিপ্ট চিরকালের জন্য চলমান, তাই আপনি যদি এটি পরিবর্তন করেন তবে আপনাকে অ্যাপাচি পুনরায় চালু করতে হবে, আমি মনে করি।

এটি সমস্ত অনির্ধারিত, তবে আমার মনে হয় আপনাকে প্রবেশ করতে হবে that's

তথ্যসূত্র:


আমি এই পদ্ধতির পছন্দ করি, তবে আমি ভাবছি যে কোনও রাইরাইটম্যাপ স্ক্রিপ্টের স্টিডিন ছাড়া অন্য কোনও কিছুর অ্যাক্সেস আছে? এটিতে কুকিজ ইত্যাদির প্রসঙ্গ আছে?
Cogsy

আসলে, হ্যাঁ, আপনার একটা কথা আছে। আপনি মোড_উইরাইটের এনভায়ারওয়ানমেন্ট ভেরিয়েবল সিনট্যাক্স ব্যবহার করে কুকিজের মান প্রেরণ করতে পারেন (সুতরাং আমি মনে করি সিনট্যাক্সটি $ {auth: $ 1 $ COOKIES like এর মতো কিছু হয়ে যাবে এবং আপনাকে স্ট্যান্ডিনের লাইনটি আর্গুমেন্ট দ্বারা বিভক্ত করতে হবে, এই পদ্ধতিতে আপনি সেশনের বিষয়বস্তুগুলি বাছাই করুন
অ্যাকুরিয়ন

আপনি যদি ধ্রুবক লেখক আইডি (প্রচুর বিট দৈর্ঘ্য) দিয়ে লগইন করে কোনও কুকি সেট করেন এবং আপনি ডিরেক্টরি অ্যাক্সেসের মাধ্যমে চেক করেন? সেরা সমাধান নয়, তবে এটি অ্যাডমিন পৃষ্ঠাগুলিতে কাজ করতে পারে ... (ফাইল শেয়ার পৃষ্ঠাগুলি দ্বারা এটি কাজ করে না কারণ ব্যবহারকারীরা কুকি ভাগ করতে পারে ...)
inf3rno

1

যদি আপনার কাছে একটি নির্দিষ্ট কুকি থাকে যা আপনি আশা করতে পারেন, তবে আপনি Mod_rewrite দিয়ে এর অনুপস্থিতির জন্য পরীক্ষা করতে পারেন এবং একটি 403 নিষিদ্ধ দিতে পারেন।

RewriteCond %{HTTP_COOKIE} !LoggedIn=true
RewriteRule .* - [F,L]

তবে, যদি কেউ জানত যে তাদের "লগডইন = ট্রু" দিয়ে একটি কুকি সেট প্রয়োজন, তবে তারা সহজেই আপনার "সুরক্ষা" পেতে পারেন।

একটি পিএইচপি সেশন পিএইচপি-র সাথে সুনির্দিষ্ট। পিএইচপি সেশনে অ্যাপাচি কোনও তথ্য ব্যবহার করার উপায় নেই। সেশন যাচাই করার জন্য আপনার কাছে কিছু প্রমাণীকরণ মডিউল থাকতে হবে।

আমি বেশিরভাগ লোককে যা দেখেছি তা হল একটি পিএইচপি স্ক্রিপ্টের স্থির সামগ্রীর পরিবেশন করার হ্যান্ডেল রয়েছে যাতে এটি অনুরোধটি পায়, সেশনটি যাচাই করে, ফাইলটিতে পড়ে এবং যথাযথ মাইমির তথ্য সহ সামগ্রীটি প্রেরণ করে।


অথবা আপনি প্রতিটি লগইন, লগআউট এবং গিসি দ্বারা .htaccess ফাইলটি পরিবর্তন করতে পারেন ...
inf3rno

1

এই সমস্যার জন্য প্রচলিত সমাধান হ'ল সেই ফোল্ডারটির প্রতিটি কল একটি পিএইচপি ফাইলে পুনর্নির্দেশ করা, যা ব্যবহারকারীর অনুমতি পরীক্ষা করে এবং তারপরে এটি ফাইলটি পড়ে এবং আউটপুট প্রবাহে প্রেরণ করে বা ব্যবহারকারীকে "অনুমতি ছাড়াই" পুনঃনির্দেশ করে সাইট। উদাহরণ স্বরূপ...

আপনার ফাইলগুলিকে সুরক্ষিত করার জন্য আর একটি জটিল উপায় হ'ল সেশন_আইড থেকে একটি টোকেন এবং একটি স্ট্যাটিক লবণ (এবং স্ট্যাটিক ফাইল পাথ থেকে অপ্টিকানালি) তৈরি করা এবং ফাইল অ্যাক্সেসের মাধ্যমে এটি পরীক্ষা করা। সুতরাং আপনাকে সেই টোকেনটি পুনরায় জেনারেট করতে হবে আপনার htaccess ফাইল। আমি জানি না কেবল এটি .htaccess দিয়েই সম্ভব, বা আপনাকে এর জন্য পিএইচপি ব্যবহার করতে হবে। আমি এখানে একটি অনুরূপ সমাধান খুঁজে পেয়েছি। আমি 99% নিশ্চিত, যে এমডি 5 আধুনিক পুনরায় লেখার বৈশিষ্ট্যটি অন্তর্নির্মিত নয়।


1
আমি ব্লগস্পট লিঙ্কটি থেকে শেল স্ক্রিপ্ট সংস্থান ব্যবহার RewriteMapকরতে পছন্দ করি prg://…যা সমস্ত আসল এমডি 5 এনক্রিপশন এবং যাচাই করে। আমার এটি পরীক্ষা করে এটি নিশ্চিত করা দরকার যে এটি আমার সেটআপে কাজ করে, তবে দেখে মনে হচ্ছে এটি ভ্যানিলা অ্যাপাচি + মোড_আরাইট মডিউলটির সাথে কাজ করা উচিত।
তৃতীয়বার

1

এই সমস্যা সমাধানের জন্য আমার পরিকল্পনা এখন to

  1. অনুরোধটি পিএইচপি-তে পুনর্নির্দেশ করুন

    RewriteEngine on
    RewriteRule ([0-9a-z-_]+)$ authenticateUser.php?&file=$1 [L]
    
  2. পিএইচপি-তে ব্যবহারকারীকে প্রমাণীকরণ করুন (অন্যান্য সমস্ত প্রমাণীকরণের পদ্ধতিগুলি খুব দুর্বল বা ফাইলগুলিতে সর্বদা লেখার প্রয়োজন রয়েছে)

    if ( User::hasPermission() && isSane( $filePath ) ) {
        // 
        header( 'X-Sendfile: ' . $filePath );
    }
    
  3. অ্যাপাচি mod_xsendfile( ডক্স , গিথুব ) ব্যবহার করুন


0

আপনি মোড_এফপি ব্যবহার করেন তবে হ্যাঁ বেসিক অ্যাথ। http://php.net/manual/en/features.http-auth.php


প্রমাণীকরণ ইতিমধ্যে পিএইচপি সেশন ব্যবহার করছে। আমি সত্যিই সেশন কুকি ব্যবহার করার উপায় খুঁজছি।
Cogsy
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.