বার্নিশ এবং টার্পেনটাইন


9

আমি খুঁজে পাচ্ছি যে যখনই আমি আমার সার্ভারে বার্নিশ পুনরায় চালু করি, আমি আমার ব্যবহারকারীদের জন্য আমার সেশনগুলি হারাচ্ছি।

এটি আমার গ্রাহকদের তাদের শপিং কার্টগুলি আলগা করে তুলবে।

ওয়ার্নিশের পক্ষে এই স্বাভাবিক আচরণ নাকি আমার ভিসিএলকে দোষ দেওয়া যায়? এটা মনে হয় যে এটি না


আরও তথ্য।

আরও তদন্তে, দেখা যাচ্ছে যে এই সমস্যাটি গিটহাবের # 725 ইস্যু সম্পর্কিত ।

আমার ম্যাজেন্টো ইনস্টলেশন সংস্করণটি 1.9.1.0। এটাও বলা উচিত যে আমার পুরো সম্মুখভাগটি https এর অধীনে চলছে। আমি এসএসএল বন্ধ করতে বার্নিশের সামনে পাউন্ড ব্যবহার করছি।

দেখা যাচ্ছে যে এই সংস্করণে ডিফল্ট ম্যাজেন্টো আচরণটি হ'ল এমআইটিএম আক্রমণগুলির বিরুদ্ধে পরীক্ষার প্রয়াসে একটি 'সেকেন্ডারি ফ্রন্টএন্ড কুকি' তৈরি করা হয়, সাধারণত 'ফ্রন্টএন্ড_সিড' নামে পরিচিত।

দেখে মনে হচ্ছে টার্পেনটাইন দ্বারা উত্পাদিত ভিসিএল ফাইলটি এই কুকিতে পাস করছে না, যা অবৈধ সেশনগুলির কারণ করছে।

কেউ কি ব্যাখ্যা করতে পারে যে ভিজিএল ফাইলটি কীভাবে ক্লায়েন্টকে দেওয়া কুকিগুলিতে পাস করে?


প্রয়োজনীয় কুকিজ তৈরি না করে এটি বার্নিশে সংকুচিত করেছি।

Magento 1.9.1.0 হিসাবে, এমআইটিএম আক্রমণগুলি ব্লক করতে একটি 'ফ্রন্টএন্ড_সিড' কুকি চালু করা হয়েছিল।

এটি Mage_Core_Model_Session_Abstract_Varienক্লাসে পাওয়া যাবে , 135 লাইনে

if (Mage::app()->getFrontController()->getRequest()->isSecure() && empty($cookieParams['secure'])) {
    // secure cookie check to prevent MITM attack
    $secureCookieName = $sessionName . '_cid';
    if (isset($_SESSION[self::SECURE_COOKIE_CHECK_KEY])
        && $_SESSION[self::SECURE_COOKIE_CHECK_KEY] !== md5($cookie->get($secureCookieName))
    ) {
        session_regenerate_id(false);
        $sessionHosts = $this->getSessionHosts();
        $currentCookieDomain = $cookie->getDomain();
        foreach (array_keys($sessionHosts) as $host) {
            // Delete cookies with the same name for parent domains
            if (strpos($currentCookieDomain, $host) > 0) {
                $cookie->delete($this->getSessionName(), null, $host);
            }
        }
        $_SESSION = array();
    }
    if (!isset($_SESSION[self::SECURE_COOKIE_CHECK_KEY])) {
        $checkId = Mage::helper('core')->getRandomString(16);
        $cookie->set($secureCookieName, $checkId, null, null, null, true);
        $_SESSION[self::SECURE_COOKIE_CHECK_KEY] = md5($checkId);
    }
}

ক্লায়েন্টদের জন্য সুরক্ষিত সংযোগ দেওয়ার জন্য, বার্নিশকে একটি 'ফ্রন্টএন্ড' কুকি তৈরি করতে হবে, যা পরে ম্যাজেন্টো সেই নির্দিষ্ট গ্রাহককে সনাক্ত করতে ব্যবহার করবে। এখনও অবধি, এটি এটি ঠিক জরিমানা করে বলে মনে হচ্ছে। যাইহোক, এটি ম্যাজেন্টো ১.৯.১.০-এর মতো দেখায়, এখন এটি 'ফ্রন্টএন্ড_সিড' কুকি তৈরি করা দরকার।

বার্নিশকে এটি করতে হবে কারণ, প্রতিক্রিয়াটি ক্যাশে করে, এটি প্রতিক্রিয়া শিরোনামকেও ক্যাশে করে, যার মধ্যে রয়েছে 'ফ্রন্টএন্ড' কুকিজ।

অতএব, ডিফল্টরূপে, বার্নিশ 'লুকোচুরি' বা 'পাস' শর্তাদি পরিচালনা করার সময় ব্যাকএন্ডের প্রতিক্রিয়াযুক্ত কোনও কুকিজ দূরে সরিয়ে দেয়। এটি একই ক্যাশেড ফ্রন্টএন্ড কুকি দিয়ে একাধিক ব্যবহারকারীর ইস্যু করা বন্ধ করার জন্য এটি করে (এটি লোক সেশনগুলির সাথে আপস করবে)।

যে কোনও সময় বার্নিশ 'পাইপ' দিয়ে অনুরোধটি পরিচালনা করে, ম্যাজেন্টো প্রয়োজনীয় কুকিগুলি তৈরি করতে এবং তাদের ব্যবহারকারীর ব্রাউজারে সংযুক্ত করতে সক্ষম। এর ফলে সিস্টেম প্রাথমিক বৈধতা ব্যর্থ হয়, তবে তারপরে ব্যবহারকারীকে একটি নতুন অধিবেশন সরবরাহ করে। এই লক্ষণটি কার্টের ক্ষতি বা শপিং কার্টে পণ্য যুক্ত করতে অক্ষম হিসাবে প্রকাশ করে।

টার্পেনটাইন ভিসিএল কোনও অনুরোধ 'পাইপ' করবে যা ফাংশনটিতে এই কোড দ্বারা দেখা মেথড টাইপ জিইটি বা হেডের নয় vcl_recv:

// We only deal with GET and HEAD by default
// we test this here instead of inside the url base regex section
// so we can disable caching for the entire site if needed
if (!true || req.http.Authorization ||
    req.request !~ "^(GET|HEAD)$" ||
    req.http.Cookie ~ "varnish_bypass=1") {
    return (pipe);
}

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


কিভাবে ঠিক করবো?

আমি বিশ্বাস করি যে এই সমস্যাটির সমাধান হ'ল আগত দর্শকদের জন্য টার্পেনটাইন ভিসিএল একটি 'ফ্রন্টএন্ড_সিড' কুকি তৈরি করা এবং তারপেন্টাইন মডিউলটি সেই কুকিকে বর্তমান সেশনে যুক্ত করুন যেমন এটি এখন 'ফ্রন্ট্যান্ড্যান্ড' কুকির জন্য রয়েছে।

সুতরাং ... আমরা কীভাবে এটি বাস্তবায়ন করব?

কেভেট: আমি ভুল হতে পারি, আমি বার্নিশের জন্য খুব নতুন, তবে আমি এখন এটিতে প্রচুর ঘন্টা ব্যয় করেছি এবং এটি আমি যা দেখছি, এখনই যে কেউ সমর্থন করছেন তা প্রশংসিত হবে।

শেষ আপডেট এবং আমার চয়ন ফিক্স - 2015 10 30

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

এই ইস্যুতে আমি যে সর্বোত্তম সমাধানটি নিয়ে এসেছি তা হ'ল ম্যাজেন্টো গ্রাহক সেশনগুলি যেভাবে পরিচালনা করে তা পরিবর্তিত করে দেওয়া।

বর্তমানে ম্যাজেন্টো এইভাবে অবৈধ সেশনগুলি পরিচালনা করে:

IF
    The requested session by the customer is flagged as invalid
THEN
    Stop processing request
    Redirect to the appropriate page

আমার নতুন যুক্তিটি নিম্নরূপ:

IF
    The requested session by the customer is flagged as invalid
THEN
    Create a new session
    Complete the requested task
    Redirect to the appropriate page

আমার নতুন পদ্ধতির বর্ণনিত এমনকি গ্রাহকদের প্রতিক্রিয়া এমনকি প্রথম দর্শনে পরিচালনা করতে দেয়। যা টারপেনটাইনের সর্বশেষ বাস্তবায়ন কাজ করে না।


আমার ইস্যু, ইস্যু # 829 - / নেক্সেসি / ম্যাজেন্টো-টার্পেনটাইন / ইস্যু / 829 গিটহাবের উপর। আমার ভিসিএলের একটি অনুলিপি এখানে পাওয়া যাবে।


এখানে পাওয়া অনেক পুরনো সমস্যার সদৃশ হওয়ায় গিটহাবে আমার সমস্যাটি বন্ধ হয়ে গেছে:

ইস্যু # 345


1
আমি দেখেছি আপনি সবেমাত্র গিটহাবে একটি সমস্যা খোলেন, আমি কাল সকালে এটি পরীক্ষা করব। এর মধ্যে আপনি github.com/nexcess/magento-turpentine/issues/90 এবং github.com/nexcess/magento-turpentine/issues/92 চেক করতে পারেন ।
মবলপর্দা

এটি অসম্ভব, সেশনগুলি ম্যাজেন্টো এবং ব্যবহারকারীদের ব্রাউজারে সংরক্ষণ করা হয়, বার্নিশটির সাথে এর কোনও সম্পর্ক নেই। কিছু সম্ভবত ভুল কনফিগার করা হয়েছে।

উত্তর:


4

আপনার কুকি পথটি সঠিকভাবে সেট না করার কারণে এটি হতে পারে।

Admin->Configuration->Web->Session Cookie Managementইতিমধ্যে না হলে আপনার কুকি সেটিংস সেট করার চেষ্টা করুন ।

বিকল্পভাবে এটি বার্নিশে একটি বাগ হতে পারে।


ধন্যবাদ @ পারফর্মডিজিটাল, আমি আরও কিছু তদন্ত করেছি এবং আমার প্রশ্ন আপডেট করছি।
পিটার এ

1

আমার সন্দেহ হয় আপনার সাম্প্রতিক টার্পেনটাইন আপডেট দ্বারা সমাধান করা হবে: https://github.com/nexcess/magento-turpentine/commit/66615b7cc987854e8671911ab6c3aa22afb808a2

সেশন জেনারেশন ফিক্সগুলি মুছে ফেলাগুলি # 806, # 345 এবং আরও অনেকগুলি অতিরিক্ত সেশন, খালি কার্টস ইত্যাদির সাথে সম্পর্কিত issues

নতুন সেশনের জন্য প্রথম পৃষ্ঠার লোডে বার্নিশকে বাইপাস করা যায়।

সুতরাং বার্নিশকে আর সেশন কুকি নকল করার চেষ্টা করতে হবে না (প্রথম পৃষ্ঠার অনুরোধে ক্যাশে থেকে প্রতিক্রিয়া জানাতে না পারা)

আমরা দেখতে পেয়েছি যে এই পরিবর্তনটি আমাদের বেশ কয়েকটি ম্যাজেন্টো গ্রাহকদের (আমরা www.section.io চালাচ্ছি ) এই সমস্যার সমাধান করেছে ।


1
ধন্যবাদ @ ম্যাটানহাট, প্রস্তাবিত সমাধান সম্পর্কে আমি সচেতন তবে এটি গ্রহণযোগ্য মনে করি না। আমি একটি ভিন্ন সমাধান বাস্তবায়ন শেষ। অধিবেশনটি বৈধ ছিল কিনা তা আমি ম্যাজেন্টো যাচাই করেছিলাম এবং স্ক্রিপ্টটি সমাপ্ত করার পরিবর্তে এটি যদি না হয় তবে আমি এটিকে একটি নতুন অধিবেশন আরম্ভ করে দিয়েছিলাম এবং অনুরোধটি সম্পূর্ণ করি।
পিটার এ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.