XML-RPC-ի ներածություն: Ծրագրավորման մրցույթներ Ինչ է տեսանելի սերվերի տեղեկամատյաններում
Նրա գրառումը նաև ցույց է տալիս, թե ինչպես կատարել բրաուզերի նույնականացում, ինչպես ստորև.
$request = xmlrpc_encode_request ("methodName" , array("methodParam"));
$auth = base64_encode ($username . ":" . $password );
$header = (version_compare(phpversion(), «5.2.8»))
? array("Content-Type. text/xml" , "Authorization: Basic $auth" )
: «Content-Type. text/xml\r\nԹույլտվություն՝ Հիմնական$auth "; //
$context = stream_context_create (զանգված ("http" => զանգված(
"method" => "POST" ,
"header" => $header ,
"content" => $խնդրանք
)));
$վեբ ծառայություն = «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 - ԽՄԲԱԳՐԻ ԾԱՆՈՒՑՈՒՄ. ՍԱ «SandersWang dt php at gmail dot com»-ի շտկում է:
16 տարի առաջ
Երկուական տողերը (սահմանված են xmlrpc_set_type-ով) մտնում են a
Թեև հիմար է, այն իրական խնդիրներ է առաջացնում որոշ XML-RPC սերվերների համար, ինչպիսիք են http://jakarta.apache.org/xmlrpc/ (ծնվ. Helma): Հեռացնելով այդ սուբյեկտները նման բանով
$req = preg_replace ("/ /", "", xmlrpc_encode_request ("my.method", $args));
աշխատում է խնդրի շուրջ:
11 տարի առաջ
Պետք է նշել, որ կոդավորումը կարծես ոչինչ չի կոդավորում, պարզապես նշեք, թե ինչ է մտնում XML վերնագրի մեջ:
Մենք խնդիրներ ունեցանք կրկնակի կոդավորված UTF տողերի հետ, որոնք պահվում էին տվյալների բազայում այս ֆունկցիան օգտագործելիս, այն ուղարկելով apache xml-rpc սերվերլետին և այն պահելու mysql տվյալների բազայում: Այն լուծվեց՝ «փախչելը» դնելով պարզապես «նշման», իսկ «կոդավորումը»՝ «UTF-8» (մի մոռացեք սահմանել «utf-8»-ը նաև xmlrpc_decode-ում):
Թվում է, թե UTF-8 կոդավորված տողերը դուրս են գալիս իրենց բայթերով որպես սուբյեկտներ՝ իրենց նիշերի փոխարեն:
9 տարի առաջ
Երբևէ փորձել եք փոխանցել հետևյալ զանգվածը xmlrpc-ով:
$var1=զանգված (7=>14,9=>18);
Ելքային զանգվածը միանգամայն տարբեր տեսք ունի: Այն նման տեսք կունենա.
$var2=զանգված (14,18);
Միակ լուծումը, որը ես գտա, ինդեքսի վրա բացատ տեղադրելն է.
$var3=array(" 7"=>14," 9"=>18);
Օգտագործելով այդ մեթոդը, դուք կստանաք ճիշտ արդյունք: ($var1)
16 տարի առաջ
Այս ֆունկցիան պետք է օգտագործվի XML-RPC հաճախորդի կողմից՝ XML-RPC հարցման համար XML օգտակար բեռ ստեղծելու համար.
$params = "system.methodSignature" ;
$method = "system.methodHelp" ;
$խնդրանք = xmlrpc_encode_request ($method, $params);
արձագանք ($խնդրանք);
?>
Արտադրում է;
Երկրորդ արգումենտը ճանաչում է փոփոխականի տեսակը և ստեղծում է ճիշտ XML-RPC կառուցվածքը: Լրացուցիչ մանրամասների համար տես xmlrpc_encode().
12 տարի առաջ
Պարզ OO հաճախորդ գերբեռնված գործառույթով.
php մեթոդը test_helloworld թարգմանվում է xmlrpc մեթոդի test.helloworld:
դասի RpcClient (
մասնավոր $_methods;
մասնավոր $_context;
անձնական $_url;
Գործառույթ __construct ($url, $user, $passwd) (
$auth = base64_encode(sprintf("%s:%s", $user,$passwd));
$this->_context = stream_context_create(զանգված(
"http" => զանգված (
"method" => "POST",
"header" => "Content-Type. text/xml\r\n".
«Թույլտվություն. Հիմնական $auth» ,
)
));
$this->_url = $url;
$this->registerMethod("Test_HelloWorld");
Գործառույթ __call ($methodName, $params) (
if (array_key_exists ($methodName,$this->_methods)) (
// appelle la fonction RPC-ում
$m = str_replace ("_", ".", $methodName);
$r = xmlrpc_encode_request ($m, $params,array("verbosity"=>"newlines_nly"));
$c = $this->_context;
stream_context_set_option ($c,"http","բովանդակություն",$r);
$f = file_get_contents ($this->_url,false,$c);
$resp = xmlrpc_decode ($f);
վերադարձ $resp;
) ուրիշ (
// appelle la fonction de l"objet
call_user_method_array ($methodName, $this,$params);
}
}
Մասնավոր ֆունկցիա registerMethod ($method) (
$this->_methods[$method] = ճշմարիտ;
}
XML-RPC-ի ներածություն
Ինտերնետում կան բազմաթիվ տարբեր ռեսուրսներ, որոնք օգտվողներին տրամադրում են որոշակի տեղեկատվություն: Սա չի նշանակում սովորական ստատիկ էջեր, այլ, օրինակ, տվյալների բազայից կամ արխիվներից վերցված տվյալներ։ Սա կարող է լինել ֆինանսական տվյալների արխիվ (փոխարժեքներ, արժեթղթերի գնանշման տվյալներ), եղանակային տվյալներ կամ ավելի ծավալուն տեղեկատվություն՝ նորություններ, հոդվածներ, հաղորդագրություններ ֆորումներից: Նման տեղեկատվությունը կարող է ներկայացվել էջի այցելուին, օրինակ՝ ձևաթղթի միջոցով, որպես հարցման պատասխան կամ ամեն անգամ այն կարող է գեներացվել դինամիկ կերպով։ Բայց դժվարությունն այն է, որ հաճախ նման տեղեկատվությունն անհրաժեշտ է ոչ այնքան վերջնական օգտագործողին` անձին, որքան այլ համակարգերին և ծրագրերին, որոնք կօգտագործեն այդ տվյալները իրենց հաշվարկների կամ այլ կարիքների համար:
Իրական օրինակ՝ բանկային կայքի էջ, որը ցուցադրում է արժույթի գնանշումներ: Եթե դուք մուտք եք գործում էջ որպես սովորական օգտատեր, բրաուզերի միջոցով դուք տեսնում եք էջի ամբողջ դիզայնը, բաններները, մենյուները և այլ տեղեկություններ, որոնք «շրջանակում են» որոնման իրական նպատակը՝ արժույթի գնանշումները: Եթե Ձեզ անհրաժեշտ է մուտքագրել այս գնանշումները ձեր առցանց խանութում, ապա այլ բան չի մնում անել, քան ձեռքով ընտրել անհրաժեշտ տվյալները և փոխանցել դրանք ձեր կայք՝ սեղմատախտակի միջոցով: Եվ դուք ստիպված կլինեք դա անել ամեն օր: Իսկապես ելք չկա՞։
Եթե դուք խնդիրը լուծեք առհասարակ, ապա անմիջապես լուծում է ծագում. ծրագիր (սկրիպտը կայքում), որը տվյալների կարիք ունի, սերվերից էջ է ստանում որպես «սովորական օգտվող», վերլուծում (վերլուծում) ստացված html կոդը և հանում անհրաժեշտ տեղեկատվություն դրանից։ Դա կարելի է անել կամ սովորական կանոնավոր արտահայտությամբ, կամ օգտագործելով ցանկացած html վերլուծիչ: Մոտեցման դժվարությունը կայանում է նրա անարդյունավետության մեջ: Նախ, տվյալների փոքր մասը ստանալու համար (արժույթի տվյալները բառացիորեն մեկ տասնյակ կամ երկու նիշ են), դուք պետք է ստանաք ամբողջ էջը, որը առնվազն մի քանի տասնյակ կիլոբայթ է: Երկրորդ, էջի կոդի ցանկացած փոփոխության դեպքում, օրինակ, դիզայնը փոխվել է կամ այլ բան, մեր վերլուծության ալգորիթմը պետք է վերանայվի: Եվ սա կպահանջի բավականաչափ ռեսուրսներ:
Հետևաբար, մշակողները եկան որոշման. անհրաժեշտ է մշակել մի տեսակ ունիվերսալ մեխանիզմ, որը թույլ կտա թափանցիկ (արձանագրության և փոխանցման միջին մակարդակում) և տվյալների հեշտ փոխանակում ծրագրերի միջև, որոնք կարող են տեղակայվել ցանկացած վայրում, գրվել ցանկացած լեզվով: և գործարկվում է ցանկացած օպերացիոն համակարգի, համակարգերի և ցանկացած ապարատային հարթակի վրա: Նման մեխանիզմն այժմ կոչվում է բարձրաձայն «Վեբ ծառայություններ», «SOAP», «ծառայության վրա հիմնված ճարտարապետություն»: Տվյալների փոխանակման համար օգտագործվում են բաց և ժամանակի փորձարկված ստանդարտներ - HTTP արձանագրությունն օգտագործվում է հաղորդագրություններ փոխանցելու համար (թեև կարող են օգտագործվել այլ արձանագրություններ, օրինակ՝ SMTP): Տվյալներն ինքնին (մեր օրինակում՝ փոխարժեքները) փոխանցվում են փաթեթավորված միջպլատֆորմային ձևաչափով՝ XML փաստաթղթերի տեսքով: Այդ նպատակով հորինվել է հատուկ ստանդարտ՝ SOAP:
Այո, այժմ վեբ ծառայությունները, SOAP-ը և XML-ը բոլորի շուրթերին են, դրանք սկսում են ակտիվորեն ներդրվել, և խոշոր կորպորացիաները, ինչպիսիք են IBM-ը և Microsoft-ը, թողարկում են նոր ապրանքներ, որոնք նախատեսված են վեբ ծառայությունների ամբողջական իրականացման համար:
Բայց! Փոխարժեքների մեր օրինակի համար, որը պետք է փոխանցվի բանկի կայքից առցանց խանութի շարժիչին, նման լուծումը շատ դժվար կլինի: Ի վերջո, միայն SOAP ստանդարտի նկարագրությունը անպարկեշտ է մեկուկես հազար էջ, և դա դեռ ամենը չէ: Գործնական օգտագործման համար դուք նաև պետք է սովորեք, թե ինչպես աշխատել երրորդ կողմի գրադարանների և ընդլայնումների հետ (սկսած PHP 5.0-ից այն ներառում է գրադարան SOAP-ի հետ աշխատելու համար) և գրել ձեր սեփական կոդերի հարյուրավոր և հազարավոր տողեր: Եվ այս ամենը մի քանի տառ ու թվեր ստանալու համար ակնհայտորեն շատ ծանր ու իռացիոնալ է։
Ուստի տեղեկատվության փոխանակման մեկ այլ, կարելի է ասել, այլընտրանքային ստանդարտ կա՝ XML-RPC: Այն մշակվել է Microsoft-ի մասնակցությամբ UserLand Software Inc-ի կողմից և նախատեսված է ինտերնետի միջոցով հավելվածների միջև տվյալների միասնական փոխանցման համար: Այն կարող է փոխարինել SOAP-ին պարզ ծառայություններ կառուցելիս, որտեղ իրական վեբ ծառայությունների բոլոր «ձեռնարկությունների» հնարավորություններն անհրաժեշտ չեն:
Ի՞նչ է նշանակում XML-RPC հապավումը: RPC-ն նշանակում է Remote Procedure Call: Սա նշանակում է, որ հավելվածը (լինի սկրիպտը սերվերի վրա, թե սովորական հավելված հաճախորդի համակարգչի վրա) կարող է թափանցիկ կերպով օգտագործել մեթոդ, որը ֆիզիկապես ներդրված և գործարկված է մեկ այլ համակարգչի վրա: XML-ն այստեղ օգտագործվում է փոխանցված տվյալների նկարագրության ունիվերսալ ձևաչափ տրամադրելու համար: Որպես փոխադրամիջոց՝ HTTP արձանագրությունն օգտագործվում է հաղորդագրություններ փոխանցելու համար, որը թույլ է տալիս անխափան կերպով տվյալներ փոխանակել ցանկացած ցանցային սարքերի միջոցով՝ երթուղիչներ, firewalls, պրոքսի սերվերներ:
Եվ այսպես, օգտագործելու համար դուք պետք է ունենաք՝ XML-RPC սերվեր, որն ապահովում է մեկ կամ մի քանի մեթոդ, XML-RPC հաճախորդ, որը կարող է ճիշտ հարցում առաջացնել և մշակել սերվերի պատասխանը, ինչպես նաև իմանալ հաջող աշխատանքի համար անհրաժեշտ սերվերի պարամետրերը. հասցեն, մեթոդի անվանումը և անցած պարամետրերը:
XML-RPC-ի հետ ամբողջ աշխատանքը տեղի է ունենում «հարցում-պատասխան» ռեժիմում, սա տեխնոլոգիայի և SOAP ստանդարտի տարբերություններից մեկն է, որտեղ կան և՛ գործարքների հասկացությունները, և՛ հետաձգված զանգեր կատարելու հնարավորությունը (երբ սերվերը պահպանում է: հարցումը և պատասխանում է դրան ապագայում որոշակի ժամանակ): Այս լրացուցիչ հնարավորություններն ավելի օգտակար են հզոր կորպորատիվ ծառայությունների համար, դրանք զգալիորեն բարդացնում են սերվերների մշակումն ու աջակցությունը և լրացուցիչ պահանջներ են դնում հաճախորդների լուծումներ մշակողների վրա:
XML-RPC-ի հետ աշխատելու ընթացակարգը սկսվում է հարցում ձևավորելուց: Տիպիկ հարցումն այսպիսի տեսք ունի.
POST / RPC2 HTTP / 1.0
Օգտագործող-գործակալ՝ eshop-test/1.1.1 (FreeBSD)
Հյուրընկալող՝ server.localnet.com
Բովանդակություն-Տեսակ՝ տեքստ/xml
Բովանդակություն՝ 172
Առաջին տողերը կազմում են ստանդարտ HTTP POST հարցման վերնագիրը: Պահանջվող պարամետրերը ներառում են հոսթ, տվյալների տեսակը (MIME տեսակ), որը պետք է լինի տեքստ/xml և հաղորդագրության երկարությունը: Ստանդարտը նաև սահմանում է, որ User-Agent դաշտը պետք է լրացվի, բայց կարող է պարունակել կամայական արժեք:
Հաջորդը գալիս է XML փաստաթղթի սովորական վերնագիրը: Հարցման արմատային տարրն է
Գիծ
Հաջորդը, փոխանցված պարամետրերը սահմանվում են: Այս բաժինը օգտագործվում է դրա համար:
Բոլոր պարամետրերի նկարագրությանը հաջորդում են փակման պիտակները: XML-RPC-ում հարցումն ու պատասխանը սովորական XML փաստաթղթեր են, ուստի բոլոր պիտակները պետք է փակվեն: Բայց XML-RPC-ում առանձին պիտակներ չկան, թեև դրանք առկա են XML ստանդարտում:
Հիմա եկեք նայենք սերվերի պատասխանին: HTTP պատասխանի վերնագիրը նորմալ է, եթե հարցումը հաջողությամբ մշակվի, սերվերը վերադարձնում է HTTP/1.1 200 OK պատասխան: Ինչպես հարցումում, դուք պետք է ճիշտ նշեք MIME-ի տեսակը, հաղորդագրության տևողությունը և պատասխանի ստեղծման ամսաթիվը:
Ինքն արձագանքման մարմինը հետևյալն է.
Հիմա արմատային պիտակի փոխարեն
Եթե ձեր հարցումը մշակելիս սխալ է տեղի ունեցել, փոխարենը Պատասխանը կպարունակի տարրը
Այժմ եկեք համառոտ նայենք XML-RPC-ում տվյալների տեսակներին: Ընդհանուր առմամբ կա տվյալների 9 տեսակ՝ յոթ պարզ և 2 բարդ: Յուրաքանչյուր տեսակ նկարագրվում է իր սեփական պիտակով կամ պիտակների հավաքածուով (բարդ տեսակների համար):
Պարզ տեսակներ.
Ամբողջ թվեր- պիտակ
Բուլյան տեսակ- պիտակ
ASCII տող- նկարագրված է պիտակով
Լողացող կետով թվեր- պիտակ
ամսաթիվը և ժամը- նկարագրված է պիտակով
Վերջին պարզ տեսակն է base64 կոդավորված տող, որը նկարագրված է պիտակով
Կոմպլեքս տեսակները ներկայացված են կառուցվածքներով և զանգվածներով։ Կառուցվածքը որոշվում է արմատային տարրով
Զանգվածները անուններ չունեն և նկարագրվում են պիտակով
Իհարկե, ինչ-որ մեկը կասի, որ տվյալների տեսակների նման ցանկը շատ վատ է և «թույլ չի տալիս ընդլայնել»: Այո, եթե Ձեզ անհրաժեշտ է բարդ օբյեկտներ կամ մեծ քանակությամբ տվյալներ փոխանցել, ապա ավելի լավ է օգտագործել SOAP-ը: Իսկ փոքր, ոչ պահանջկոտ հավելվածների համար XML-RPC-ն բավականին հարմար է, ավելին, շատ հաճախ նույնիսկ նրա հնարավորությունները չափազանց շատ են ստացվում: Հաշվի առնելով տեղակայման հեշտությունը, գրադարանների շատ մեծ քանակությունը գրեթե ցանկացած լեզվի և հարթակի համար, ինչպես նաև PHP-ի լայն աջակցությունը, ապա XML-RPC-ն հաճախ պարզապես մրցակիցներ չունի: Չնայած այն չի կարող անմիջապես առաջարկվել որպես ունիվերսալ լուծում, յուրաքանչյուր կոնկրետ դեպքում այն պետք է որոշվի ըստ հանգամանքների:
XML-RPC տեխնոլոգիան օգտագործվում է WordPress համակարգում տարբեր գեղեցիկ հնարավորությունների համար, ինչպիսիք են pingbacks-ը, trackbacks-ը, կայքի հեռակառավարումը առանց ադմինիստրատորի վահանակ մուտք գործելու և այլն: Ցավոք, հարձակվողները կարող են օգտագործել այն կայքերի վրա DDoS հարձակումներ իրականացնելու համար: Այսինքն՝ դուք ստեղծում եք գեղեցիկ, հետաքրքիր WP նախագծեր ձեզ համար կամ պատվիրելու համար, և միևնույն ժամանակ, առանց որևէ բան կասկածելու, կարող եք լինել DDoS բոտնետի մաս։ Միացնելով տասնյակ և հարյուր հազարավոր կայքեր՝ վատ մարդիկ հզոր հարձակում են ստեղծում իրենց զոհի վրա: Թեև միաժամանակ տուժում է նաև ձեր կայքը, քանի որ... բեռը գնում է հոսթինգ, որտեղ այն գտնվում է:
Նման վատ գործունեության ապացույցը կարող է լինել սերվերի տեղեկամատյաններում (access.log in nginx), որը պարունակում է հետևյալ տողերը.
103.238.80.27 - - "POST /wp-login.php HTTP/1.0" 200 5791 "-" "-"
Բայց եկեք վերադառնանք XML-RPC խոցելիությանը: Տեսողականորեն դա արտահայտվում է ձեր սերվերի վրա կայքերի դանդաղ բացմամբ կամ դրանք ընդհանրապես բեռնելու անկարողությամբ (502 Bad Gateway-ի սխալ): Իմ FASTVPS հաղորդավարի տեխնիկական աջակցությունը հաստատեց իմ ենթադրությունները և խորհուրդ տվեց.
- Թարմացրեք WordPress-ը վերջին տարբերակին՝ հավելումների հետ միասին: Ընդհանուր առմամբ, եթե հետևեք, գուցե կարդացած լինեք վերջին 4.2.3-ը տեղադրելու անհրաժեշտության մասին: անվտանգության քննադատությունների պատճառով (ինչպես նախորդ տարբերակները): Մի խոսքով, լավ է թարմացնել:
- Տեղադրեք Disable XML-RPC Pingback plugin-ը:
WordPress-ում XML-RPC-ի անջատում
Նախկինում ինձ թվում է, որ XML-RPC-ն միացնելու/անջատելու տարբերակը ինչ-որ տեղ կար համակարգի կարգավորումներում, բայց հիմա այնտեղ չեմ գտնում: Հետեւաբար, դրանից ազատվելու ամենահեշտ ձեւը համապատասխան պլագին օգտագործելն է։
Գտեք և ներբեռնեք Անջատել XML-RPC Pingback-ը կամ տեղադրել այն անմիջապես համակարգի ադմինիստրատորի վահանակից: Ձեզ հարկավոր չէ լրացուցիչ որևէ բան կարգավորել, մոդուլը անմիջապես սկսում է աշխատել: Այն հեռացնում է pingback.ping և pingback.extensions.getPingbacks մեթոդները XML-RPC ինտերֆեյսից: Բացի այդ, այն հեռացնում է X-Pingback-ը HTTP վերնագրերից:
Բլոգներից մեկում ես գտա ևս մի քանի տարբերակ XML-RPC անջատումը հեռացնելու համար:
1. Կաղապարում անջատեք XML-RPC-ն:
Դա անելու համար թեմայի functions.php ֆայլին ավելացրեք հետևյալ տողը.
Անձամբ ես չեմ օգտագործել վերջին երկու մեթոդները, քանի որ... Ես միացրեցի Disable XML-RPC Pingback plugin-ը, կարծում եմ, դա բավարար կլինի: Պարզապես նրանց համար, ովքեր չեն սիրում ավելորդ տեղադրումներ, ես առաջարկեցի այլընտրանքային տարբերակներ:
Շաբաթ օրը կեսօրից սկսած, իմ սերվերը, որտեղ տեղակայված են Wordpress-ի մոտ 25 կայք, սկսեց զգալ կտրուկ դանդաղում: Քանի որ ես կարողացա գոյատևել նախորդ հարձակումներից ( , ) առանց նկատելու, ես անմիջապես չհասկացա, թե ինչ է կատարվում։
Երբ ես դա պարզեցի, պարզվեց, որ գաղտնաբառերը կոպիտ կերպով պարտադրվում էին + բազմաթիվ հարցումներ XMLRPC-ին:
Արդյունքում մեզ հաջողվեց կտրել այդ ամենը, թեև ոչ անմիջապես։ Ահա երեք պարզ հնարք, թե ինչպես խուսափել դրանից:
Այս տեխնիկան, ամենայն հավանականությամբ, հայտնի է բոլորին, բայց ես քայլ արեցի մի քանի սխալների վրա, որոնք ես չգտա նկարագրություններում, միգուցե դա ինչ-որ մեկին ժամանակ կխնայի:
1. Դադարեցրեք որոնումը, տեղադրեք Limit Login Attempts plugin-ը, տեղադրեք այն, քանի որ մյուս պաշտպանությունները մեծապես դանդաղեցնում են սերվերը, օրինակ՝ Login Security Solution plugin-ն օգտագործելիս սերվերը մահացել է կես ժամ հետո, plugin-ը մեծապես բեռնում է տվյալների բազան։ .
Կարգավորումներում համոզվեք, որ միացրեք «For proxy» վանդակը, հակառակ դեպքում այն կորոշի ձեր սերվերի IP-ն բոլորի համար և ավտոմատ կերպով կարգելափակի բոլորին:
ԹԱՐՄԱՑՆԵԼ, շնորհակալություն, մանրամասները ներքևում են մեկնաբանություններում. միացրեք «Վստահված անձի համար» վանդակը միայն այն դեպքում, եթե սահմանումը չի գործում, երբ «Ուղիղ կապը» միացված է:
2. Անջատել XML-RPC - Անջատել XML-RPC հավելվածը (հեշտ է ակտիվացնել և վերջ):
3. Փակեք wp-login.php - եթե դուք մուտք եք գործում կայք IP-ի միջոցով, ապա plugin-ը չի աշխատում, և ընտրողները շարունակում են խափանել կայքը: Դրանից խուսափելու համար ավելացրեք .htaccess-ին.
Մենք պատճենում ենք wp-login ֆայլը, այն վերանվանում ենք որևէ տարօրինակ անունով, օրինակ՝ poletnormalny.php, և ֆայլի ներսում օգտագործում ենք autocorrect՝ բոլոր wp-login.php մակագրությունները փոխելու poletnormalny.php:
Վերջ, այժմ դուք կարող եք մուտք գործել ադմինիստրատորի վահանակ միայն ձեր ֆայլի միջոցով:
Այս 3 պարզ քայլերից հետո կայքերը նորից սկսեցին թռչել, և խաղաղություն եկավ:
Դե, հանկարծ հետաքրքիր է
Տարբերակներից մեկն այն է, որ տեսնեք, թե արդյոք ձեր վրա հարձակվում են: Սա կարելի է տեսնել nginx տեղեկամատյաններում (օրինակ, ահա Debian /var/log/nginx access.log ֆայլի ուղին):WordPress-ը միշտ ունեցել է ներկառուցված գործիք՝ ձեր կայք հեռակա մուտք գործելու համար: Իրոք, երբեմն ձեզ անհրաժեշտ է հասնել ձեր կայք, բայց ձեր համակարգիչը հեռու է ձեզանից: Երկար ժամանակ լուծումը xmlrpc.php կոչվող ֆայլն էր։ Այնուամենայնիվ, վերջին տարիներին այս ֆայլը դարձել է ավելի շատ խնդիր, քան լուծում:
Ստորև մենք ավելի մանրամասն կանդրադառնանք xmlrpc.php-ին և ինչու է այն ստեղծվել: Մենք նաև կանդրադառնանք անվտանգության ընդհանուր խնդիրներին, որոնք դա կարող է առաջացնել և ինչպես դրանք շտկել ձեր WordPress կայքի համար:
XML-RPC-ն WordPress-ի հատկություն է, որը թույլ է տալիս տվյալների փոխանցում՝ HTTP-ով ծառայում է որպես փոխադրամիջոց, իսկ XML՝ կոդավորման համար: Քանի որ WordPress-ը փակ համակարգ չէ և հաճախ շփվում է այլ համակարգերի հետ, այս խնդրի համար լուծումներ են գտնվել։
Օրինակ, ենթադրենք, որ ցանկանում եք տեղադրել ձեր կայքում ձեր բջջային հեռախոսից: Դուք պետք է օգտագործեք xmlrpc.php-ի կողմից տրամադրված հեռավոր մուտքը:
Xmlrpc.php-ի հիմնական ֆունկցիոնալությունը սմարթֆոնից կայքին միանալու հնարավորությունն է, այլ կայքերից հետքեր և հղումների իրականացում և Jetpack plugin-ի հետ կապված որոշ գործառույթներ:
Ինչու՞ է ստեղծվել Xmlrpc.php-ը և ինչպես է այն օգտագործվել:
XML-RPC-ի իրականացումը հետ է մղվում WordPress-ի վաղ օրերից և նույնիսկ մինչ WordPress-ը դարձել է WordPress:
Դեռևս ինտերնետի սկզբնական շրջանում կապերը շատ դանդաղ էին, և համացանցում ձայնագրման և հրապարակման գործընթացը շատ ավելի դժվար և ժամանակատար էր: Անմիջապես բրաուզերի միջոցով փոփոխություններ անելու փոխարեն, մեծամասնությունը դրանք դարձրեց անցանց, այնուհետև պատճենեց և տեղադրեց դրանց բովանդակությունը առցանց: Եվ այս գործընթացը հեռու էր իդեալական լինելուց։
Լուծումը (այն ժամանակ) եղել է օֆլայն բլոգերի հաճախորդ ստեղծելը, որտեղ դուք կարող եք կազմել ձեր բովանդակությունը, այնուհետև միանալ ձեր բլոգին և հրապարակել այն: Այս կապը կատարվել է XML-RPC-ի միջոցով: Հիմնական XML-RPC ֆունկցիոնալությամբ, այս կապերն օգտագործող վաղ հավելվածները մարդկանց հնարավորություն տվեցին մուտք գործել իրենց WordPress կայքեր այլ սարքերից:
XML-RPC այսօր
2008 թվականին WordPress-ի 2.6 տարբերակով ներկայացվեց XML-RPC-ն միացնելու կամ անջատելու տարբերակ։ Այնուամենայնիվ, WordPress iPhone հավելվածի թողարկմամբ XML-RPC աջակցությունը լռելյայն միացված էր, և այն անջատելու տարբերակ չկար: Այդպես է մնում այսօր։
Իհարկե, այս ֆայլի տրամադրած ֆունկցիոնալությունը ժամանակի ընթացքում զգալիորեն նվազել է, իսկ ֆայլի չափը 83կբ-ից նվազել է մինչև 3կբ, այն այլևս նախկինի նման դեր չի խաղում։
XML-RPC հատկություններ
Նոր WordPress հավելվածի ծրագրավորման ինտերֆեյսի (API) միջոցով մենք կարող ենք ակնկալել, որ XML-RPC-ն ամբողջությամբ անջատված կլինի: Այսօր այս նոր API-ն դեռ փորձարկման փուլում է և կարող է միացվել միայն հատուկ փլագինի միջոցով:
Թեև դուք կարող եք ակնկալել, որ API-ն ապագայում կներառվի անմիջապես WordPress-ի առանցքում՝ ամբողջությամբ վերացնելով xmlrpc.php-ի անհրաժեշտությունը:
Նոր API-ն կատարյալ չէ, բայց այն ապահովում է լավ, հուսալի անվտանգություն՝ ի տարբերություն xmlrpc.php-ի:
Ինչու անջատել Xmlrpc.php-ը
XML-RPC-ի ամենամեծ խնդիրը անվտանգությունն է: Խնդիրն ուղղակիորեն կապված չէ XML-RPC-ի հետ, բայց այն կարող է օգտագործվել ձեր կայքի վրա հարձակումը միացնելու համար:
Իհարկե, դուք կարող եք պաշտպանվել ձեզ շատ ուժեղ գաղտնաբառով և WordPress-ի անվտանգության պլագիններով: Սակայն պաշտպանության լավագույն ռեժիմը պարզապես անջատելն է:
XML-RPC-ի երկու հիմնական թույլ կողմեր կան, որոնք նախկինում օգտագործվել են:
Առաջինն օգտագործում է կոպիտ ուժային հարձակումներ՝ ձեր կայք մուտք գործելու համար: Հարձակվողը կփորձի մուտք գործել ձեր կայք xmlrpc.php-ի միջոցով՝ փորձելով օգտանունների և գաղտնաբառերի տարբեր համակցություններ: Նրանք կարող են արդյունավետորեն օգտագործել մեկ հրաման՝ հարյուրավոր տարբեր գաղտնաբառեր փորձարկելու համար: Սա նրանց թույլ է տալիս շրջանցել անվտանգության գործիքները, որոնք սովորաբար հայտնաբերում և արգելափակում են դաժան ուժի հարձակումները:
Երկրորդը՝ DDoS հարձակման միջոցով կայքը դուրս հանելն է: Հաքերները կօգտագործեն հակադարձ ծանուցումը WordPress-ում՝ այն միաժամանակ հազարավոր կայքեր ուղարկելու համար: Այս xmlrpc.php ֆունկցիոնալությունը հաքերներին տալիս է գրեթե անսահման թվով IP հասցեներ՝ DDoS հարձակումը տարածելու համար:
Ստուգելու համար, թե արդյոք XML-RPC-ն աշխատում է ձեր կայքում, կարող եք այն գործարկել՝ օգտագործելով XML-RPC Validator կոչվող գործիքը: Գործարկեք ձեր կայքը գործիքի միջոցով, և եթե սխալ եք ստանում, դա նշանակում է, որ դուք չունեք XML-RPC աջակցություն:
Եթե հաջողության հաղորդագրություն եք ստանում, կարող եք դադարեցնել xmlrpc.php-ը՝ օգտագործելով ստորև նշված երկու մոտեցումներից մեկը:
Մեթոդ 1. Անջատել Xmlrpc.php-ը՝ օգտագործելով plugin
Ձեր WordPress կայքում XML-RPC-ն անջատելը աներևակայելի հեշտ է:
Գնացեք բաժին Փլագիններ › Ավելացնել նորձեր WordPress ադմինիստրատորի վահանակում: Գտեք հավելված Անջատել XML-RPC-նև տեղադրեք այն, կարծես ստորև ներկայացված նկարը.
Ակտիվացրեք plugin-ը և վերջ: Այս փլագինը ավտոմատ կերպով կտեղադրի անհրաժեշտ կոդը՝ XML-RPC-ն անջատելու համար:
Այնուամենայնիվ, հիշեք, որ տեղադրված փլագինները կարող են օգտագործել XML-RPC-ի մասեր, և այն անջատելը կարող է կոնֆլիկտ առաջացնել փլագինների կամ դրանց առանձին մասերի միջև և դրանք դուրս բերել աշխատանքային ռեժիմից:
Եթե ցանկանում եք անջատել միայն առանձին XML-RPC տարրերը, բայց թույլ տալ, որ այլ պլագիններ և գործառույթներ աշխատեն, ապա նայեք հետևյալ փլագիններին.
- Դադարեցրեք XML-RPC հարձակումը: Այս փլագինը կդադարեցնի բոլոր XML-RPC հարձակումները, բայց այն թույլ կտա փլագիններին, ինչպիսիք են Jetpack-ը և այլ ավտոմատացված գործիքներն ու պլագինները, շարունակել գործարկել՝ թույլ տալով նրանց մուտք գործել xmlrpc.php ֆայլեր:
- Վերահսկել XML-RPC հրատարակությունը: Սա թույլ է տալիս պահպանել վերահսկողությունը և հրապարակել հեռակա կարգով:
Մեթոդ 2. Ձեռքով անջատել Xmlrpc.php-ը
Եթե դուք չեք ցանկանում օգտագործել plugin և նախընտրում եք դա անել ձեռքով, հետևեք այս մոտեցմանը: Այն կդադարեցնի բոլոր մուտքային xmlrpc.php հարցումները՝ նախքան WordPress-ին փոխանցելը:
Բացեք .htaccess ֆայլը: Այս ֆայլը գտնելու համար գուցե ստիպված լինեք միացնել «ցույց տալ թաքնված ֆայլերը» ձեր ֆայլերի կառավարիչում կամ FTP հաճախորդում:
Տեղադրեք այս կոդը ֆայլի մեջ .htaccess:
# Արգելափակել WordPress xmlrpc.php հարցումները
Վերջնական մտքեր
Ընդհանուր առմամբ, XML-RPC-ն ամուր լուծում էր որոշ խնդիրների համար, որոնք առաջացել էին ձեր WordPress կայքում հեռակա հրապարակման հետ: Այնուամենայնիվ, միևնույն ժամանակ ի հայտ եկան անվտանգության որոշ անցքեր, որոնք բավականին վտանգավոր էին WordPress կայքերի որոշ սեփականատերերի համար։
Ձեր կայքը անվտանգ պահելու համար խորհուրդ է տրվում ամբողջությամբ անջատել xmlrpc.php-ը, եթե ձեզ անհրաժեշտ չեն որոշ գործառույթներ, որոնք պահանջվում են հեռակա հրապարակման և Jetpack հավելվածի համար: Այնուհետև կարող եք օգտագործել լուծումներ, որոնք թույլ են տալիս օգտագործել այս հնարավորությունները անվտանգության անցքերը կարկատելիս:
Ժամանակի ընթացքում մենք կարող ենք ակնկալել, որ XML-RPC ֆունկցիոնալությունը ինտեգրվելու է նոր WordPress API-ին, որը կաջակցի հեռավոր մուտքին՝ առանց անվտանգության զոհաբերելու:
Դուք արգելափակե՞լ եք մուտքը XML-RPC հավելվածի միջոցով կամ ձեռքով: Թե՞ անվտանգության հետ կապված խնդիրներ կային, քանի որ այն նախկինում ակտիվ էր: Կիսվեք ձեր փորձով ստորև բերված մեկնաբանություններում: