{"id":18965,"date":"2026-10-22T17:00:04","date_gmt":"2026-10-22T14:00:04","guid":{"rendered":"https:\/\/www.hyyat.com\/knowledgebase\/wordpress-xmlrpc-php\/"},"modified":"2026-10-22T17:00:16","modified_gmt":"2026-10-22T14:00:16","password":"","slug":"wordpress-xmlrpc-php","status":"publish","type":"docs","link":"https:\/\/www.hyyat.com\/en\/knowledgebase\/wordpress-xmlrpc-php\/","title":{"rendered":"WordPress xmlrpc.php: What It Is, Why Attackers Target It and When to Disable It"},"content":{"rendered":"<div class=\"hkb\" dir=\"ltr\">\n<div class=\"hkb-tldr\"><b>In short<\/b>xmlrpc.php in WordPress is an old interface that lets outside software talk to your site, such as the mobile app and the Jetpack plugin. Attackers exploit it because it allows hundreds of password guesses in a single request, and for pingback attacks. If you do not use a tool that needs it, disable it.<\/div>\n<figure class=\"hkb-fig\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.hyyat.com\/zasogooh\/2026\/10\/hkb-xmlrpc.webp\" alt=\"WordPress xmlrpc.php with a block sign, bad bots and a security shield\" width=\"1200\" height=\"630\" loading=\"lazy\" \/><\/figure>\n<h2>What does the file do?<\/h2>\n<p>Before the modern WordPress REST API existed, xmlrpc.php was the only way to publish from an outside app or send pingbacks between blogs. It is still in every WordPress site for compatibility with older tools.<\/p>\n<h2>Why do attackers target it?<\/h2>\n<div class=\"hkb-cards\">\n<div class=\"hkb-card\"><i>1<\/i><b>Multiplied guessing<\/b><span>The system.multicall method allows hundreds of password guesses in one request, bypassing normal login limits.<\/span><\/div>\n<div class=\"hkb-card\"><i>2<\/i><b>Pingback attacks<\/b><span>Your site is used to send requests to another site as part of a <a href=\"https:\/\/www.hyyat.com\/en\/knowledgebase\/ddos-attacks-protection\/\">DDoS<\/a>.<\/span><\/div>\n<div class=\"hkb-card\"><i>3<\/i><b>Resource drain<\/b><span>Thousands of requests to the file slow your site even if they all fail.<\/span><\/div>\n<\/div>\n<h2>Do you need it?<\/h2>\n<div class=\"hkb-tbl\">\n<table>\n<thead>\n<tr>\n<th>You use<\/th>\n<th>Do you need xmlrpc.php?<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>The WordPress mobile app (older versions)<\/td>\n<td>Maybe<\/td>\n<\/tr>\n<tr>\n<td>The Jetpack plugin<\/td>\n<td>Yes, it relies on it<\/td>\n<\/tr>\n<tr>\n<td>Publishing from older outside tools<\/td>\n<td>Usually yes<\/td>\n<\/tr>\n<tr>\n<td>Only the normal WordPress dashboard<\/td>\n<td>No<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<h2>How to disable it<\/h2>\n<ol class=\"hkb-steps\">\n<li><b>With your security plugin:<\/b> Most <a href=\"https:\/\/www.hyyat.com\/en\/knowledgebase\/best-wordpress-security-plugins\/\">WordPress security plugins<\/a> have a \u201cDisable XML-RPC\u201d option. This is the easiest way.<\/li>\n<li><b>Or with .htaccess:<\/b> Add the rule below to your main .htaccess file from the cPanel File Manager, after backing it up.<\/li>\n<li><b>Check the result:<\/b> Open <span dir=\"ltr\">yoursite.com\/xmlrpc.php<\/span>. If you see a 403 denied message, it is disabled.<\/li>\n<\/ol>\n<pre class=\"hkb-code\">&lt;Files xmlrpc.php&gt;\n  Require all denied\n&lt;\/Files&gt;<\/pre>\n<div class=\"hkb-note w\"><b>If you use Jetpack:<\/b> do not block the whole file. Just disable pingbacks and limit login attempts in your security plugin.<\/div>\n<div class=\"hkb-hh\">\n<h2>How Hyyat Host protects your site<\/h2>\n<ul>\n<li><strong>ModSecurity<\/strong> and <strong>Imunify360<\/strong> rules block known attack requests to xmlrpc.php.<\/li>\n<li>Brute force protection blocks addresses that repeat failed logins. Read <a href=\"https:\/\/www.hyyat.com\/en\/knowledgebase\/brute-force-protection\/\">brute force protection<\/a>.<\/li>\n<li>The <strong>CSF<\/strong> firewall limits large numbers of requests from one address.<\/li>\n<\/ul>\n<\/div>\n<h2>Frequently asked questions<\/h2>\n<div class=\"hkb-faq\">\n<details>\n<summary>Will disabling xmlrpc.php break my site?<\/summary>\n<p>No, the site and dashboard work normally. Only older outside tools that rely on it, such as Jetpack, may stop working.<\/p>\n<\/details>\n<details>\n<summary>Should I delete the file?<\/summary>\n<p>No, it comes back with every WordPress update. Disable it as shown in this guide.<\/p>\n<\/details>\n<details>\n<summary>What is the modern alternative?<\/summary>\n<p>The WordPress REST API, which modern WordPress apps use.<\/p>\n<\/details>\n<\/div>\n<div class=\"hkb-rel\"><b>Related guides<\/b><\/p>\n<ul>\n<li><a href=\"https:\/\/www.hyyat.com\/en\/knowledgebase\/brute-force-protection\/\">Brute Force Attacks: How They Work and How We Protect Your Site<\/a><\/li>\n<li><a href=\"https:\/\/www.hyyat.com\/en\/knowledgebase\/protect-wordpress-login-wp-admin\/\">How to Protect the WordPress Login Page (wp-admin): 7 Practical Steps<\/a><\/li>\n<li><a href=\"https:\/\/www.hyyat.com\/en\/knowledgebase\/best-wordpress-security-plugins\/\">Best WordPress security plugins<\/a><\/li>\n<li><a href=\"https:\/\/www.hyyat.com\/en\/knowledgebase\/wordpress-load-scripts-vulnerability\/\">The WordPress load-scripts.php Vulnerability (CVE-2018-6389) and How to Protect Your Site<\/a><\/li>\n<\/ul>\n<p><a href=\"https:\/\/www.hyyat.com\/en\/kb\/website-protection\/\">All website security guides \u2192<\/a><\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>In shortxmlrpc.php in WordPress is an old interface that lets outside software talk to your site, such as the mobile app and the Jetpack plugin. Attackers exploit it because it allows hundreds of password guesses in a single request, and for pingback attacks. If you do not use a tool that needs it, disable it. [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":0,"comment_status":"open","ping_status":"closed","template":"","meta":{"inline_featured_image":false,"_templately_pack_id":"","_templately_imported_at":"","_templately_source":"","_templately_import_session_id":"","footnotes":""},"doc_category":[2744],"doc_tag":[],"class_list":["post-18965","docs","type-docs","status-publish","hentry","doc_category-website-protection"],"year_month":"2026-10","word_count":416,"total_views":0,"reactions":{"happy":0,"normal":0,"sad":0},"author_info":{"name":"ahmed fathy","author_nicename":"ahmed-fathy","author_url":"https:\/\/www.hyyat.com\/en\/author\/ahmed-fathy\/"},"doc_category_info":[{"term_name":"Website Security","term_url":"https:\/\/www.hyyat.com\/en\/kb\/website-protection\/"}],"doc_tag_info":[],"knowledge_base_info":[],"knowledge_base_slug":[],"_links":{"self":[{"href":"https:\/\/www.hyyat.com\/en\/wp-json\/wp\/v2\/docs\/18965","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hyyat.com\/en\/wp-json\/wp\/v2\/docs"}],"about":[{"href":"https:\/\/www.hyyat.com\/en\/wp-json\/wp\/v2\/types\/docs"}],"author":[{"embeddable":true,"href":"https:\/\/www.hyyat.com\/en\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hyyat.com\/en\/wp-json\/wp\/v2\/comments?post=18965"}],"version-history":[{"count":0,"href":"https:\/\/www.hyyat.com\/en\/wp-json\/wp\/v2\/docs\/18965\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.hyyat.com\/en\/wp-json\/wp\/v2\/media?parent=18965"}],"wp:term":[{"taxonomy":"doc_category","embeddable":true,"href":"https:\/\/www.hyyat.com\/en\/wp-json\/wp\/v2\/doc_category?post=18965"},{"taxonomy":"doc_tag","embeddable":true,"href":"https:\/\/www.hyyat.com\/en\/wp-json\/wp\/v2\/doc_tag?post=18965"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}