ওয়ার্ডপ্রেস এবং যাদু উদ্ধৃতি


12

আমি কিছু ওয়ার্ডপ্রেস প্লাগইন লিখছি, এবং পোষ্ট এবং জিইটি ডেটাতে ওয়ার্ডপ্রেস ম্যাজিক কোট লাগানো নিয়ে আমার কিছু সমস্যা হচ্ছে।

বিশেষত, "wp_magic_quotes" ফাংশনটি \ wp-অন্তর্ভুক্ত \ load.php, যা ডাব্লুপি-সেটিংস.প্পে (সম্ভবত প্রতিটি প্রতিক্রিয়ার উপরে) বলা হয়। এই ফাংশনটি আমি পিএইচপি সেটিংসে ম্যাজিক কোটস বন্ধ করে দিলেও ডেটাতে যাদু উদ্ধৃতি যুক্ত করে।

/**
 * Add magic quotes to $_GET, $_POST, $_COOKIE, and $_SERVER.
 *
 * Also forces $_REQUEST to be $_GET + $_POST. If $_SERVER, $_COOKIE,
 * or $_ENV are needed, use those superglobals directly.
 *
 * @access private
 * @since 3.0.0
 */
function wp_magic_quotes() {
    // If already slashed, strip.
    if ( get_magic_quotes_gpc() ) {
        $_GET    = stripslashes_deep( $_GET    );
        $_POST   = stripslashes_deep( $_POST   );
        $_COOKIE = stripslashes_deep( $_COOKIE );
    }

    // Escape with wpdb.
    $_GET    = add_magic_quotes( $_GET    );
    $_POST   = add_magic_quotes( $_POST   );
    $_COOKIE = add_magic_quotes( $_COOKIE );
    $_SERVER = add_magic_quotes( $_SERVER );

    // Force REQUEST to be GET + POST.
    $_REQUEST = array_merge( $_GET, $_POST );
}

আমার কাছে কেবল wp_magic_quotes () কলটি wp-settings.php এ মন্তব্য করা কি নিরাপদ? এটি, এটি কি স্বাভাবিক ওয়ার্ডপ্রেস কোডকে নেতিবাচকভাবে প্রভাবিত করবে এবং / অথবা কিছু শোষণ ভেক্টর খুলবে? যদি তা হয় তবে ডাব্লুপি কোড সংশোধন করার পাশাপাশি এটি করারও অন্য কোনও উপায় আছে (তাই প্রতিবার আপডেটের সাথে সাথে আমার কী এটি মোকাবেলা করতে হবে না)?


কেউ আমাকে বলতে পারেন, কোথায় / কখন কার্য সম্পাদন wp_magic_quotes()করা হয়? আমি ডাব্লুপি-কোরে ফাঁসির সন্ধান করতে পারি না।
টুডো


এই সমস্যাটি এখনও 2019 সালে বিদ্যমান রয়েছে, 8 বছরেরও বেশি পরে (যেমন পিএইচপি 7.1.33 (2019-10-23) এবং ওয়ার্ডপ্রেস 5.2.4 (2019-10-14))।
পিটার মর্টেনসেন

উত্তর:


8

সরলভাবে ডাব্লুপি অনিশ্চিত পরিস্থিতিতে পরিণত করে (ম্যাজিক কোটগুলি সার্ভার কনফিগারেশনে সক্ষম হতে পারে বা নাও সক্ষম হতে পারে) তা নির্ধারণে (ম্যাজিক কোটগুলি সর্বদা উপস্থিত থাকে এবং সার্ভার কনফিগারেশনে কোনও ব্যাপার হয় না)।

সমস্ত ডাব্লুপি কোরের সাথে এটির সাথে জড়িত হওয়ার পরিবর্তে আপনার নিজের ভেরিয়েবলগুলিতে কেবল কোডে স্ল্যাশগুলি স্ট্রিপ করা আরও বেশি অর্থবোধ করে, যখন আপনার প্রয়োজন হয়।


7
এটি পাগল, যদি আমি পারি। যাদুর উক্তিগুলি যে কোনও সান কোডার দ্বারা খারাপ হিসাবে বিবেচিত হয় এবং ওয়ার্ডপ্রেসের এটি সত্যই দায়িত্বজ্ঞানহীন পছন্দ। এমন না যে আমি অবাক হই।
o0 '

5
@ লোহরিস নোট করুন যে ডাব্লুপিপি এখানে এবং এখনই নেই। এটি বহু বছরের বেশি সময় ধরে বিদ্যমান। যাদুবিদ্যার উদ্ধৃতিগুলি অন্তর্নিহিতভাবে খারাপ ধারণা থাকলে তারা প্রথম স্থানে থাকত না। সময় পরিবর্তিত হওয়ার সাথে সাথে এটি এখন যেভাবে খারাপ ধারণা তা চিত্কার করা সহজ - কোড বেসে বিদ্যমান আচরণের পরিবর্তনটি আসে বিশাল সুরক্ষা এবং পিছনের দিকের সামঞ্জস্যতার সাথে জড়িত।
রাস্ট 10

3

ওয়ার্ডপ্রেসের বর্তমান আচরণটি সমস্ত পিএইচপি সিস্টেম এবং কনফিগারেশনের সামঞ্জস্যের ভিত্তিতে সেরা অনুশীলন। ওয়ার্ডপ্রেস সর্বদা $ _GET, _P _POST, $ _COOKIE, এবং $ _SERVER কে কমানোর জন্য স্বাভাবিক করেছে, এবং আশা করে যে এটি এখনও অবিরত থাকবে।

সুতরাং, একটি পোষ্ট বা জিইটি প্যারামিটার বের করতে আমাদের লিখতে হবে:

$value = stripslashes_deep($_POST['name']); অথবা

$value = stripslashes_deep($_GET['name']);


0

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

এটি প্রতিটি সুপারগ্লোবালের জন্য স্বচ্ছভাবে স্ল্যাশিং এবং স্ট্রিপিংয়ের জন্য একটি একক "অ্যাকসেসর পদ্ধতি" (পান / সেট) লেখার সমন্বয়ে গঠিত। সুতরাং আপনি উদাহরণস্বরূপ ব্যবহার করবেন:

echo _get('username');    // echo stripslashes_deep($_GET['username']);
_cookie('name', 'value'); // $_COOKIE['name'] = addslashes_deep('value');

এইভাবে আপনি সুপারগ্লোবালগুলির সাথে আরও গণ্ডগোল করা থেকে বিরত থাকতে পারেন এবং কোনও সমাধান উপভোগ করতে পারেন যা আপনার কোডের জন্য "স্থানীয়ভাবে" কাজ করবে, কোনও পার্শ্ব প্রতিক্রিয়া ছাড়াই। আমার জন্য, এটি চূড়ান্ত সমাধান ছিল।


-3

আমার সম্প্রতি এই সমস্যাটি হয়েছিল এবং আমি অবশেষে এটি বের করে ফেললাম। আমি মূলত ওয়ার্ডপ্রেসে যাদু উদ্ধৃতিগুলিতে প্রায় প্রতিটি ওয়েবসাইট অনুসন্ধান করেছিলাম এবং তাদের কোনওটিই সহায়তা করেনি।

এটি ঠিক করার জন্য এটি:

  1. আপনার wp-settings.php এ যান

  2. Wp_magic_quotes () অনুসন্ধান করুন;

  3. শুধু এটি মন্তব্য করুন এবং এটি এখন কাজ করা উচিত

এটি কাজ করে কারণ আপনি যদি সেই কোডটি দেখেন তবে আপনি দেখতে পাবেন:

// Disable magic quotes at runtime. Magic quotes are added using wpdb later in //wp-settings.php.

@ini_set( 'magic_quotes_runtime', 0 );
@ini_set( 'magic_quotes_sybase',  0 );

Wpdb ব্যবহারের পরে যুক্ত হওয়া সেই ম্যাজিক উক্তিটি বেশিরভাগ লোককে বিভ্রান্ত করছে এবং এটি wp_magic_quotes () হয়। কেবল মন্তব্য করা আউট যাদুবিদ্যার উদ্ধৃতিগুলি আপনাকে গণ্ডগোল থেকে আটকাবে।


6
খারাপ ধারণা: পরবর্তী আপগ্রেডের পরে এই পরিবর্তনটি হারাবে।
ফুসিয়া

তবুও এটি একটি খারাপ ধারণা content, বিষয়বস্তু সংরক্ষণের সময় ম্যাজেন্টো সমস্যা না দিয়ে একই সময়ে আমি ওয়ার্ডপ্রেস এবং ম্যাজেন্টো চালিয়ে দেখতে পেয়েছি।
forsvunnet

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