XML-RPC এর ভূমিকা। প্রোগ্রামিং প্রতিযোগিতা সার্ভার লগে কি দৃশ্যমান হয়
তার পোস্ট এছাড়াও দেখায় কিভাবে ব্রাউজার প্রমাণীকরণ করতে হয়, নীচের মত:
$request = xmlrpc_encode_request ("methodName" , array("methodParam" ));
$auth = base64_encode ($username . ":" . $password);
$header = (version_compare(phpversion(), "5.2.8"))
? অ্যারে("কন্টেন্ট-টাইপ: টেক্সট/এক্সএমএল" , "অনুমোদন: বেসিক $auth " )
: "কন্টেন্ট-টাইপ: টেক্সট/xml\r\nঅনুমোদন: মৌলিক$auth " ; //
$context = stream_context_create (অ্যারে("http" => অ্যারে(
"পদ্ধতি" => "পোস্ট" ,
"হেডার" => $হেডার ,
"সামগ্রী" => $ অনুরোধ
)));
$webservice = "http://www.example.com/rpc";
$file = file_get_contents($webservice, false, $context);
$response = xmlrpc_decode ($file);
যদি (xmlrpc_is_fault($response)) (
ফেরত দিন "xmlrpc: $response [ faultString ] ($response [ faultCode ] )" ;
) অন্য (
$response ফেরত দিন;
}
?>
1 - সম্পাদক দ্রষ্টব্য: এটি "স্যান্ডার্সওয়াং ডিটি পিএইচপি এ জিমেইল ডট কম" থেকে একটি সমাধান
16 বছর আগে
বাইনারি স্ট্রিং (xmlrpc_set_type দিয়ে সেট) a এ যান
যদিও এটি নির্বোধ হতে পারে, এটি কিছু XML-RPC সার্ভারের জন্য বাস্তব সমস্যা সৃষ্টি করে, যেমন http://jakarta.apache.org/xmlrpc/ (nee Helma)। মত কিছু সঙ্গে যারা সত্তা স্ট্রিপিং আউট
$req = preg_replace("/ /", "", xmlrpc_encode_request("my.method", $args));
সমস্যার চারপাশে কাজ করে।
11 বছর আগে
এটা উল্লেখ করা উচিত যে এনকোডিং কিছু এনকোড বলে মনে হচ্ছে না, শুধু XML হেডারে যা যায় তা নির্দিষ্ট করুন।
এই ফাংশনটি ব্যবহার করার সময় ডাবল-এনকোড করা UTF স্ট্রিংগুলিকে ডাটাবেসে সংরক্ষিত করা, এটিকে একটি অ্যাপাচি xml-rpc সার্লেটে পাঠানো এবং মাইএসকিউএল ডাটাবেসে সংরক্ষণ করার সময় আমাদের সমস্যা ছিল। "এস্কেপিং" কে "মার্কআপ" এ সেট করে এবং "ইউটিএফ-৮" এ "এনকোডিং" সেট করে সমাধান করা হয়েছিল (এছাড়াও xmlrpc_decode-এ "utf-8" সেট করতে ভুলবেন না)।
মনে হচ্ছে UTF-8 এনকোড করা স্ট্রিংগুলি তাদের বাইটগুলিকে সত্তা হিসাবে তাদের অক্ষরগুলির পরিবর্তে সত্তা হিসাবে পালাতে পারে৷
9 বছর আগে
xmlrpc এর সাথে নিম্নলিখিতগুলির মতো একটি অ্যারে প্রেরণ করার চেষ্টা করেছেন?
$var1=অ্যারে(7=>14,9=>18);
আউটপুট অ্যারে বেশ ভিন্ন দেখায়! এটি দেখতে এরকম হবে:
$var2 = অ্যারে(14,18);
আমি খুঁজে পেয়েছি একমাত্র সমাধান হল সূচীতে একটি স্থান প্রিপেন্ড করা:
$var3=অ্যারে("7"=>14," 9"=>18);
সেই পদ্ধতি ব্যবহার করে আপনি সঠিক ফলাফল পাবেন। ($var1)
16 বছর আগে
এই ফাংশনটি একটি XML-RPC ক্লায়েন্ট দ্বারা একটি XML-RPC অনুরোধের জন্য একটি XML পেলোড তৈরি করতে ব্যবহার করা উচিত;
$params = "system.methodSignature" ;
$method = "system.methodHelp" ;
$request = xmlrpc_encode_request ($method, $params);
প্রতিধ্বনি ($ অনুরোধ);
?>
উৎপাদন করে;
দ্বিতীয় যুক্তিটি ভেরিয়েবলের ধরনকে স্বীকৃতি দেয় এবং সঠিক XML-RPC গঠন তৈরি করে। আরো বিস্তারিত জানার জন্য xmlrpc_encode() দেখুন।
1 ২ বছর আগে
ফাংশন ওভারলোড সহ সাধারণ OO ক্লায়েন্ট:
php মেথড test_helloworld-এ অনুবাদ করা হয়েছে xmlrpc মেথড test.helloworld.
ক্লাস RpcClient(
ব্যক্তিগত $_methods;
ব্যক্তিগত $_প্রসঙ্গ;
ব্যক্তিগত $_url;
ফাংশন __construct ($url, $user, $passwd) (
$auth = base64_encode(sprintf("%s:%s", $user,$passwd));
$this->_context = stream_context_create(array(
"http" => অ্যারে(
"পদ্ধতি" => "পোস্ট",
"header" => "কন্টেন্ট-টাইপ: text/xml\r\n"।
"অনুমোদন: মৌলিক $auth" ,
)
));
$this->_url = $url;
$this->registerMethod("Test_HelloWorld");
ফাংশন __call($methodName, $params) (
যদি (array_key_exists($methodName,$this->_methods)) (
// অ্যাপেল লা ফাংশন আরপিসিতে
$m = str_replace("_", ".", $methodName);
$r = xmlrpc_encode_request($m, $params,array("verbosity"=>"newlines_only"));
$c = $this->_context;
stream_context_set_option($c,"http","content",$r);
$f = file_get_contents($this->_url,false,$c);
$resp = xmlrpc_decode($f);
ফেরত $resp;
) অন্য (
// অ্যাপেল লা ফাংশন ডি ল"অবজেট-এ
call_user_method_array($methodName, $this,$params);
}
}
প্রাইভেট ফাংশন রেজিস্টার পদ্ধতি ($method) (
$this->_methods[$method] = সত্য;
}
XML-RPC এর ভূমিকা
ইন্টারনেটে অনেকগুলি বিভিন্ন সংস্থান রয়েছে যা ব্যবহারকারীদের নির্দিষ্ট তথ্য সরবরাহ করে। এর মানে সাধারণ স্ট্যাটিক পেজ নয়, কিন্তু, উদাহরণস্বরূপ, ডেটাবেস বা আর্কাইভ থেকে প্রাপ্ত ডেটা। এটি আর্থিক তথ্যের একটি সংরক্ষণাগার হতে পারে (বিনিময় হার, সিকিউরিটিজ কোট ডেটা), আবহাওয়ার ডেটা, বা আরও বিশাল তথ্য - সংবাদ, নিবন্ধ, ফোরাম থেকে বার্তা। এই ধরনের তথ্য পৃষ্ঠা দর্শকদের কাছে উপস্থাপন করা যেতে পারে, উদাহরণস্বরূপ, একটি ফর্মের মাধ্যমে, একটি অনুরোধের প্রতিক্রিয়া হিসাবে, বা এটি প্রতিবার গতিশীলভাবে তৈরি করা যেতে পারে। কিন্তু অসুবিধা হল যে প্রায়শই এই ধরনের তথ্য শেষ ব্যবহারকারী - একজন ব্যক্তির দ্বারা এত বেশি প্রয়োজন হয় না, তবে অন্যান্য সিস্টেম এবং প্রোগ্রামগুলির দ্বারা যা তাদের গণনা বা অন্যান্য প্রয়োজনের জন্য এই ডেটা ব্যবহার করবে।
বাস্তব উদাহরণ: একটি ব্যাংকিং ওয়েবসাইটের একটি পৃষ্ঠা যা মুদ্রার উদ্ধৃতি প্রদর্শন করে। আপনি যদি একটি নিয়মিত ব্যবহারকারী হিসাবে পৃষ্ঠাটি একটি ব্রাউজারের মাধ্যমে অ্যাক্সেস করেন, আপনি সমস্ত পৃষ্ঠার নকশা, ব্যানার, মেনু এবং অন্যান্য তথ্য দেখতে পান যা অনুসন্ধানের আসল উদ্দেশ্য - মুদ্রার উদ্ধৃতি "ফ্রেম" করে। আপনার যদি এই উদ্ধৃতিগুলি আপনার অনলাইন স্টোরে প্রবেশ করতে হয়, তবে ম্যানুয়ালি প্রয়োজনীয় ডেটা নির্বাচন করা এবং ক্লিপবোর্ডের মাধ্যমে আপনার ওয়েবসাইটে স্থানান্তর করা ছাড়া আর কিছুই করার নেই৷ এবং আপনাকে প্রতিদিন এটি করতে হবে। সত্যিই কি কোন উপায় নেই?
আপনি যদি সমস্যার সমাধান করেন, তাহলে অবিলম্বে একটি সমাধান আসে: একটি প্রোগ্রাম (ওয়েবসাইটের স্ক্রিপ্ট) যার জন্য ডেটা প্রয়োজন সে সার্ভার থেকে "নিয়মিত ব্যবহারকারী" হিসাবে একটি পৃষ্ঠা গ্রহণ করে, ফলস্বরূপ এইচটিএমএল কোডকে পার্স করে (পার্স করে) এবং বের করে। এটি থেকে প্রয়োজনীয় তথ্য। এটি একটি রেগুলার রেগুলার এক্সপ্রেশন বা যেকোনো html পার্সার ব্যবহার করে করা যেতে পারে। পদ্ধতির অসুবিধা তার অকার্যকরতার মধ্যে রয়েছে। প্রথমত, ডেটার একটি ছোট অংশ গ্রহণ করতে (মুদ্রার ডেটা আক্ষরিক অর্থে এক ডজন বা দুটি অক্ষর), আপনাকে পুরো পৃষ্ঠাটি গ্রহণ করতে হবে, যা কমপক্ষে কয়েক দশ কিলোবাইট। দ্বিতীয়ত, পৃষ্ঠা কোডের কোনো পরিবর্তনের সাথে, উদাহরণস্বরূপ, নকশা পরিবর্তন হয়েছে বা অন্য কিছু, আমাদের পার্সিং অ্যালগরিদম পুনরায় করতে হবে। এবং এই সম্পদ একটি ন্যায্য পরিমাণ নিতে হবে.
অতএব, বিকাশকারীরা একটি সিদ্ধান্তে এসেছেন - এমন কিছু সর্বজনীন প্রক্রিয়া বিকাশ করা প্রয়োজন যা স্বচ্ছ (প্রটোকল এবং ট্রান্সমিশন মাঝারি স্তরে) এবং যে কোনও জায়গায় থাকা প্রোগ্রামগুলির মধ্যে ডেটার সহজ আদান-প্রদানের অনুমতি দেবে, যে কোনও ভাষায় লিখিত হতে পারে। এবং যে কোন অপারেটিং সিস্টেমের অধীনে চালিত হয়। সিস্টেম এবং যে কোন হার্ডওয়্যার প্ল্যাটফর্মে। এই ধরনের ব্যবস্থাকে এখন উচ্চ শব্দ "ওয়েব পরিষেবা", "SOAP", "পরিষেবা-ভিত্তিক আর্কিটেকচার" বলা হয়। ডেটা এক্সচেঞ্জের জন্য, খোলা এবং সময়-পরীক্ষিত মান ব্যবহার করা হয় - HTTP প্রোটোকল বার্তা প্রেরণ করতে ব্যবহৃত হয় (যদিও অন্যান্য প্রোটোকল ব্যবহার করা যেতে পারে - SMTP, উদাহরণস্বরূপ)। ডেটা নিজেই (আমাদের উদাহরণে, বিনিময় হার) একটি ক্রস-প্ল্যাটফর্ম বিন্যাসে প্যাকেজ করা হয় - এক্সএমএল নথির আকারে। এই উদ্দেশ্যে, একটি বিশেষ মান উদ্ভাবিত হয়েছিল - SOAP।
হ্যাঁ, এখন ওয়েব পরিষেবা, SOAP এবং XML প্রত্যেকের মুখেই রয়েছে, সেগুলি সক্রিয়ভাবে প্রয়োগ করা শুরু করেছে এবং IBM এবং Microsoft এর মতো বড় কর্পোরেশনগুলি ওয়েব পরিষেবাগুলির সম্পূর্ণ বাস্তবায়নে সহায়তা করার জন্য ডিজাইন করা নতুন পণ্য প্রকাশ করছে৷
কিন্তু! আমাদের উদাহরণের জন্য বিনিময় হারের সাথে যা অবশ্যই ব্যাঙ্কের ওয়েবসাইট থেকে অনলাইন স্টোর ইঞ্জিনে প্রেরণ করতে হবে, এই জাতীয় সমাধান খুব কঠিন হবে। সর্বোপরি, একা SOAP স্ট্যান্ডার্ডের বর্ণনা একটি অশ্লীল দেড় হাজার পৃষ্ঠা নেয় এবং এটিই সব নয়। ব্যবহারিক ব্যবহারের জন্য, আপনাকে তৃতীয়-পক্ষের লাইব্রেরি এবং এক্সটেনশনগুলির সাথে কীভাবে কাজ করতে হয় তাও শিখতে হবে (শুধুমাত্র PHP 5.0 থেকে শুরু করে এটি SOAP-এর সাথে কাজ করার জন্য একটি লাইব্রেরি অন্তর্ভুক্ত করে), এবং আপনার নিজের কোডের শত শত এবং হাজার হাজার লাইন লিখতে হবে। এবং এই সব কিছু অক্ষর এবং সংখ্যা পেতে স্পষ্টতই খুব কষ্টকর এবং অযৌক্তিক.
অতএব, আরেকটি আছে, কেউ বলতে পারে, তথ্য বিনিময়ের জন্য বিকল্প মান - XML-RPC। এটি ইউজারল্যান্ড সফটওয়্যার ইনকর্পোরেটেড দ্বারা মাইক্রোসফ্টের অংশগ্রহণে তৈরি করা হয়েছে এবং এটি ইন্টারনেটের মাধ্যমে অ্যাপ্লিকেশনগুলির মধ্যে একীভূত ডেটা স্থানান্তরের জন্য ডিজাইন করা হয়েছে। এটি সরল পরিষেবাগুলি তৈরি করার সময় SOAP প্রতিস্থাপন করতে পারে যেখানে বাস্তব ওয়েব পরিষেবাগুলির সমস্ত "এন্টারপ্রাইজ" ক্ষমতার প্রয়োজন হয় না।
সংক্ষেপণ XML-RPC মানে কি? RPC এর অর্থ হল রিমোট প্রসিডিউর কল। এর মানে হল যে একটি অ্যাপ্লিকেশন (সার্ভারে একটি স্ক্রিপ্ট হোক বা ক্লায়েন্ট কম্পিউটারে একটি নিয়মিত অ্যাপ্লিকেশন) স্বচ্ছভাবে এমন একটি পদ্ধতি ব্যবহার করতে পারে যা অন্য কম্পিউটারে শারীরিকভাবে বাস্তবায়িত এবং কার্যকর করা হয়। এক্সএমএল এখানে প্রেরিত ডেটা বর্ণনা করার জন্য একটি সার্বজনীন বিন্যাস প্রদান করতে ব্যবহৃত হয়। একটি পরিবহন হিসাবে, HTTP প্রোটোকলটি বার্তা প্রেরণ করতে ব্যবহৃত হয়, যা আপনাকে যেকোনো নেটওয়ার্ক ডিভাইস - রাউটার, ফায়ারওয়াল, প্রক্সি সার্ভারের মাধ্যমে নির্বিঘ্নে ডেটা বিনিময় করতে দেয়।
এবং তাই, ব্যবহার করার জন্য আপনার থাকতে হবে: একটি XML-RPC সার্ভার যা এক বা একাধিক পদ্ধতি প্রদান করে, একটি XML-RPC ক্লায়েন্ট যা একটি সঠিক অনুরোধ তৈরি করতে পারে এবং সার্ভারের প্রতিক্রিয়া প্রক্রিয়া করতে পারে এবং সফল অপারেশনের জন্য প্রয়োজনীয় সার্ভারের পরামিতিগুলিও জানতে পারে - ঠিকানা, পদ্ধতির নাম এবং পাস করা পরামিতি।
XML-RPC এর সাথে সমস্ত কাজ "অনুরোধ-প্রতিক্রিয়া" মোডে ঘটে, এটি প্রযুক্তি এবং SOAP স্ট্যান্ডার্ডের মধ্যে পার্থক্যগুলির মধ্যে একটি, যেখানে লেনদেনের ধারণা এবং বিলম্বিত কল করার ক্ষমতা উভয়ই রয়েছে (যখন সার্ভার সংরক্ষণ করে অনুরোধ এবং ভবিষ্যতে একটি নির্দিষ্ট সময়ে এটির প্রতিক্রিয়া)। এই অতিরিক্ত বৈশিষ্ট্যগুলি শক্তিশালী কর্পোরেট পরিষেবাগুলির জন্য আরও উপযোগী; তারা উল্লেখযোগ্যভাবে সার্ভারগুলির বিকাশ এবং সমর্থনকে জটিল করে তোলে এবং ক্লায়েন্ট সমাধানগুলির বিকাশকারীদের উপর অতিরিক্ত প্রয়োজনীয়তা রাখে৷
XML-RPC এর সাথে কাজ করার পদ্ধতিটি একটি অনুরোধ গঠনের সাথে শুরু হয়। একটি সাধারণ অনুরোধ এই মত দেখায়:
পোস্ট/RPC2 HTTP/1.0
ব্যবহারকারী-এজেন্ট: eshop-test/1.1.1 (FreeBSD)
হোস্ট: server.localnet.com
বিষয়বস্তুর ধরন: টেক্সট/এক্সএমএল
বিষয়বস্তুর দৈর্ঘ্য: 172
প্রথম লাইনগুলি স্ট্যান্ডার্ড HTTP POST অনুরোধ শিরোনাম গঠন করে। প্রয়োজনীয় পরামিতিগুলির মধ্যে হোস্ট, ডেটা টাইপ (MIME প্রকার), যা অবশ্যই পাঠ্য/xml এবং বার্তার দৈর্ঘ্য অন্তর্ভুক্ত। মান এছাড়াও নির্দিষ্ট করে যে ব্যবহারকারী-এজেন্ট ক্ষেত্রটি অবশ্যই পূরণ করতে হবে, তবে একটি নির্বিচারে মান থাকতে পারে।
এরপরে XML নথির স্বাভাবিক শিরোনামটি আসে। অনুরোধের মূল উপাদান হল
লাইন
পরবর্তী, প্রেরিত পরামিতি সেট করা হয়। এই বিভাগে এই জন্য ব্যবহার করা হয়.
সমস্ত প্যারামিটারের বর্ণনা ক্লোজিং ট্যাগ দ্বারা অনুসরণ করা হয়। XML-RPC-তে অনুরোধ এবং প্রতিক্রিয়া নিয়মিত XML নথি, তাই সমস্ত ট্যাগ বন্ধ করতে হবে। কিন্তু XML-RPC-তে কোনো একক ট্যাগ নেই, যদিও তারা XML স্ট্যান্ডার্ডে উপস্থিত।
এখন সার্ভারের প্রতিক্রিয়া দেখা যাক। HTTP প্রতিক্রিয়া শিরোনাম স্বাভাবিক; অনুরোধ সফলভাবে প্রক্রিয়া করা হলে, সার্ভার একটি HTTP/1.1 200 ওকে প্রতিক্রিয়া প্রদান করে। অনুরোধের মতোই, আপনাকে অবশ্যই MIME প্রকার, বার্তার দৈর্ঘ্য এবং প্রতিক্রিয়া তৈরির তারিখ সঠিকভাবে উল্লেখ করতে হবে।
প্রতিক্রিয়া শরীর নিজেই নিম্নরূপ:
এখন রুট ট্যাগের পরিবর্তে
আপনার অনুরোধ প্রক্রিয়া করার সময় যদি একটি ত্রুটি ঘটেছে, পরিবর্তে প্রতিক্রিয়া উপাদান ধারণ করবে
এখন এক্সএমএল-আরপিসি-তে ডেটা টাইপের সংক্ষিপ্ত বিবরণ দেওয়া যাক। মোট 9টি ডেটা টাইপ আছে - সাতটি সাধারণ প্রকার এবং 2টি জটিল। প্রতিটি প্রকারের নিজস্ব ট্যাগ বা ট্যাগের সেট (জটিল প্রকারের জন্য) দ্বারা বর্ণনা করা হয়।
সহজ প্রকার:
পুরো সংখা- ট্যাগ
বুলিয়ান টাইপ- ট্যাগ
ASCII স্ট্রিং- ট্যাগ দ্বারা বর্ণিত
ফ্লোটিং পয়েন্ট সংখ্যা- ট্যাগ
তারিখ এবং সময়- ট্যাগ দ্বারা বর্ণিত
সর্বশেষ সহজ প্রকার base64 এনকোডেড স্ট্রিং, যা ট্যাগ দ্বারা বর্ণনা করা হয়
জটিল প্রকারগুলি কাঠামো এবং অ্যারে দ্বারা প্রতিনিধিত্ব করা হয়। গঠন মূল উপাদান দ্বারা নির্ধারিত হয়
অ্যারেগুলির কোন নাম নেই এবং ট্যাগ দ্বারা বর্ণনা করা হয়
অবশ্যই, কেউ বলবে যে ডেটা প্রকারের এই জাতীয় তালিকা খুব খারাপ এবং "আপনাকে প্রসারিত করার অনুমতি দেয় না।" হ্যাঁ, আপনার যদি জটিল বস্তু বা প্রচুর পরিমাণে ডেটা স্থানান্তর করার প্রয়োজন হয় তবে SOAP ব্যবহার করা ভাল। এবং ছোট, অপ্রয়োজনীয় অ্যাপ্লিকেশনগুলির জন্য, XML-RPC বেশ উপযুক্ত; অধিকন্তু, প্রায়শই এমনকি এর ক্ষমতাগুলিও অনেক বেশি হয়ে যায়! স্থাপনের সহজতা বিবেচনা করে, প্রায় যেকোনো ভাষা এবং প্ল্যাটফর্মের জন্য একটি খুব বড় সংখ্যক লাইব্রেরি এবং পিএইচপি-তে ব্যাপক সমর্থন, তারপরে XML-RPC-এর প্রায়শই কোনও প্রতিযোগী থাকে না। যদিও এটি অবিলম্বে একটি সর্বজনীন সমাধান হিসাবে সুপারিশ করা যাবে না - প্রতিটি নির্দিষ্ট ক্ষেত্রে এটি পরিস্থিতি অনুযায়ী সিদ্ধান্ত নিতে হবে।
এক্সএমএল-আরপিসি প্রযুক্তি ওয়ার্ডপ্রেস সিস্টেমে বিভিন্ন চমৎকার বৈশিষ্ট্য যেমন পিংব্যাক, ট্র্যাকব্যাক, অ্যাডমিন প্যানেলে লগ ইন না করে রিমোট সাইট ম্যানেজমেন্ট ইত্যাদির জন্য ব্যবহার করা হয়। দুর্ভাগ্যবশত, আক্রমণকারীরা ওয়েবসাইটগুলিতে DDoS আক্রমণ করতে এটি ব্যবহার করতে পারে। অর্থাৎ, আপনি নিজের জন্য বা অর্ডার করার জন্য সুন্দর, আকর্ষণীয় WP প্রকল্পগুলি তৈরি করেন এবং একই সময়ে, কিছু সন্দেহ না করে, আপনি একটি DDoS বটনেটের অংশ হতে পারেন। দশ হাজার এবং কয়েক হাজার সাইট একসাথে সংযুক্ত করার মাধ্যমে, খারাপ লোকেরা তাদের শিকারের উপর একটি শক্তিশালী আক্রমণ তৈরি করে। যদিও একই সময়ে আপনার সাইটটিও ক্ষতিগ্রস্ত হয়, কারণ... লোড হোস্টিং যেখানে এটি অবস্থিত সেখানে যায়।
এই ধরনের খারাপ কার্যকলাপের প্রমাণ সার্ভার লগ (nginx-এ access.log) হতে পারে, যার মধ্যে নিম্নলিখিত লাইনগুলি রয়েছে:
103.238.80.27 - - "POST/wp-login.php HTTP/1.0" 200 5791 "-" "-"
তবে আসুন XML-RPC দুর্বলতায় ফিরে আসি। দৃশ্যত, এটি আপনার সার্ভারে সাইটগুলির ধীরগতিতে খোলার বা সেগুলিকে লোড করতে অক্ষমতার মধ্যে নিজেকে প্রকাশ করে (502 খারাপ গেটওয়ে ত্রুটি)। আমার FASTVPS হোস্টের প্রযুক্তিগত সহায়তা আমার অনুমান নিশ্চিত করেছে এবং পরামর্শ দিয়েছে:
- প্লাগইন সহ সর্বশেষ সংস্করণে ওয়ার্ডপ্রেস আপডেট করুন। সাধারণভাবে, আপনি যদি অনুসরণ করেন, আপনি হয়ত সর্বশেষ 4.2.3 ইনস্টল করার প্রয়োজনীয়তা সম্পর্কে পড়েছেন। নিরাপত্তা সমালোচনার কারণে (ঠিক আগের সংস্করণের মতো)। সংক্ষেপে, আপডেট করা ভাল।
- নিষ্ক্রিয় XML-RPC Pingback প্লাগইন ইনস্টল করুন।
ওয়ার্ডপ্রেসে XML-RPC নিষ্ক্রিয় করা হচ্ছে
পূর্বে, আমার কাছে মনে হচ্ছে XML-RPC সক্ষম/অক্ষম করার বিকল্পটি সিস্টেম সেটিংসে কোথাও ছিল, কিন্তু এখন আমি সেখানে এটি খুঁজে পাচ্ছি না। অতএব, এটি পরিত্রাণ পেতে সবচেয়ে সহজ উপায় উপযুক্ত প্লাগইন ব্যবহার করা হয়.
XML-RPC Pingback নিষ্ক্রিয় খুঁজুন এবং ডাউনলোড করুন অথবা সরাসরি সিস্টেম অ্যাডমিন প্যানেল থেকে এটি ইনস্টল করুন। আপনাকে অতিরিক্ত কিছু কনফিগার করার দরকার নেই, মডিউলটি অবিলম্বে কাজ শুরু করে। এটি XML-RPC ইন্টারফেস থেকে pingback.ping এবং pingback.extensions.getPingbacks পদ্ধতিগুলি সরিয়ে দেয়। উপরন্তু, এটি HTTP শিরোনাম থেকে X-Pingback সরিয়ে দেয়।
একটি ব্লগে আমি XML-RPC নিষ্ক্রিয় করার জন্য আরও কয়েকটি বিকল্প খুঁজে পেয়েছি।
1. টেমপ্লেটে XML-RPC নিষ্ক্রিয় করুন৷
এটি করার জন্য, থিমের functions.php ফাইলে নিম্নলিখিত লাইন যোগ করুন:
আমি ব্যক্তিগতভাবে শেষ দুটি পদ্ধতি ব্যবহার করিনি, কারণ... আমি নিষ্ক্রিয় XML-RPC Pingback প্লাগইন সংযুক্ত করেছি - আমি মনে করি এটি যথেষ্ট হবে৷ শুধু যারা অপ্রয়োজনীয় ইনস্টলেশন পছন্দ করেন না তাদের জন্য, আমি বিকল্প বিকল্পগুলির পরামর্শ দিয়েছি।
শনিবার দুপুর থেকে শুরু করে, আমার সার্ভার, যেখানে প্রায় 25টি ওয়ার্ডপ্রেস সাইট হোস্ট করা হয়েছে, গুরুতর মন্দার সম্মুখীন হতে শুরু করেছে। যেহেতু আমি পূর্ববর্তী আক্রমণগুলি ( , ) লক্ষ্য না করেই বেঁচে থাকতে পেরেছি, আমি অবিলম্বে বুঝতে পারিনি কী ঘটছে৷
যখন আমি এটি খুঁজে বের করেছি, তখন দেখা গেল যে পাসওয়ার্ডগুলি জবরদস্তি করা হচ্ছে + XMLRPC এর কাছে অনেক অনুরোধ।
ফলস্বরূপ, আমরা এটি সব বন্ধ করতে পরিচালিত, যদিও অবিলম্বে না। এটি কীভাবে এড়ানো যায় সে সম্পর্কে এখানে তিনটি সহজ কৌশল রয়েছে।
এই কৌশলগুলি সম্ভবত প্রত্যেকের কাছে পরিচিত, তবে আমি কয়েকটি ভুলের উপর পদক্ষেপ নিয়েছি যা আমি বর্ণনাগুলিতে খুঁজে পাইনি - সম্ভবত এটি কারও সময় বাঁচাতে পারে।
1. অনুসন্ধান বন্ধ করুন, সীমিত লগইন প্রচেষ্টা প্লাগইন ইনস্টল করুন - এটি ইনস্টল করুন, যেহেতু অন্যান্য সুরক্ষাগুলি সার্ভারকে ব্যাপকভাবে ধীর করে দেয়, উদাহরণস্বরূপ, লগইন সিকিউরিটি সলিউশন প্লাগইন ব্যবহার করার সময়, সার্ভারটি আধা ঘন্টা পরে মারা যায়, প্লাগইনটি ডাটাবেসকে ভারীভাবে লোড করে .
সেটিংসে, "প্রক্সির জন্য" চেকবক্সটি চালু করতে ভুলবেন না - অন্যথায় এটি সবার জন্য আপনার সার্ভারের আইপি নির্ধারণ করবে এবং স্বয়ংক্রিয়ভাবে সবাইকে ব্লক করবে।
আপডেট, ধন্যবাদ, বিশদ বিবরণ নীচে মন্তব্যগুলিতে রয়েছে - "প্রক্সির জন্য" চেকবক্স সক্রিয় করুন শুধুমাত্র যদি "সরাসরি সংযোগ" সক্ষম করা থাকলে সংজ্ঞাটি কাজ না করে
2. XML-RPC নিষ্ক্রিয় করুন - XML-RPC প্লাগইন নিষ্ক্রিয় করুন (এটি সক্রিয় করা সহজ এবং এটিই)।
3. wp-login.php বন্ধ করুন - যদি আপনি IP এর মাধ্যমে সাইট অ্যাক্সেস করেন, প্লাগইন কাজ করে না এবং বাছাইকারীরা সাইট ক্র্যাশ করতে থাকে। এটি এড়াতে, .htaccess এ যোগ করুন:
আমরা wp-login ফাইলটি অনুলিপি করি, যেকোনো অদ্ভুত নামে এটির নাম পরিবর্তন করি, উদাহরণস্বরূপ poletnormalny.php, এবং ফাইলের ভিতরে, সমস্ত wp-login.php শিলালিপিগুলিকে poletnormalny.php এ পরিবর্তন করতে স্বয়ংক্রিয় সংশোধন ব্যবহার করুন।
এটাই, এখন আপনি শুধুমাত্র আপনার ফাইল ব্যবহার করে অ্যাডমিন প্যানেল অ্যাক্সেস করতে পারবেন।
এই 3 টি সহজ পদক্ষেপের পরে, সাইটগুলি আবার উড়তে শুরু করে এবং শান্তি এসেছিল।
ঠিক আছে, হঠাৎ এটি আকর্ষণীয়
বিকল্পগুলির মধ্যে একটি হল আপনাকে আক্রমণ করা হচ্ছে কিনা তা দেখা। এটি nginx লগগুলিতে দেখা যেতে পারে (উদাহরণস্বরূপ, এখানে Debian /var/log/nginx access.log ফাইলের পথ)।ওয়ার্ডপ্রেস সবসময় আপনার সাইট দূরবর্তীভাবে অ্যাক্সেস করার জন্য একটি অন্তর্নির্মিত টুল আছে. প্রকৃতপক্ষে, কখনও কখনও আপনাকে আপনার সাইটে যেতে হবে, কিন্তু আপনার কম্পিউটার আপনার থেকে অনেক দূরে। দীর্ঘ সময়ের জন্য, সমাধানটি ছিল xmlrpc.php নামে একটি ফাইল। যাইহোক, সাম্প্রতিক বছরগুলিতে এই ফাইলটি সমাধানের চেয়ে সমস্যা হয়ে উঠেছে।
নীচে আমরা xmlrpc.php এবং কেন এটি তৈরি করা হয়েছিল তা ঘনিষ্ঠভাবে দেখব। আমরা সাধারণ নিরাপত্তা সমস্যাগুলিও দেখব যা এটি হতে পারে এবং কীভাবে সেগুলি আপনার ওয়ার্ডপ্রেস সাইটের জন্য ঠিক করা যায়৷
XML-RPC হল একটি ওয়ার্ডপ্রেস বৈশিষ্ট্য যা ডেটা স্থানান্তরের অনুমতি দেয়, HTTP সহ ট্রান্সপোর্ট হিসাবে কাজ করে এবং XML এনকোডিংয়ের জন্য। যেহেতু ওয়ার্ডপ্রেস একটি বন্ধ সিস্টেম নয় এবং প্রায়শই অন্যান্য সিস্টেমের সাথে যোগাযোগ করে, তাই এই সমস্যার সমাধান পাওয়া গেছে।
উদাহরণস্বরূপ, ধরা যাক আপনি আপনার মোবাইল ফোন থেকে আপনার ওয়েবসাইটে পোস্ট করতে চান৷ আপনাকে xmlrpc.php দ্বারা প্রদত্ত দূরবর্তী অ্যাক্সেস ব্যবহার করতে হবে।
xmlrpc.php এর প্রধান কার্যকারিতা হ'ল একটি স্মার্টফোন থেকে সাইটের সাথে সংযোগ করার ক্ষমতা, অন্যান্য সাইট থেকে ট্র্যাকব্যাক এবং লিঙ্কব্যাক বাস্তবায়ন এবং জেটপ্যাক প্লাগইন সম্পর্কিত কিছু ফাংশন।
কেন Xmlrpc.php তৈরি করা হয়েছিল এবং কীভাবে এটি ব্যবহার করা হয়েছিল?
XML-RPC-এর বাস্তবায়ন ওয়ার্ডপ্রেসের প্রথম দিকে এবং এমনকি ওয়ার্ডপ্রেস ওয়ার্ডপ্রেস হওয়ার আগেই।
ইন্টারনেটের প্রথম দিনগুলিতে, সংযোগগুলি খুব ধীর ছিল এবং ওয়েবে রেকর্ডিং এবং প্রকাশের প্রক্রিয়াটি অনেক বেশি জটিল এবং সময়সাপেক্ষ ছিল। ব্রাউজারের মাধ্যমে সরাসরি পরিবর্তন করার পরিবর্তে, বেশিরভাগই সেগুলিকে অফলাইনে তৈরি করেছে এবং তারপরে তাদের সামগ্রী অনলাইনে অনুলিপি করে পেস্ট করেছে৷ এবং এই প্রক্রিয়া আদর্শ থেকে অনেক দূরে ছিল.
সমাধান (সেই সময়ে) ছিল একটি অফলাইন ব্লগিং ক্লায়েন্ট তৈরি করা যেখানে আপনি আপনার বিষয়বস্তু রচনা করতে পারেন, তারপরে আপনার ব্লগের সাথে সংযুক্ত হয়ে এটি প্রকাশ করতে পারেন। এই সংযোগটি XML-RPC এর মাধ্যমে তৈরি করা হয়েছিল৷ মূল XML-RPC কার্যকারিতা সহ, এই সংযোগগুলি ব্যবহার করে প্রাথমিক অ্যাপ্লিকেশনগুলি মানুষকে অন্যান্য ডিভাইস থেকে তাদের ওয়ার্ডপ্রেস সাইটগুলি অ্যাক্সেস করার ক্ষমতা দিয়েছে৷
XML-RPC আজ
2008 সালে, ওয়ার্ডপ্রেসের 2.6 সংস্করণের সাথে, XML-RPC চালু এবং বন্ধ করার একটি বিকল্প ছিল। যাইহোক, ওয়ার্ডপ্রেস আইফোন অ্যাপ প্রকাশের সাথে সাথে, ডিফল্টরূপে XML-RPC সমর্থন সক্রিয় ছিল এবং এটি নিষ্ক্রিয় করার কোন বিকল্প ছিল না। আজও তাই রয়ে গেছে।
অবশ্যই, এই ফাইল দ্বারা প্রদত্ত কার্যকারিতা সময়ের সাথে উল্লেখযোগ্যভাবে হ্রাস পেয়েছে, এবং ফাইলের আকার 83kb থেকে 3kb-এ কমে গেছে, এটি আর আগের মতো ভূমিকা পালন করে না।
XML-RPC বৈশিষ্ট্য
নতুন ওয়ার্ডপ্রেস অ্যাপ্লিকেশন প্রোগ্রামিং ইন্টারফেস (API) দিয়ে, আমরা আশা করতে পারি XML-RPC সম্পূর্ণরূপে নিষ্ক্রিয় হয়ে যাবে। আজ এই নতুন API এখনও পরীক্ষায় রয়েছে এবং শুধুমাত্র একটি বিশেষ প্লাগইনের মাধ্যমে সক্ষম করা যেতে পারে৷
যদিও আপনি আশা করতে পারেন যে এপিআইকে ভবিষ্যতে সরাসরি ওয়ার্ডপ্রেস কোরে অন্তর্ভুক্ত করা হবে, xmlrpc.php এর প্রয়োজনীয়তা সম্পূর্ণভাবে বাদ দেওয়া হবে।
নতুন API নিখুঁত নয়, তবে এটি xmlrpc.php এর বিপরীতে ভাল, নির্ভরযোগ্য নিরাপত্তা প্রদান করে।
কেন Xmlrpc.php নিষ্ক্রিয়?
XML-RPC এর সাথে সবচেয়ে বড় সমস্যা হল নিরাপত্তা। সমস্যাটি সরাসরি XML-RPC এর সাথে সম্পর্কিত নয়, তবে এটি আপনার সাইটে আক্রমণ সক্ষম করতে ব্যবহার করা যেতে পারে।
অবশ্যই, আপনি একটি খুব শক্তিশালী পাসওয়ার্ড এবং ওয়ার্ডপ্রেস নিরাপত্তা প্লাগইন দিয়ে নিজেকে রক্ষা করতে পারেন। কিন্তু সর্বোত্তম সুরক্ষা মোড হল এটিকে বন্ধ করা।
XML-RPC এর দুটি প্রধান দুর্বলতা রয়েছে যা অতীতে কাজে লাগানো হয়েছে।
প্রথমটি আপনার সাইটে অ্যাক্সেস পেতে নৃশংস শক্তি আক্রমণ ব্যবহার করে। আক্রমণকারী ব্যবহারকারীর নাম এবং পাসওয়ার্ডের বিভিন্ন সমন্বয় চেষ্টা করে xmlrpc.php ব্যবহার করে আপনার সাইটে অ্যাক্সেস পাওয়ার চেষ্টা করবে। শত শত ভিন্ন পাসওয়ার্ড পরীক্ষা করার জন্য তারা কার্যকরভাবে একটি কমান্ড ব্যবহার করতে পারে। এটি তাদের সুরক্ষা সরঞ্জামগুলিকে বাইপাস করতে দেয় যা সাধারণত নৃশংস শক্তি আক্রমণগুলি সনাক্ত এবং ব্লক করে।
দ্বিতীয়টি হল DDoS আক্রমণের মাধ্যমে সাইটটিকে অফলাইনে নেওয়া। হ্যাকাররা একই সময়ে হাজার হাজার সাইটে পাঠানোর জন্য ওয়ার্ডপ্রেসের বিপরীত বিজ্ঞপ্তি ব্যবহার করবে। এই xmlrpc.php কার্যকারিতা একটি DDoS আক্রমণ প্রচার করার জন্য হ্যাকারদের প্রায় অসীম সংখ্যক IP ঠিকানা দেয়।
আপনার সাইটে XML-RPC কাজ করছে কিনা তা পরীক্ষা করতে, আপনি XML-RPC ভ্যালিডেটর নামে একটি টুল ব্যবহার করে এটি চালাতে পারেন। টুল দিয়ে আপনার সাইট চালান এবং যদি আপনি একটি ত্রুটি পান, তার মানে আপনার কাছে XML-RPC সমর্থন নেই৷
আপনি যদি একটি সফল বার্তা পান, তাহলে আপনি নিচের দুটি পদ্ধতির একটি ব্যবহার করে xmlrpc.php বন্ধ করতে পারেন।
পদ্ধতি 1: একটি প্লাগইন ব্যবহার করে Xmlrpc.php নিষ্ক্রিয় করুন
আপনার ওয়ার্ডপ্রেস সাইটে XML-RPC নিষ্ক্রিয় করা অবিশ্বাস্যভাবে সহজ।
বিভাগে যান প্লাগইনস › নতুন যোগ করুনআপনার ওয়ার্ডপ্রেস অ্যাডমিন কনসোলে। একটি প্লাগইন খুঁজুন XML-RPC নিষ্ক্রিয় করুনএবং এটি ইনস্টল করুন, এটি নীচের ছবির মত দেখাচ্ছে:
প্লাগইন সক্রিয় করুন এবং আপনি সম্পন্ন. এই প্লাগইনটি স্বয়ংক্রিয়ভাবে XML-RPC নিষ্ক্রিয় করতে প্রয়োজনীয় কোড সন্নিবেশ করবে।
যাইহোক, মনে রাখবেন যে ইনস্টল করা প্লাগইনগুলি XML-RPC-এর অংশগুলি ব্যবহার করতে পারে, এবং তারপরে এটি নিষ্ক্রিয় করার ফলে প্লাগইনগুলি বা তাদের পৃথক অংশগুলির মধ্যে বিরোধ সৃষ্টি হতে পারে এবং তাদের কাজের মোড থেকে বের করে দিতে পারে৷
আপনি যদি শুধুমাত্র পৃথক XML-RPC উপাদানগুলিকে অক্ষম করতে চান তবে অন্যান্য প্লাগইন এবং বৈশিষ্ট্যগুলিকে কাজ করার অনুমতি দেন, তাহলে এইগুলির মতো প্লাগইনগুলি দেখুন:
- XML-RPC আক্রমণ বন্ধ করুন। এই প্লাগইনটি সমস্ত XML-RPC আক্রমণ বন্ধ করে দেবে, কিন্তু এটি জেটপ্যাক এবং অন্যান্য স্বয়ংক্রিয় সরঞ্জাম এবং প্লাগইনগুলিকে xmlrpc.php ফাইলগুলিতে অ্যাক্সেস দিয়ে চালিয়ে যেতে দেবে।
- XML-RPC প্রকাশনা নিয়ন্ত্রণ করুন। এটি আপনাকে নিয়ন্ত্রণ বজায় রাখতে এবং দূরবর্তীভাবে প্রকাশ করতে দেয়।
পদ্ধতি 2: Xmlrpc.php ম্যানুয়ালি নিষ্ক্রিয় করুন
আপনি যদি একটি প্লাগইন ব্যবহার করতে না চান এবং ম্যানুয়ালি করতে পছন্দ করেন তবে এই পদ্ধতিটি অনুসরণ করুন। এটি ওয়ার্ডপ্রেসে পাস করার আগে সমস্ত ইনকামিং xmlrpc.php অনুরোধ বন্ধ করে দেবে।
htaccess ফাইলটি খুলুন। এই ফাইলটি খুঁজে পেতে আপনাকে আপনার ফাইল ম্যানেজার বা FTP ক্লায়েন্টে 'লুকানো ফাইল দেখান' সক্ষম করতে হতে পারে।
এই কোডটি ফাইলে পেস্ট করুন htaccess:
# ব্লক ওয়ার্ডপ্রেস xmlrpc.php অনুরোধ
সর্বশেষ ভাবনা
সামগ্রিকভাবে, XML-RPC ছিল আপনার ওয়ার্ডপ্রেস সাইটে দূরবর্তী প্রকাশনার সাথে আসা কিছু সমস্যার একটি কঠিন সমাধান। যাইহোক, একই সময়ে, কিছু সুরক্ষা গর্ত উপস্থিত হয়েছিল যা কিছু ওয়ার্ডপ্রেস সাইটের মালিকদের জন্য বেশ বিপজ্জনক বলে প্রমাণিত হয়েছিল।
আপনার সাইটকে সুরক্ষিত রাখতে, আপনার রিমোট পাবলিশিং এবং জেটপ্যাক প্লাগইন দ্বারা প্রয়োজনীয় কিছু বৈশিষ্ট্যের প্রয়োজন না হলে xmlrpc.php সম্পূর্ণরূপে অক্ষম করার পরামর্শ দেওয়া হয়। তারপরে আপনি ওয়ার্কঅ্যারাউন্ড প্লাগইনগুলি ব্যবহার করতে পারেন যা আপনাকে সুরক্ষা গর্তগুলি প্যাচ করার সময় এই বৈশিষ্ট্যগুলি ব্যবহার করতে দেয়৷
সময়ের সাথে সাথে, আমরা আশা করতে পারি XML-RPC কার্যকারিতা একটি নতুন ওয়ার্ডপ্রেস এপিআইতে একীভূত হবে যা নিরাপত্তার ত্যাগ ছাড়াই দূরবর্তী অ্যাক্সেসকে সমর্থন করবে।
আপনি একটি প্লাগইন বা ম্যানুয়ালি মাধ্যমে XML-RPC অ্যাক্সেস ব্লক করেছেন? নাকি কোন নিরাপত্তা সমস্যা ছিল কারণ এটি আগে সক্রিয় ছিল? নীচের মন্তব্যে আপনার অভিজ্ঞতা শেয়ার করুন.