{"id":11486,"date":"2026-03-30T12:56:03","date_gmt":"2026-03-30T10:56:03","guid":{"rendered":"https:\/\/www.loading.es\/blog\/?p=11486"},"modified":"2026-03-30T13:12:37","modified_gmt":"2026-03-30T11:12:37","slug":"como-desinfectar-un-wordpress-hackeado-de-forma-rapida-y-definitiva","status":"publish","type":"post","link":"https:\/\/www.loading.es\/blog\/como-desinfectar-un-wordpress-hackeado-de-forma-rapida-y-definitiva\/","title":{"rendered":"C\u00f3mo desinfectar un WordPress hackeado de forma r\u00e1pida y definitiva"},"content":{"rendered":"\n<p>Si acabas de descubrir redirecciones raras, avisos de malware o un desplome repentino en tu web, necesitas un plan corto y \u00fatil para <strong>desinfectar WordPress hackeado<\/strong> sin tocar cosas a ciegas. Primero hay que cortar el da\u00f1o, recuperar el acceso y limpiar la instalaci\u00f3n. Despu\u00e9s toca cerrar el agujero para que no vuelva a pasar.<\/p>\n\n\n\n<p>Sabemos que asusta. Sobre todo si no tienes experiencia en estos casos, pero que te hayan hackeado WordPress no significa es el final. Es un fastidio, s\u00ed, pero tiene soluci\u00f3n y en este post te vamos a indicar los pasos para que puedas recuperar tu web cuanto antes despu\u00e9s de sufrir un hackeo.<\/p>\n\n\n\n<p><strong><em>Tabla de Contenidos<\/em><\/strong>:<\/p>\n\n\n\n<div class=\"wp-block-aioseo-table-of-contents\"><ul><li><a href=\"#aioseo-acciones-inmediatas-para-frenar-el-ataque\">Acciones inmediatas para frenar el ataque<\/a><\/li><li><a href=\"#aioseo-senales-claras-de-que-tu-web-tiene-malware\">\u00bfHan hackeado tu WordPress?<\/a><\/li><li><a href=\"#aioseo-que-hacer-si-no-puedes-entrar-a-tu-wordpress\">Qu\u00e9 hacer si no puedes entrar a tu WordPress<\/a><ul><li><a href=\"#aioseo-desactiva-plugins-renombrando-la-carpeta-en-plesk\">Desactiva plugins renombrando la carpeta en Plesk<\/a><\/li><li><a href=\"#aioseo-cambia-la-contrasena-desde-phpmyadmin\">Cambia la contrase\u00f1a desde phpMyAdmin<\/a><\/li><\/ul><\/li><li><a href=\"#aioseo-guia-para-limpiar-tu-wordpress-paso-a-paso\">Gu\u00eda para limpiar tu WordPress paso a paso<\/a><ul><li><a href=\"#aioseo-haz-una-copia-de-seguridad-del-desastre\">Haz una copia de seguridad del desastre<\/a><\/li><li><a href=\"#aioseo-cambia-todas-las-contrasenas-y-las-security-keys\">Cambia todas las contrase\u00f1as y las security keys<\/a><\/li><li><a href=\"#aioseo-escanea-y-elimina-el-malware-con-un-plugin\">Escanea y elimina el malware con un plugin<\/a><\/li><li><a href=\"#aioseo-reinstala-los-archivos-core-de-wordpress\">Reinstala los archivos core de WordPress<\/a><\/li><li><a href=\"#aioseo-revisa-tu-base-de-datos-y-la-carpeta-uploads\">Revisa tu base de datos y la carpeta uploads<\/a><\/li><\/ul><\/li><li><a href=\"#aioseo-saca-tu-web-de-la-lista-negra-de-google\">Saca tu web de la lista negra de Google<\/a><\/li><li><a href=\"#aioseo-recuperacion-seo-post-hackeo\">Recuperaci\u00f3n SEO post hackeo<\/a><\/li><li><a href=\"#aioseo-como-evitar-futuros-hackeos-en-tu-servidor\">C\u00f3mo evitar futuros hackeos en tu servidor<\/a><\/li><li><a href=\"#aioseo-conclusion\">Conclusi\u00f3n<\/a><\/li><li><a href=\"#aioseo-preguntas-frecuentes-sobre-desinfectar-wordpress-hackeado-faq\">Preguntas frecuentes sobre desinfectar WordPress hackeado (FAQ)<\/a><\/li><\/ul><\/div>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/www.loading.es\/hosting-wordpress\/index.html\" target=\"_blank\" rel=\"noreferrer noopener\"><img decoding=\"async\" loading=\"lazy\" width=\"1000\" height=\"100\" src=\"https:\/\/www.loading.es\/blog\/wp-content\/uploads\/banner-oferta-hosting-wordpress.png\" alt=\"Oferta Contratar Hosting WordPress\" class=\"wp-image-8079\" srcset=\"https:\/\/www.loading.es\/blog\/wp-content\/uploads\/banner-oferta-hosting-wordpress.png 1000w, https:\/\/www.loading.es\/blog\/wp-content\/uploads\/banner-oferta-hosting-wordpress-300x30.png 300w, https:\/\/www.loading.es\/blog\/wp-content\/uploads\/banner-oferta-hosting-wordpress-768x77.png 768w, https:\/\/www.loading.es\/blog\/wp-content\/uploads\/banner-oferta-hosting-wordpress-850x85.png 850w\" sizes=\"(max-width: 1000px) 100vw, 1000px\" \/><\/a><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-acciones-inmediatas-para-frenar-el-ataque\">Acciones inmediatas para frenar el ataque<\/h2>\n\n\n\n<p>Lo primero no es \u201cinvestigar con calma\u201d. Lo primero es <strong>parar el golpe<\/strong>.<\/p>\n\n\n\n<p>Haz esto nada m\u00e1s detectar el problema:<\/p>\n\n\n\n<ul>\n<li><strong>Pon la web en mantenimiento<\/strong> o publica una p\u00e1gina temporal limpia si la web est\u00e1 redirigiendo, mostrando spam o descargando archivos raros.<\/li>\n\n\n\n<li><strong>No sigas navegando por el panel como si nada<\/strong>. Cada minuto con la web infectada puede empeorar el da\u00f1o, el spam y la p\u00e9rdida de confianza.<\/li>\n\n\n\n<li><strong>Haz una foto del estado actual<\/strong> con capturas, URLs afectadas y fecha. Luego te servir\u00e1 para revisar qu\u00e9 se ha roto y qu\u00e9 ha desaparecido.<\/li>\n\n\n\n<li><strong>Comprueba tus copias de seguridad<\/strong>. En el <a href=\"https:\/\/www.loading.es\/hosting-wordpress\/index.html\">hosting WordPress<\/a> de Loading se incluyen copias de seguridad, as\u00ed que puedes volver a un punto anterior si necesitas salvar el apuro.<\/li>\n<\/ul>\n\n\n\n<p>Esa restauraci\u00f3n puede devolverte la web online m\u00e1s r\u00e1pido, pero <strong>no arregla la causa del hackeo<\/strong>.<\/p>\n\n\n\n<p>Si el problema ven\u00eda de un plugin vulnerable, una contrase\u00f1a robada o un tema pirateado, la infecci\u00f3n puede volver en cuanto repitas el mismo escenario.<\/p>\n\n\n\n<p>Mientras frenas el da\u00f1o, intenta no hacer estas dos cosas:<\/p>\n\n\n\n<ul>\n<li><strong>No borres archivos al azar<\/strong> solo porque \u201csuenan raros\u201d. Puedes romper la web y dejar dentro la puerta de entrada real.<\/li>\n\n\n\n<li><strong>No actualices todo sin copia previa<\/strong>. A veces ayuda, pero otras veces pisa pruebas \u00fatiles o deja la instalaci\u00f3n a medias.<\/li>\n<\/ul>\n\n\n\n<!-- acciones-inmediatas-para-frenar-el-ataque -->\n<style>\n@import url('https:\/\/fonts.googleapis.com\/css2?family=Outfit:wght@400;500;600;700;800&display=swap');\n#comp-ld-901 {\n  --c-brand-dark: #37363d;\n  --c-brand-accent: #db7424;\n  --c-bg-soft: #f4f4f6;\n  --c-red: #ef4444;\n  --c-blue: #0ea5e9;\n  --c-text: #27252d;\n  font-family: 'Outfit', system-ui, sans-serif;\n  color: var(--c-text);\n  margin: 24px 0;\n}\n#comp-ld-901 .ld-shell {\n  position: relative;\n  padding: 24px;\n  border-radius: 24px;\n  overflow: hidden;\n  background: linear-gradient(180deg, #fff7f1 0%, #ffffff 100%);\n  border: 1px solid rgba(219, 116, 36, 0.16);\n  box-shadow: 0 18px 45px rgba(55, 54, 61, 0.08);\n}\n#comp-ld-901 .ld-shell::before {\n  content: '';\n  position: absolute;\n  inset: -40px auto auto -40px;\n  width: 180px;\n  height: 180px;\n  background: radial-gradient(circle, rgba(219, 116, 36, 0.18) 0%, rgba(219, 116, 36, 0) 68%);\n  pointer-events: none;\n}\n#comp-ld-901 .ld-top {\n  display: flex;\n  flex-wrap: wrap;\n  align-items: center;\n  justify-content: space-between;\n  gap: 12px;\n  margin-bottom: 18px;\n}\n#comp-ld-901 .ld-kicker,\n#comp-ld-901 .ld-badge {\n  display: inline-flex;\n  align-items: center;\n  gap: 8px;\n  border-radius: 999px;\n  font-size: 0.78rem;\n  font-weight: 700;\n  letter-spacing: 0.03em;\n}\n#comp-ld-901 .ld-kicker {\n  padding: 7px 12px;\n  color: var(--c-red);\n  background: rgba(239, 68, 68, 0.1);\n}\n#comp-ld-901 .ld-badge {\n  padding: 7px 12px;\n  color: var(--c-blue);\n  background: rgba(14, 165, 233, 0.1);\n}\n#comp-ld-901 .ld-title {\n  margin: 0 0 8px;\n  font-size: 1.22rem;\n  line-height: 1.2;\n  font-weight: 800;\n  color: var(--c-brand-dark);\n}\n#comp-ld-901 .ld-intro {\n  margin: 0 0 18px;\n  max-width: 62ch;\n  color: rgba(55, 54, 61, 0.82);\n  font-size: 0.97rem;\n}\n#comp-ld-901 .ld-grid {\n  position: relative;\n  display: grid;\n  grid-template-columns: repeat(4, minmax(0, 1fr));\n  gap: 14px;\n  margin-bottom: 16px;\n}\n#comp-ld-901 .ld-grid::before {\n  content: '';\n  position: absolute;\n  left: 4%;\n  right: 4%;\n  top: 26px;\n  height: 1px;\n  background: linear-gradient(90deg, rgba(219, 116, 36, 0.16), rgba(14, 165, 233, 0.18), rgba(239, 68, 68, 0.14));\n}\n#comp-ld-901 .ld-card {\n  position: relative;\n  padding: 18px;\n  border-radius: 20px;\n  background: #ffffff;\n  border: 1px solid rgba(55, 54, 61, 0.08);\n  box-shadow: 0 10px 24px rgba(55, 54, 61, 0.06);\n  transition: transform 0.25s ease, box-shadow 0.25s ease, border-color 0.25s ease;\n}\n#comp-ld-901 .ld-card:hover {\n  transform: translateY(-4px);\n  border-color: rgba(219, 116, 36, 0.22);\n  box-shadow: 0 16px 30px rgba(219, 116, 36, 0.14);\n}\n#comp-ld-901 .ld-step {\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  width: 36px;\n  height: 36px;\n  margin-bottom: 14px;\n  border-radius: 12px;\n  background: rgba(219, 116, 36, 0.12);\n  color: var(--c-brand-accent);\n  font-size: 0.83rem;\n  font-weight: 800;\n}\n#comp-ld-901 .ld-card strong {\n  display: block;\n  margin-bottom: 6px;\n  color: var(--c-brand-dark);\n  font-size: 0.98rem;\n}\n#comp-ld-901 .ld-card p,\n#comp-ld-901 .ld-warning p {\n  margin: 0;\n  color: rgba(55, 54, 61, 0.78);\n  font-size: 0.92rem;\n  line-height: 1.5;\n}\n#comp-ld-901 .ld-warnings {\n  display: grid;\n  grid-template-columns: repeat(2, minmax(0, 1fr));\n  gap: 12px;\n}\n#comp-ld-901 .ld-warning {\n  display: flex;\n  gap: 12px;\n  align-items: flex-start;\n  padding: 14px 16px;\n  border-radius: 18px;\n  background: var(--c-bg-soft);\n  border: 1px solid rgba(239, 68, 68, 0.12);\n}\n#comp-ld-901 .ld-warning svg,\n#comp-ld-901 .ld-kicker svg,\n#comp-ld-901 .ld-badge svg {\n  flex: 0 0 auto;\n}\n@media (max-width: 900px) {\n  #comp-ld-901 .ld-grid,\n  #comp-ld-901 .ld-warnings {\n    grid-template-columns: repeat(2, minmax(0, 1fr));\n  }\n}\n@media (max-width: 640px) {\n  #comp-ld-901 .ld-shell {\n    padding: 20px;\n  }\n  #comp-ld-901 .ld-grid,\n  #comp-ld-901 .ld-warnings {\n    grid-template-columns: 1fr;\n  }\n  #comp-ld-901 .ld-grid::before {\n    display: none;\n  }\n}\n<\/style>\n<div id=\"comp-ld-901\">\n  <div class=\"ld-shell\">\n    <div class=\"ld-top\">\n      <span class=\"ld-kicker\">\n        <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" fill=\"none\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M12 9v4\"><\/path><path d=\"M12 17h.01\"><\/path><path d=\"M10.29 3.86 1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0Z\"><\/path><\/svg>\n        Primeros 15 minutos\n      <\/span>\n    <\/div>\n    <div class=\"ld-title\">Mapa para frenar el ataque sin tocar nada a ciegas<\/div>\n        <div class=\"ld-grid\">\n      <article class=\"ld-card\">\n        <span class=\"ld-step\">01<\/span>\n        <strong>Modo contenci\u00f3n<\/strong>\n        <p>Pon la web en mantenimiento o deja una p\u00e1gina limpia temporal. Evita que el visitante siga chocando con redirecciones, spam o descargas raras.<\/p>\n      <\/article>\n      <article class=\"ld-card\">\n        <span class=\"ld-step\">02<\/span>\n        <strong>Guarda evidencias<\/strong>\n        <p>Capturas, URLs afectadas, fecha y avisos del navegador. Luego ayudan a medir alcance y a comparar si la infecci\u00f3n reaparece.<\/p>\n      <\/article>\n      <article class=\"ld-card\">\n        <span class=\"ld-step\">03<\/span>\n        <strong>Revisa tus copias<\/strong>\n        <p>Una copia buena te puede sacar del apuro r\u00e1pido, pero no sustituye la revisi\u00f3n posterior de plugins, credenciales y puerta de entrada.<\/p>\n      <\/article>\n      <article class=\"ld-card\">\n        <span class=\"ld-step\">04<\/span>\n        <strong>No improvises<\/strong>\n        <p>Antes de borrar o actualizar cosas, para y ordena el frente. Un paso precipitado puede romper la web y ocultar la causa real.<\/p>\n      <\/article>\n    <\/div>\n    <div class=\"ld-warnings\">\n      <article class=\"ld-warning\">\n        <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" stroke=\"#ef4444\" fill=\"none\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><circle cx=\"12\" cy=\"12\" r=\"9\"><\/circle><path d=\"M15 9l-6 6\"><\/path><path d=\"m9 9 6 6\"><\/path><\/svg>\n        <p><strong>No borres archivos por intuici\u00f3n.<\/strong> Puedes dejar dentro la puerta de entrada y romper partes sanas del sitio.<\/p>\n      <\/article>\n      <article class=\"ld-warning\">\n        <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" stroke=\"#ef4444\" fill=\"none\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><circle cx=\"12\" cy=\"12\" r=\"9\"><\/circle><path d=\"M8 12h8\"><\/path><\/svg>\n        <p><strong>No actualices todo sin copia previa.<\/strong> A veces arregla, pero otras pisa pistas \u00fatiles y deja la instalaci\u00f3n a medias.<\/p>\n      <\/article>\n    <\/div>\n  <\/div>\n<\/div>\n<!-- \/acciones-inmediatas-para-frenar-el-ataque -->\n\n\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-senales-claras-de-que-tu-web-tiene-malware\">\u00bfHan hackeado tu WordPress?<\/h2>\n\n\n\n<p>&nbsp; Test visual r\u00e1pido. Hazlo y saca las conclusione.<\/p>\n\n\n\n<!-- CHECKLIST: Se\u00f1ales de malware en WordPress | Loading.es v2 -->\n\n<div id=\"wpmchk\">\n\n<style>\n#wpmchk { font-family:'Segoe UI',Arial,sans-serif; max-width:660px; margin:2em auto; }\n#wpmchk .ci { display:flex; align-items:flex-start; gap:14px; padding:14px 16px; margin-bottom:10px; border-radius:12px; background:#ffffff; border:2px solid #e5e2de; cursor:pointer; box-sizing:border-box; -webkit-box-sizing:border-box; }\n#wpmchk .ci:hover { border-color:#db7424; box-shadow:0 4px 16px rgba(55,54,61,.10); }\n#wpmchk .cb { flex-shrink:0; width:26px; height:26px; min-width:26px; border-radius:8px; border:2px solid #ccc; background:#fff; display:flex; align-items:center; justify-content:center; margin-top:2px; box-sizing:border-box; }\n#wpmchk .ct { flex:1; min-width:0; }\n#wpmchk .cl { font-size:15px; font-weight:600; color:#37363d; margin:0 0 3px 0; }\n#wpmchk .cd { font-size:13px; color:#888; line-height:1.55; margin:0; }\n#wpmchk .cp { display:none; margin-top:7px; }\n#wpmchk .cp span { font-size:11px; font-weight:700; padding:3px 10px; border-radius:20px; letter-spacing:.4px; }\n#wpmchk .cp-r span { background:#fde8e8; color:#c0392b; }\n#wpmchk .cp-o span { background:#fef0e0; color:#c0620a; }\n#wpmchk .cp-g span { background:#e8f8ee; color:#1a7a3c; }\n#wpmchk #wpmbar-wrap { height:7px; background:#ede9e4; border-radius:8px; overflow:hidden; margin-bottom:14px; }\n#wpmchk #wpmbar { height:100%; width:0%; background:#22c55e; border-radius:8px; -webkit-transition:width .4s,background .4s; transition:width .4s,background .4s; }\n#wpmchk #wpmresult { border-radius:12px; padding:16px 18px; background:#fff; border:2px solid #e5e2de; -webkit-transition:border-color .3s,background .3s; transition:border-color .3s,background .3s; }\n#wpmchk #wpmreset { background:none; border:none; color:#aaa; font-size:12px; cursor:pointer; padding:4px 8px; font-family:inherit; display:block; margin:12px auto 0; }\n#wpmchk #wpmreset:hover { color:#37363d; }\n<\/style>\n\n<!-- Cabecera -->\n<div style=\"background:linear-gradient(135deg,#37363d 55%,#4f4e55 100%);border-radius:14px;padding:26px 28px 22px;margin-bottom:18px;position:relative;overflow:hidden;\">\n  <div style=\"position:absolute;top:-28px;right:-28px;width:120px;height:120px;border-radius:50%;background:rgba(219,116,36,.14);\"><\/div>\n  <span style=\"display:inline-block;background:#db7424;color:#fff;font-size:11px;font-weight:700;letter-spacing:1.3px;text-transform:uppercase;padding:4px 12px;border-radius:20px;margin-bottom:10px;\">Test r\u00e1pido<\/span>\n  <div style=\"color:#fff;font-size:20px;font-weight:700;line-height:1.3;margin-bottom:5px;\">\u00bfTu web tiene malware?<\/div>\n  <div style=\"color:rgba(255,255,255,.65);font-size:13.5px;\">Marca cada se\u00f1al que hayas detectado y descubre tu nivel de riesgo.<\/div>\n<\/div>\n\n<!-- Items -->\n<div id=\"wpmlist\">\n\n  <div class=\"ci\" id=\"wpmci0\">\n    <div class=\"cb\" id=\"wpmcb0\"><svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" id=\"wpmt0\" style=\"opacity:0;\"><path d=\"M2.5 7L5.5 10L11.5 4\" stroke=\"#fff\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><\/div>\n    <div class=\"ct\">\n      <p class=\"cl\">WordPress redirige a otra p\u00e1gina<\/p>\n      <p class=\"cd\">Visitas tu web y apareces en otro dominio que t\u00fa no has configurado.<\/p>\n      <div class=\"cp cp-r\" id=\"wpmbg0\"><span>\u26a0 Se\u00f1al cr\u00edtica<\/span><\/div>\n    <\/div>\n  <\/div>\n\n  <div class=\"ci\" id=\"wpmci1\">\n    <div class=\"cb\" id=\"wpmcb1\"><svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" id=\"wpmt1\" style=\"opacity:0;\"><path d=\"M2.5 7L5.5 10L11.5 4\" stroke=\"#fff\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><\/div>\n    <div class=\"ct\">\n      <p class=\"cl\">Aviso de sitio peligroso en el navegador<\/p>\n      <p class=\"cd\">Chrome, Edge o tu antivirus muestran un aviso de phishing, malware o sitio enga\u00f1oso.<\/p>\n      <div class=\"cp cp-r\" id=\"wpmbg1\"><span>\u26a0 Se\u00f1al cr\u00edtica<\/span><\/div>\n    <\/div>\n  <\/div>\n\n  <div class=\"ci\" id=\"wpmci2\">\n    <div class=\"cb\" id=\"wpmcb2\"><svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" id=\"wpmt2\" style=\"opacity:0;\"><path d=\"M2.5 7L5.5 10L11.5 4\" stroke=\"#fff\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><\/div>\n    <div class=\"ct\">\n      <p class=\"cl\">Aparecen administradores que no has creado<\/p>\n      <p class=\"cd\">En Usuarios de WordPress ves cuentas con rol Administrador que no reconoces.<\/p>\n      <div class=\"cp cp-o\" id=\"wpmbg2\"><span>\u26a1 Se\u00f1al alta<\/span><\/div>\n    <\/div>\n  <\/div>\n\n  <div class=\"ci\" id=\"wpmci3\">\n    <div class=\"cb\" id=\"wpmcb3\"><svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" id=\"wpmt3\" style=\"opacity:0;\"><path d=\"M2.5 7L5.5 10L11.5 4\" stroke=\"#fff\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><\/div>\n    <div class=\"ct\">\n      <p class=\"cl\">Google muestra p\u00e1ginas de spam o texto en japon\u00e9s<\/p>\n      <p class=\"cd\">Al buscar tu dominio aparecen p\u00e1ginas de farmacia, apuestas o contenido que no has publicado.<\/p>\n      <div class=\"cp cp-o\" id=\"wpmbg3\"><span>\u26a1 Se\u00f1al alta<\/span><\/div>\n    <\/div>\n  <\/div>\n\n  <div class=\"ci\" id=\"wpmci4\">\n    <div class=\"cb\" id=\"wpmcb4\"><svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" id=\"wpmt4\" style=\"opacity:0;\"><path d=\"M2.5 7L5.5 10L11.5 4\" stroke=\"#fff\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><\/div>\n    <div class=\"ct\">\n      <p class=\"cl\">Aviso de archivos modificados o c\u00f3digo sospechoso<\/p>\n      <p class=\"cd\">Tu hosting, Search Console o un plugin de seguridad alerta sobre cambios inesperados en archivos.<\/p>\n      <div class=\"cp cp-g\" id=\"wpmbg4\"><span>\ud83d\udd0d A revisar<\/span><\/div>\n    <\/div>\n  <\/div>\n\n<\/div>\n\n<!-- Barra + resultado -->\n<div style=\"padding:6px 0 4px;\">\n  <div style=\"display:flex;align-items:center;gap:12px;margin-bottom:14px;\">\n    <div id=\"wpmbar-wrap\"><div id=\"wpmbar\"><\/div><\/div>\n    <div id=\"wpmcounter\" style=\"font-size:13px;font-weight:700;color:#37363d;min-width:52px;text-align:right;flex-shrink:0;\">0 de 5<\/div>\n  <\/div>\n  <div id=\"wpmresult\">\n    <div id=\"wpmricon\" style=\"font-size:26px;margin-bottom:5px;line-height:1;\">\ud83d\udee1\ufe0f<\/div>\n    <div id=\"wpmrtitle\" style=\"font-size:15px;font-weight:700;color:#37363d;margin-bottom:4px;\">Marca las se\u00f1ales que hayas detectado<\/div>\n    <div id=\"wpmrtext\" style=\"font-size:13px;color:#888;line-height:1.6;\">Con un solo punto confirmado ya tienes motivos para actuar.<\/div>\n  <\/div>\n  <button id=\"wpmreset\">\u21ba Reiniciar test<\/button>\n<\/div>\n\n<\/div><!-- \/wpmchk -->\n\n<script>\n(function(){\n\n  var SEV = ['critical','critical','high','high','medium'];\n  var state = [false,false,false,false,false];\n\n  var COLORS = {\n    critical: { check:'#ef4444', border:'#ef4444', bg:'#fde8e8' },\n    high:     { check:'#db7424', border:'#db7424', bg:'#fef0e0' },\n    medium:   { check:'#22c55e', border:'#22c55e', bg:'#e8f8ee' }\n  };\n\n  function getEl(id){ return document.getElementById(id); }\n\n  function update(){\n    var n = state.filter(Boolean).length;\n    var hasCritical = (state[0] || state[1]);\n    getEl('wpmcounter').innerHTML = n + ' de 5';\n    var pct = Math.round((n\/5)*100);\n    getEl('wpmbar').style.width = pct + '%';\n    getEl('wpmbar').style.background = n===0 ? '#22c55e' : (hasCritical ? '#ef4444' : '#db7424');\n\n    var icon, title, text, border, bg;\n    if(n === 0){\n      icon='\ud83d\udee1\ufe0f'; title='Marca las se\u00f1ales que hayas detectado';\n      text='Con un solo punto confirmado ya tienes motivos para actuar.';\n      border='#e5e2de'; bg='#ffffff';\n    } else if(hasCritical && n >= 3){\n      icon='\ud83d\udd34'; title='Instalaci\u00f3n comprometida \u2014 act\u00faa ya';\n      text='Se\u00f1ales cr\u00edticas confirmadas. Modo mantenimiento, cambia contrase\u00f1as y pasa Wordfence ahora.';\n      border='#ef4444'; bg='#fde8e8';\n    } else if(hasCritical){\n      icon='\ud83d\udea8'; title='Se\u00f1al cr\u00edtica confirmada \u2014 no esperes';\n      text='Corta el da\u00f1o: activa mantenimiento, revisa el acceso, cambia contrase\u00f1as y escanea con Wordfence.';\n      border='#ef4444'; bg='#fde8e8';\n    } else if(n >= 3){\n      icon='\u26a0\ufe0f'; title='Varias se\u00f1ales \u2014 tu web est\u00e1 en riesgo';\n      text='Pon la web en mantenimiento y empieza la limpieza siguiendo la gu\u00eda paso a paso.';\n      border='#db7424'; bg='#fef0e0';\n    } else {\n      icon='\u26a1'; title='Hay se\u00f1ales. Act\u00faa sin esperar.';\n      text='Revisa archivos, usuarios y contrase\u00f1as. Un punto confirmado es suficiente para investigar.';\n      border='#db7424'; bg='#fef0e0';\n    }\n\n    getEl('wpmricon').innerHTML = icon;\n    getEl('wpmrtitle').innerHTML = title;\n    getEl('wpmrtext').innerHTML = text;\n    getEl('wpmresult').style.borderColor = border;\n    getEl('wpmresult').style.background = bg;\n  }\n\n  function toggleItem(i){\n    state[i] = !state[i];\n    var on = state[i];\n    var sev = SEV[i];\n    var c = COLORS[sev];\n    var cb = getEl('wpmcb'+i);\n    var tick = getEl('wpmt'+i);\n    var badge = getEl('wpmbg'+i);\n    var item = getEl('wpmci'+i);\n\n    if(on){\n      cb.style.background = c.check;\n      cb.style.borderColor = c.check;\n      tick.style.opacity = '1';\n      item.style.borderColor = c.border;\n      item.style.background = c.bg;\n      badge.style.display = 'block';\n    } else {\n      cb.style.background = '#ffffff';\n      cb.style.borderColor = '#cccccc';\n      tick.style.opacity = '0';\n      item.style.borderColor = '#e5e2de';\n      item.style.background = '#ffffff';\n      badge.style.display = 'none';\n    }\n    update();\n  }\n\n  function bindItem(i){\n    var el = getEl('wpmci'+i);\n    if(!el) return;\n    if(el.addEventListener){\n      el.addEventListener('click', function(e){ e.preventDefault(); toggleItem(i); }, false);\n    } else if(el.attachEvent){\n      el.attachEvent('onclick', function(){ toggleItem(i); });\n    }\n  }\n\n  function reset(){\n    for(var i=0;i<5;i++){\n      state[i] = false;\n      getEl('wpmcb'+i).style.background = '#ffffff';\n      getEl('wpmcb'+i).style.borderColor = '#cccccc';\n      getEl('wpmt'+i).style.opacity = '0';\n      getEl('wpmbg'+i).style.display = 'none';\n      getEl('wpmci'+i).style.borderColor = '#e5e2de';\n      getEl('wpmci'+i).style.background = '#ffffff';\n    }\n    update();\n  }\n\n  function init(){\n    for(var i=0;i<5;i++){ bindItem(i); }\n    var btn = getEl('wpmreset');\n    if(btn){\n      if(btn.addEventListener){\n        btn.addEventListener('click', function(e){ e.preventDefault(); reset(); }, false);\n      } else {\n        btn.attachEvent('onclick', reset);\n      }\n    }\n    update();\n  }\n\n  if(document.readyState === 'loading'){\n    if(document.addEventListener){\n      document.addEventListener('DOMContentLoaded', init, false);\n    } else {\n      window.attachEvent('onload', init);\n    }\n  } else {\n    init();\n  }\n\n})();\n<\/script>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-que-hacer-si-no-puedes-entrar-a-tu-wordpress\">Qu\u00e9 hacer si no puedes entrar a tu WordPress<\/h2>\n\n\n\n<p>Cuando el acceso falla, lo m\u00e1s r\u00e1pido suele ser <strong>desactivar lo que est\u00e1 rompiendo el login<\/strong> o <strong>resetear la contrase\u00f1a desde la base de datos<\/strong>.<\/p>\n\n\n\n<p>Empieza por la v\u00eda m\u00e1s simple en Plesk.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"aioseo-desactiva-plugins-renombrando-la-carpeta-en-plesk\">Desactiva plugins renombrando la carpeta en Plesk<\/h3>\n\n\n\n<ul>\n<li>Entra en <strong>Plesk<\/strong>.<\/li>\n\n\n\n<li>Abre <strong>Administrador de archivos<\/strong>.<\/li>\n\n\n\n<li>Ve a <code>httpdocs\/wp-content\/<\/code>.<\/li>\n\n\n\n<li>Renombra la carpeta <code>plugins<\/code> a <code>plugins-off<\/code>.<\/li>\n<\/ul>\n\n\n\n<p>Con eso, WordPress dejar\u00e1 de cargar los plugins y muchas veces te devolver\u00e1 el acceso al <code>\/wp-admin\/<\/code>.<\/p>\n\n\n\n<p>Si recuperas la entrada, no reactives todo de golpe.<\/p>\n\n\n\n<p>Vuelve a dejar la carpeta con su nombre original y activa uno por uno solo cuando hayas limpiado la instalaci\u00f3n.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"aioseo-cambia-la-contrasena-desde-phpmyadmin\">Cambia la contrase\u00f1a desde phpMyAdmin<\/h3>\n\n\n\n<p>Si el problema no son los plugins, resetea el acceso as\u00ed:<\/p>\n\n\n\n<ul>\n<li>En Plesk, abre <strong>phpMyAdmin<\/strong>.<\/li>\n\n\n\n<li>Entra en la base de datos que usa tu WordPress. Si no la recuerdas, revisa <code>wp-config.php<\/code> en el Administrador de archivos.<\/li>\n\n\n\n<li>Busca la tabla de usuarios. No siempre es <code>wp_users<\/code>. Si tu prefijo es distinto, ser\u00e1 algo como <code>abc_users<\/code>.<\/li>\n\n\n\n<li>Edita tu usuario administrador.<\/li>\n\n\n\n<li>En el campo <code>user_pass<\/code>, escribe una contrase\u00f1a nueva y en la funci\u00f3n elige <strong>MD5<\/strong>.<\/li>\n\n\n\n<li>Guarda los cambios e intenta entrar de nuevo.<\/li>\n<\/ul>\n\n\n\n<p>Si tampoco puedes entrar as\u00ed, revisa si el hacker ha cambiado tu correo de administrador o ha creado un usuario nuevo con permisos altos. Si tienes problemas, la restauraci\u00f3n de la web desde una copia de seguridad anterior es, como hemos dicho antes, la soluci\u00f3n m\u00e1s r\u00e1pida, aunque luego tienes que seguir investigando el problema.<\/p>\n\n\n\n<!-- que-hacer-si-no-puedes-entrar-a-tu-wordpress -->\n<style>\n@import url('https:\/\/fonts.googleapis.com\/css2?family=Space+Grotesk:wght@400;500;700&display=swap');\n#comp-ld-903 {\n  --c-brand-dark: #37363d;\n  --c-brand-accent: #db7424;\n  --c-bg-soft: #f4f4f6;\n  --c-blue: #0ea5e9;\n  --c-text: #f8f8fa;\n  font-family: 'Space Grotesk', system-ui, sans-serif;\n  margin: 24px 0;\n}\n#comp-ld-903 .ld-shell {\n  position: relative;\n  padding: 24px;\n  border-radius: 24px;\n  overflow: hidden;\n  background: linear-gradient(160deg, #202027 0%, #37363d 54%, #44424c 100%);\n  color: var(--c-text);\n  box-shadow: 0 18px 42px rgba(32, 32, 39, 0.28);\n}\n#comp-ld-903 .ld-shell::before {\n  content: '';\n  position: absolute;\n  inset: auto -20px -20px auto;\n  width: 220px;\n  height: 220px;\n  background: radial-gradient(circle, rgba(14, 165, 233, 0.22) 0%, rgba(14, 165, 233, 0) 70%);\n  pointer-events: none;\n}\n#comp-ld-903 .ld-kicker {\n  display: inline-flex;\n  align-items: center;\n  gap: 8px;\n  margin-bottom: 10px;\n  padding: 7px 12px;\n  border-radius: 999px;\n  font-size: 0.78rem;\n  font-weight: 700;\n  color: #ffd7be;\n  background: rgba(219, 116, 36, 0.18);\n}\n#comp-ld-903 .ld-title {\n  margin: 0 0 8px;\n  font-size: 1.22rem;\n  line-height: 1.2;\n  font-weight: 700;\n}\n#comp-ld-903 .ld-intro {\n  margin: 0 0 18px;\n  max-width: 62ch;\n  color: rgba(248, 248, 250, 0.8);\n  font-size: 0.95rem;\n}\n#comp-ld-903 .ld-grid {\n  display: grid;\n  grid-template-columns: repeat(2, minmax(0, 1fr));\n  gap: 14px;\n}\n#comp-ld-903 .ld-panel {\n  position: relative;\n  padding: 18px;\n  border-radius: 20px;\n  background: rgba(255, 255, 255, 0.06);\n  border: 1px solid rgba(255, 255, 255, 0.08);\n  backdrop-filter: blur(8px);\n  transition: transform 0.25s ease, border-color 0.25s ease, box-shadow 0.25s ease;\n}\n#comp-ld-903 .ld-panel:hover {\n  transform: translateY(-4px);\n  border-color: rgba(219, 116, 36, 0.24);\n  box-shadow: 0 0 0 1px rgba(219, 116, 36, 0.08), 0 16px 30px rgba(219, 116, 36, 0.14);\n}\n#comp-ld-903 .ld-topline {\n  display: flex;\n  align-items: center;\n  gap: 10px;\n  margin-bottom: 14px;\n}\n#comp-ld-903 .ld-icon {\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  width: 42px;\n  height: 42px;\n  border-radius: 14px;\n  background: rgba(255, 255, 255, 0.1);\n  color: var(--c-brand-accent);\n}\n#comp-ld-903 .ld-topline strong {\n  display: block;\n  font-size: 0.98rem;\n}\n#comp-ld-903 .ld-topline span {\n  display: block;\n  margin-top: 2px;\n  font-size: 0.84rem;\n  color: rgba(248, 248, 250, 0.66);\n}\n#comp-ld-903 .ld-steps {\n  display: grid;\n  gap: 10px;\n  margin: 0 0 14px;\n  padding: 0;\n  list-style: none;\n}\n#comp-ld-903 .ld-steps li {\n  display: grid;\n  grid-template-columns: auto minmax(0, 1fr);\n  gap: 10px;\n  align-items: start;\n}\n#comp-ld-903 .ld-num {\n  width: 28px;\n  height: 28px;\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  border-radius: 999px;\n  background: rgba(14, 165, 233, 0.18);\n  color: #8edcff;\n  font-size: 0.78rem;\n  font-weight: 700;\n}\n#comp-ld-903 .ld-steps strong,\n#comp-ld-903 .ld-note strong {\n  color: #ffffff;\n}\n#comp-ld-903 .ld-steps p,\n#comp-ld-903 .ld-note p {\n  margin: 2px 0 0;\n  color: rgba(248, 248, 250, 0.76);\n  font-size: 0.89rem;\n  line-height: 1.5;\n}\n#comp-ld-903 .ld-note {\n  padding: 12px 14px;\n  border-radius: 16px;\n  background: rgba(14, 165, 233, 0.1);\n  border: 1px solid rgba(14, 165, 233, 0.16);\n}\n#comp-ld-903 .ld-code {\n  display: inline-flex;\n  align-items: center;\n  gap: 8px;\n  margin-top: 8px;\n  padding: 8px 10px;\n  border-radius: 12px;\n  background: rgba(255, 255, 255, 0.08);\n  font-size: 0.82rem;\n  color: #fff5ec;\n}\n@media (max-width: 760px) {\n  #comp-ld-903 .ld-grid {\n    grid-template-columns: 1fr;\n  }\n}\n@media (max-width: 640px) {\n  #comp-ld-903 .ld-shell {\n    padding: 20px;\n  }\n}\n<\/style>\n<div id=\"comp-ld-903\">\n  <div class=\"ld-shell\">\n    <span class=\"ld-kicker\">\n      <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" fill=\"none\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M8 9V5a4 4 0 1 1 8 0v4\"><\/path><rect x=\"5\" y=\"9\" width=\"14\" height=\"11\" rx=\"2\"><\/rect><path d=\"M12 13v3\"><\/path><\/svg>\n      Recupera acceso sin terminal\n    <\/span>\n    <div class=\"ld-title\">Si no entras al panel, abre primero la v\u00eda m\u00e1s corta y m\u00e1s reversible<\/div>\n    <div class=\"ld-grid\">\n      <article class=\"ld-panel\">\n        <div class=\"ld-topline\">\n          <span class=\"ld-icon\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" fill=\"none\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M4 4h16v16H4z\"><\/path><path d=\"M4 9h16\"><\/path><path d=\"M9 20V9\"><\/path><\/svg><\/span>\n          <div>\n            <strong>Ruta A \u00b7 Plesk<\/strong>\n            <span>Cuando sospechas de un plugin<\/span>\n          <\/div>\n        <\/div>\n        <ol class=\"ld-steps\">\n          <li><span class=\"ld-num\">1<\/span><div><strong>Abre el Administrador de archivos<\/strong><p>Ve a la carpeta `httpdocs\/wp-content\/`.<\/p><\/div><\/li>\n          <li><span class=\"ld-num\">2<\/span><div><strong>Renombra `plugins`<\/strong><p>C\u00e1mbiala a `plugins-off` para forzar la desactivaci\u00f3n completa.<\/p><\/div><\/li>\n          <li><span class=\"ld-num\">3<\/span><div><strong>Prueba `\/wp-admin\/`<\/strong><p>Si entras, ya has aislado una parte importante del problema.<\/p><\/div><\/li>\n          <li><span class=\"ld-num\">4<\/span><div><strong>No reactives todo de golpe<\/strong><p>Recupera el nombre original solo cuando ya est\u00e9s en modo limpieza real.<\/p><\/div><\/li>\n        <\/ol>\n        <div class=\"ld-code\">plugins <span aria-hidden=\"true\">\u2192<\/span> plugins-off<\/div>\n      <\/article>\n      <article class=\"ld-panel\">\n        <div class=\"ld-topline\">\n          <span class=\"ld-icon\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" fill=\"none\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><ellipse cx=\"12\" cy=\"5\" rx=\"7\" ry=\"3\"><\/ellipse><path d=\"M5 5v6c0 1.66 3.13 3 7 3s7-1.34 7-3V5\"><\/path><path d=\"M5 11v6c0 1.66 3.13 3 7 3s7-1.34 7-3v-6\"><\/path><\/svg><\/span>\n          <div>\n            <strong>Ruta B \u00b7 phpMyAdmin<\/strong>\n            <span>Cuando el problema es el acceso<\/span>\n          <\/div>\n        <\/div>\n        <ol class=\"ld-steps\">\n          <li><span class=\"ld-num\">1<\/span><div><strong>Identifica la base correcta<\/strong><p>Si dudas, localiza el nombre en `wp-config.php`.<\/p><\/div><\/li>\n          <li><span class=\"ld-num\">2<\/span><div><strong>Busca la tabla de usuarios<\/strong><p>Puede ser `wp_users` o un prefijo distinto.<\/p><\/div><\/li>\n          <li><span class=\"ld-num\">3<\/span><div><strong>Resetea `user_pass`<\/strong><p>Escribe la contrase\u00f1a nueva y aplica la funci\u00f3n `MD5`.<\/p><\/div><\/li>\n          <li><span class=\"ld-num\">4<\/span><div><strong>Vigila usuarios extra\u00f1os<\/strong><p>Si aparece un admin que no reconoces, no cierres la revisi\u00f3n ah\u00ed.<\/p><\/div><\/li>\n        <\/ol>\n        <div class=\"ld-code\">user_pass <span aria-hidden=\"true\">\u2192<\/span> MD5<\/div>\n      <\/article>\n    <\/div>\n    <div class=\"ld-note\">\n      <strong>Ojo con esto<\/strong>\n      <p>Estas rutas devuelven acceso. No significan que el WordPress ya est\u00e9 limpio. \u00dasalas como punto de entrada, no como final del proceso.<\/p>\n    <\/div>\n  <\/div>\n<\/div>\n<!-- \/que-hacer-si-no-puedes-entrar-a-tu-wordpress -->\n\n\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-guia-para-limpiar-tu-wordpress-paso-a-paso\">Gu\u00eda para limpiar tu WordPress paso a paso<\/h2>\n\n\n\n<p>Aqu\u00ed ya no toca improvisar.<\/p>\n\n\n\n<p>La idea es limpiar sin dejar puertas abiertas y sin volver a infectar la web al d\u00eda siguiente.<\/p>\n\n\n\n<p>Si todav\u00eda no tienes un plugin de apoyo claro, aqu\u00ed tienes una comparativa de <a href=\"https:\/\/www.loading.es\/blog\/mejores-plugins-proteger-wordpress-malware\/\">plugins de seguridad para WordPress<\/a> para saber cu\u00e1l te encaja mejor despu\u00e9s de la limpieza. No son<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"aioseo-haz-una-copia-de-seguridad-del-desastre\">Haz una copia de seguridad del desastre<\/h3>\n\n\n\n<p>Antes de borrar nada, guarda una copia del estado actual.<\/p>\n\n\n\n<p>S\u00ed, aunque la web est\u00e9 infectada.<\/p>\n\n\n\n<p>Te interesa conservarla por tres motivos:<\/p>\n\n\n\n<ul>\n<li><strong>Si rompes algo<\/strong>, tendr\u00e1s una referencia para recuperar contenido o configuraci\u00f3n.<\/li>\n\n\n\n<li><strong>Si el malware vuelve<\/strong>, podr\u00e1s comparar archivos y detectar por d\u00f3nde ha entrado.<\/li>\n\n\n\n<li><strong>Si Google o el cliente piden contexto<\/strong>, tendr\u00e1s pruebas de lo que pas\u00f3.<\/li>\n<\/ul>\n\n\n\n<p>Como m\u00ednimo, guarda esto:<\/p>\n\n\n\n<ul>\n<li>Una copia de los archivos desde el <strong>Administrador de archivos de Plesk<\/strong>.<\/li>\n\n\n\n<li>Una exportaci\u00f3n de la base de datos desde <strong>phpMyAdmin<\/strong>.<\/li>\n\n\n\n<li>Las URLs o capturas donde se ve\u00eda el problema.<\/li>\n<\/ul>\n\n\n\n<p>Si decides restaurar una copia previa del hosting, \u00fasala como atajo para volver a poner la web en pie, pero luego sigue con la revisi\u00f3n de plugins, usuarios y credenciales.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"aioseo-cambia-todas-las-contrasenas-y-las-security-keys\">Cambia todas las contrase\u00f1as y las security keys<\/h3>\n\n\n\n<p>Si una contrase\u00f1a o cookie cay\u00f3 en manos de alguien, limpiar archivos no basta.<\/p>\n\n\n\n<p>Tienes que cerrar todas las sesiones y renovar accesos.<\/p>\n\n\n\n<p>Cambia, como m\u00ednimo, estas credenciales:<\/p>\n\n\n\n<ul>\n<li><strong>Plesk<\/strong><\/li>\n\n\n\n<li><strong>FTP o SFTP<\/strong><\/li>\n\n\n\n<li><strong>Todos los usuarios de WordPress<\/strong>, sobre todo administradores<\/li>\n\n\n\n<li><strong>Usuario de la base de datos<\/strong><\/li>\n<\/ul>\n\n\n\n<p>Despu\u00e9s cambia tambi\u00e9n las <strong>security keys<\/strong> y salts de WordPress en <code>wp-config.php<\/code>.<\/p>\n\n\n\n<p>Estas claves hacen que las cookies de sesi\u00f3n de WordPress dejen de valer si las regeneras, as\u00ed que expulsan sesiones abiertas, incluidas las del atacante si segu\u00eda dentro.<\/p>\n\n\n\n<p>Puedes generarlas desde la documentaci\u00f3n oficial de WordPress sobre <a href=\"https:\/\/developer.wordpress.org\/apis\/wp-config-php\/#security-keys\">security keys y salts<\/a>.<\/p>\n\n\n\n<p>Una explicaci\u00f3n r\u00e1pida:<\/p>\n\n\n\n<ul>\n<li>Las <strong>keys<\/strong> y <strong>salts<\/strong> son cadenas aleatorias que WordPress usa para proteger las sesiones.<\/li>\n\n\n\n<li>Al cambiarlas, <strong>todos los usuarios tendr\u00e1n que volver a iniciar sesi\u00f3n<\/strong>.<\/li>\n\n\n\n<li>Eso es justo lo que quieres despu\u00e9s de una intrusi\u00f3n.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"aioseo-escanea-y-elimina-el-malware-con-un-plugin\">Escanea y elimina el malware con un plugin<\/h3>\n\n\n\n<p>En una limpieza manual es f\u00e1cil dejar restos. Por eso conviene pasar un escaneo serio con un plugin conocido como <strong>Wordfence<\/strong>, incluso en su versi\u00f3n gratuita.<\/p>\n\n\n\n<p>Puedes instalarlo desde su ficha oficial en wordpress.org: <a href=\"https:\/\/wordpress.org\/plugins\/wordfence\/\">Wordfence Security<\/a>.<\/p>\n\n\n\n<p>Qu\u00e9 hacer con Wordfence:<\/p>\n\n\n\n<ul>\n<li>Inst\u00e1lalo solo cuando ya tengas acceso m\u00ednimo al panel o una copia de trabajo estable.<\/li>\n\n\n\n<li>Lanza un <strong>escaneo completo<\/strong>.<\/li>\n\n\n\n<li>Revisa avisos sobre archivos core modificados, puertas traseras, redirecciones maliciosas, archivos sospechosos y usuarios extra\u00f1os.<\/li>\n\n\n\n<li><strong>No elimines todo en autom\u00e1tico sin mirar<\/strong>. Primero confirma qu\u00e9 archivo pertenece a WordPress, a un plugin leg\u00edtimo o al malware. Hay modificaciones de archivos leg\u00edtimas que no debes borrar.<\/li>\n<\/ul>\n\n\n\n<p>Si encuentras archivos sueltos sospechosos, s\u00fabelos a <a href=\"https:\/\/www.virustotal.com\/gui\/home\/upload\">VirusTotal<\/a> para una segunda opini\u00f3n.<\/p>\n\n\n\n<p>Hazlo solo con archivos concretos y prescindibles, por ejemplo:<\/p>\n\n\n\n<ul>\n<li>Un <code>.php<\/code> dentro de <code>uploads<\/code><\/li>\n\n\n\n<li>Un archivo con nombre raro que acaba de aparecer<\/li>\n\n\n\n<li>Un script ofuscado dentro de una carpeta que no deber\u00eda tener PHP<\/li>\n<\/ul>\n\n\n\n<p>No subas a VirusTotal archivos con secretos, como:<\/p>\n\n\n\n<ul>\n<li><code>wp-config.php<\/code><\/li>\n\n\n\n<li>Copias completas de la base de datos<\/li>\n\n\n\n<li>Backups que incluyan contrase\u00f1as o datos de clientes<\/li>\n<\/ul>\n\n\n\n<!-- guia-para-limpiar-tu-wordpress-paso-a-paso -->\n<style>\n@import url('https:\/\/fonts.googleapis.com\/css2?family=Outfit:wght@400;500;600;700;800&display=swap');\n#comp-ld-904 {\n  --c-brand-dark: #37363d;\n  --c-brand-accent: #db7424;\n  --c-bg-soft: #f4f4f6;\n  --c-red: #ef4444;\n  --c-blue: #0ea5e9;\n  --c-emerald: #22c55e;\n  font-family: 'Outfit', system-ui, sans-serif;\n  color: #2b2931;\n  margin: 26px 0;\n}\n#comp-ld-904 .ld-shell {\n  position: relative;\n  padding: 24px;\n  border-radius: 28px;\n  background: linear-gradient(180deg, #fffdfa 0%, #f7f8fb 100%);\n  border: 1px solid rgba(219, 116, 36, 0.14);\n  box-shadow: 0 20px 45px rgba(55, 54, 61, 0.08);\n  overflow: hidden;\n}\n#comp-ld-904 .ld-shell::before {\n  content: '';\n  position: absolute;\n  inset: 96px 8% auto 8%;\n  height: 1px;\n  background: linear-gradient(90deg, rgba(219, 116, 36, 0.18), rgba(14, 165, 233, 0.16), rgba(34, 197, 94, 0.16));\n}\n#comp-ld-904 .ld-shell::after {\n  content: '';\n  position: absolute;\n  top: 18px;\n  right: -14px;\n  width: 160px;\n  height: 160px;\n  background: radial-gradient(circle, rgba(219, 116, 36, 0.16) 0%, rgba(219, 116, 36, 0) 72%);\n}\n#comp-ld-904 .ld-top {\n  display: flex;\n  flex-wrap: wrap;\n  align-items: center;\n  justify-content: space-between;\n  gap: 12px;\n  margin-bottom: 18px;\n}\n#comp-ld-904 .ld-kicker,\n#comp-ld-904 .ld-chip {\n  display: inline-flex;\n  align-items: center;\n  gap: 8px;\n  padding: 7px 12px;\n  border-radius: 999px;\n  font-size: 0.78rem;\n  font-weight: 700;\n}\n#comp-ld-904 .ld-kicker {\n  color: var(--c-brand-accent);\n  background: rgba(219, 116, 36, 0.12);\n}\n#comp-ld-904 .ld-chip {\n  color: var(--c-blue);\n  background: rgba(14, 165, 233, 0.12);\n}\n#comp-ld-904 .ld-title {\n  margin: 0 0 10px;\n  max-width: 60ch;\n  font-size: 1.22rem;\n  line-height: 1.2;\n  font-weight: 800;\n  color: var(--c-brand-dark);\n}\n#comp-ld-904 .ld-intro {\n  margin: 0 0 18px;\n  max-width: 65ch;\n  color: rgba(55, 54, 61, 0.82);\n  font-size: 0.95rem;\n}\n#comp-ld-904 .ld-board {\n  position: relative;\n  display: grid;\n  grid-template-columns: repeat(12, minmax(0, 1fr));\n  gap: 14px;\n}\n#comp-ld-904 .ld-card {\n  position: relative;\n  padding: 18px;\n  border-radius: 22px;\n  background: rgba(255, 255, 255, 0.92);\n  border: 1px solid rgba(55, 54, 61, 0.08);\n  box-shadow: 0 10px 26px rgba(55, 54, 61, 0.06);\n  transition: transform 0.28s ease, box-shadow 0.28s ease, border-color 0.28s ease;\n}\n#comp-ld-904 .ld-card:hover {\n  transform: translateY(-5px) scale(1.01);\n  border-color: rgba(219, 116, 36, 0.2);\n  box-shadow: 0 18px 34px rgba(219, 116, 36, 0.12);\n}\n#comp-ld-904 .ld-card:nth-child(2) {\n  transform: translateY(10px);\n}\n#comp-ld-904 .ld-card:nth-child(4) {\n  transform: translateY(-10px);\n}\n#comp-ld-904 .ld-card:nth-child(5) {\n  transform: translateY(8px);\n}\n#comp-ld-904 .ld-card:nth-child(2):hover,\n#comp-ld-904 .ld-card:nth-child(4):hover,\n#comp-ld-904 .ld-card:nth-child(5):hover {\n  transform: translateY(-2px) scale(1.01);\n}\n#comp-ld-904 .ld-card--wide {\n  grid-column: span 12;\n  background: linear-gradient(135deg, rgba(255, 255, 255, 0.96), rgba(244, 244, 246, 0.92));\n}\n#comp-ld-904 .ld-card--sm {\n  grid-column: span 4;\n}\n#comp-ld-904 .ld-card--md {\n  grid-column: span 6;\n}\n#comp-ld-904 .ld-head {\n  display: flex;\n  align-items: flex-start;\n  gap: 12px;\n  margin-bottom: 10px;\n}\n#comp-ld-904 .ld-icon {\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  width: 44px;\n  height: 44px;\n  border-radius: 16px;\n  background: rgba(219, 116, 36, 0.1);\n  color: var(--c-brand-accent);\n  flex: 0 0 auto;\n}\n#comp-ld-904 .ld-tag {\n  display: inline-flex;\n  align-items: center;\n  padding: 4px 9px;\n  border-radius: 999px;\n  font-size: 0.72rem;\n  font-weight: 700;\n  letter-spacing: 0.03em;\n  text-transform: uppercase;\n  color: var(--c-blue);\n  background: rgba(14, 165, 233, 0.12);\n}\n#comp-ld-904 .ld-card strong {\n  display: block;\n  margin-top: 6px;\n  color: var(--c-brand-dark);\n  font-size: 0.98rem;\n}\n#comp-ld-904 .ld-card p {\n  margin: 0;\n  color: rgba(55, 54, 61, 0.78);\n  font-size: 0.9rem;\n  line-height: 1.5;\n}\n#comp-ld-904 .ld-mini-list {\n  margin: 12px 0 0;\n  padding: 0;\n  list-style: none;\n  display: grid;\n  gap: 8px;\n}\n#comp-ld-904 .ld-mini-list li {\n  display: flex;\n  gap: 9px;\n  align-items: flex-start;\n  font-size: 0.87rem;\n  color: rgba(55, 54, 61, 0.82);\n}\n#comp-ld-904 .ld-mini-list li::before {\n  content: '';\n  width: 8px;\n  height: 8px;\n  margin-top: 6px;\n  border-radius: 999px;\n  background: linear-gradient(135deg, var(--c-brand-accent), #ffb780);\n  flex: 0 0 auto;\n}\n@media (max-width: 980px) {\n  #comp-ld-904 .ld-card--sm,\n  #comp-ld-904 .ld-card--md {\n    grid-column: span 6;\n  }\n}\n@media (max-width: 640px) {\n  #comp-ld-904 .ld-shell {\n    padding: 20px;\n  }\n  #comp-ld-904 .ld-shell::before {\n    display: none;\n  }\n  #comp-ld-904 .ld-card--sm,\n  #comp-ld-904 .ld-card--md,\n  #comp-ld-904 .ld-card--wide {\n    grid-column: span 12;\n  }\n  #comp-ld-904 .ld-card:nth-child(2),\n  #comp-ld-904 .ld-card:nth-child(4),\n  #comp-ld-904 .ld-card:nth-child(5) {\n    transform: none;\n  }\n}\n<\/style>\n<div id=\"comp-ld-904\">\n  <div class=\"ld-shell\">\n    <div class=\"ld-top\">\n      <span class=\"ld-kicker\">\n        <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" fill=\"none\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M12 3a9 9 0 1 0 9 9\"><\/path><path d=\"M12 7v5l3 3\"><\/path><\/svg>\n        Orden de limpieza\n      <\/span>\n      <span class=\"ld-chip\">Clean Room Board<\/span>\n    <\/div>\n    <div class=\"ld-title\">Cinco capas que conviene tocar para no limpiar en falso<\/div>\n    <div class=\"ld-board\">\n      <article class=\"ld-card ld-card--wide\">\n        <div class=\"ld-head\">\n          <span class=\"ld-icon\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" fill=\"none\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M12 2v4\"><\/path><path d=\"M12 18v4\"><\/path><path d=\"m4.93 4.93 2.83 2.83\"><\/path><path d=\"m16.24 16.24 2.83 2.83\"><\/path><path d=\"M2 12h4\"><\/path><path d=\"M18 12h4\"><\/path><path d=\"m4.93 19.07 2.83-2.83\"><\/path><path d=\"m16.24 7.76 2.83-2.83\"><\/path><\/svg><\/span>\n          <div>\n            <span class=\"ld-tag\">Primero<\/span>\n            <strong>No te saltes capas<\/strong>\n            <p>Restaurar, escanear o cambiar una contrase\u00f1a ayuda, pero la limpieza aguanta mejor cuando cierras varios frentes a la vez.<\/p>\n          <\/div>\n        <\/div>\n      <\/article>\n      <article class=\"ld-card ld-card--sm\">\n        <div class=\"ld-head\">\n          <span class=\"ld-icon\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" fill=\"none\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M20 6H4\"><\/path><path d=\"M4 6v12h16V6\"><\/path><path d=\"M9 10h6\"><\/path><path d=\"M9 14h4\"><\/path><\/svg><\/span>\n          <div>\n            <span class=\"ld-tag\">Capa 1<\/span>\n            <strong>Copia del desastre<\/strong>\n            <p>Guarda archivos, base de datos y pruebas antes de tocar nada serio.<\/p>\n          <\/div>\n        <\/div>\n        <ul class=\"ld-mini-list\">\n          <li>Te sirve para comparar si el malware vuelve.<\/li>\n          <li>Evita perder contenido o ajustes \u00fatiles.<\/li>\n        <\/ul>\n      <\/article>\n      <article class=\"ld-card ld-card--sm\">\n        <div class=\"ld-head\">\n          <span class=\"ld-icon\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" fill=\"none\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M15 7a4 4 0 1 0-8 0v3\"><\/path><rect x=\"4\" y=\"10\" width=\"16\" height=\"10\" rx=\"2\"><\/rect><path d=\"M12 14v2\"><\/path><\/svg><\/span>\n          <div>\n            <span class=\"ld-tag\">Capa 2<\/span>\n            <strong>Credenciales y salts<\/strong>\n            <p>Cambia Plesk, FTP, base de datos y usuarios. Luego invalida sesiones con nuevas keys.<\/p>\n          <\/div>\n        <\/div>\n        <ul class=\"ld-mini-list\">\n          <li>Si hab\u00eda cookies robadas, las expulsas.<\/li>\n          <li>No dejes la misma puerta abierta.<\/li>\n        <\/ul>\n      <\/article>\n      <article class=\"ld-card ld-card--sm\">\n        <div class=\"ld-head\">\n          <span class=\"ld-icon\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" fill=\"none\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><circle cx=\"11\" cy=\"11\" r=\"7\"><\/circle><path d=\"m21 21-4.3-4.3\"><\/path><path d=\"M11 8v6\"><\/path><path d=\"M8 11h6\"><\/path><\/svg><\/span>\n          <div>\n            <span class=\"ld-tag\">Capa 3<\/span>\n            <strong>Escaneo con criterio<\/strong>\n            <p>Wordfence ayuda a ver cambios sospechosos. VirusTotal puede apoyar en archivos concretos.<\/p>\n          <\/div>\n        <\/div>\n        <ul class=\"ld-mini-list\">\n          <li>No elimines todo en autom\u00e1tico sin mirar.<\/li>\n          <li>No subas archivos con secretos.<\/li>\n        <\/ul>\n      <\/article>\n      <article class=\"ld-card ld-card--md\">\n        <div class=\"ld-head\">\n          <span class=\"ld-icon\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" fill=\"none\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M4 4h16v4H4z\"><\/path><path d=\"M4 12h16v8H4z\"><\/path><path d=\"M9 8v4\"><\/path><path d=\"M15 8v4\"><\/path><\/svg><\/span>\n          <div>\n            <span class=\"ld-tag\">Capa 4<\/span>\n            <strong>Reponer core limpio<\/strong>\n            <p>Si el n\u00facleo est\u00e1 tocado, vuelve a subir `wp-admin`, `wp-includes` y archivos ra\u00edz sanos.<\/p>\n          <\/div>\n        <\/div>\n        <ul class=\"ld-mini-list\">\n          <li>No reemplaces `wp-content` entero.<\/li>\n          <li>No pises `wp-config.php`.<\/li>\n          <li>Si WordPress pide actualizaci\u00f3n de base, hazla al final.<\/li>\n        <\/ul>\n      <\/article>\n      <article class=\"ld-card ld-card--md\">\n        <div class=\"ld-head\">\n          <span class=\"ld-icon\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" fill=\"none\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M3 5h18\"><\/path><path d=\"M3 12h18\"><\/path><path d=\"M3 19h18\"><\/path><path d=\"M8 5v14\"><\/path><\/svg><\/span>\n          <div>\n            <span class=\"ld-tag\">Capa 5<\/span>\n            <strong>Base de datos y uploads<\/strong>\n            <p>Muchos restos quedan en admins fantasma, opciones raras o PHP colado dentro de `uploads`.<\/p>\n          <\/div>\n        <\/div>\n        <ul class=\"ld-mini-list\">\n          <li>Revisa tablas de usuarios, metadatos y opciones.<\/li>\n          <li>Si hay PHP en `uploads`, tr\u00e1talo como sospechoso.<\/li>\n          <li>Borra themes nulled y plugins abandonados.<\/li>\n        <\/ul>\n      <\/article>\n    <\/div>\n  <\/div>\n<\/div>\n<!-- \/guia-para-limpiar-tu-wordpress-paso-a-paso -->\n\n\n\n<p><\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"aioseo-reinstala-los-archivos-core-de-wordpress\">Reinstala los archivos core de WordPress<\/h3>\n\n\n\n<p>Si han tocado el n\u00facleo de WordPress, lo m\u00e1s limpio es <strong>reponer los archivos core originales<\/strong>.<\/p>\n\n\n\n<p>La v\u00eda sencilla en Plesk es esta:<\/p>\n\n\n\n<ul>\n<li>Descarga la \u00faltima versi\u00f3n estable desde WordPress.org.<\/li>\n\n\n\n<li>En <strong>Administrador de archivos<\/strong> de Plesk, entra en la ra\u00edz de la web.<\/li>\n\n\n\n<li><strong>Borra <code>wp-admin<\/code> y <code>wp-includes<\/code><\/strong>.<\/li>\n\n\n\n<li>Sube las carpetas nuevas <code>wp-admin<\/code> y <code>wp-includes<\/code>.<\/li>\n\n\n\n<li>Sobrescribe tambi\u00e9n los archivos de la ra\u00edz como <code>index.php<\/code>, <code>wp-login.php<\/code>, <code>wp-settings.php<\/code> y similares.<\/li>\n<\/ul>\n\n\n\n<p>No borres estas dos cosas:<\/p>\n\n\n\n<ul>\n<li><code>wp-content<\/code><\/li>\n\n\n\n<li><code>wp-config.php<\/code><\/li>\n<\/ul>\n\n\n\n<p>Despu\u00e9s entra en <code>\/wp-admin\/<\/code>.<\/p>\n\n\n\n<p>Si WordPress pide actualizar la base de datos, hazlo.<\/p>\n\n\n\n<p>Este proceso sigue la l\u00f3gica del m\u00e9todo oficial de <a href=\"https:\/\/wordpress.org\/documentation\/article\/updating-wordpress\/#manual-update\">actualizaci\u00f3n manual de WordPress<\/a>, adaptado a Plesk para hacerlo sin terminal.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"aioseo-revisa-tu-base-de-datos-y-la-carpeta-uploads\">Revisa tu base de datos y la carpeta uploads<\/h3>\n\n\n\n<p>Aqu\u00ed suelen quedarse escondidos restos muy molestos.<\/p>\n\n\n\n<p>En la base de datos revisa, como m\u00ednimo:<\/p>\n\n\n\n<ul>\n<li>La tabla <code>*_users<\/code> para detectar <strong>usuarios administradores fantasma<\/strong><\/li>\n\n\n\n<li>La tabla <code>*_usermeta<\/code> si sospechas que a un usuario normal le han dado permisos de administrador<\/li>\n\n\n\n<li>La tabla <code>*_options<\/code> si ves URLs raras, scripts inyectados o cambios que no reconoces<\/li>\n<\/ul>\n\n\n\n<p>En la carpeta <code>uploads<\/code>, busca esto:<\/p>\n\n\n\n<ul>\n<li>Archivos <code>.php<\/code>, <code>.phtml<\/code> o similares<\/li>\n\n\n\n<li>Carpetas reci\u00e9n creadas con nombres aleatorios<\/li>\n\n\n\n<li>Ficheros que no son im\u00e1genes, PDFs, v\u00eddeos o documentos normales de la web<\/li>\n<\/ul>\n\n\n\n<p>En una instalaci\u00f3n WordPress sana, <code>uploads<\/code> no deber\u00eda ejecutar PHP.<\/p>\n\n\n\n<p>Si encuentras PHP ah\u00ed, tr\u00e1talo como sospechoso hasta demostrar lo contrario.<\/p>\n\n\n\n<p>Tambi\u00e9n conviene revisar:<\/p>\n\n\n\n<ul>\n<li>Plugins y temas que ya no usas<\/li>\n\n\n\n<li>Themes nulled o pirateados<\/li>\n\n\n\n<li>Plugins abandonados o sin actualizar desde hace mucho<\/li>\n<\/ul>\n\n\n\n<p>Lo que no uses, b\u00f3rralo.<\/p>\n\n\n\n<p>Desactivado no significa seguro.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-saca-tu-web-de-la-lista-negra-de-google\">Saca tu web de la lista negra de Google<\/h2>\n\n\n\n<p>Si <strong>Google <\/strong>detect\u00f3 <strong>malware<\/strong>, <strong>phishing <\/strong>o contenido peligroso, puede mostrar avisos en Chrome o etiquetas de seguridad en los resultados.<\/p>\n\n\n\n<p>La prioridad aqu\u00ed es no pedir la revisi\u00f3n demasiado pronto. Primero limpia todo.<\/p>\n\n\n\n<p>Despu\u00e9s entra en Search Console y revisa el <a href=\"https:\/\/support.google.com\/webmasters\/answer\/9044101?hl=es\">Informe \"Problemas de seguridad\"<\/a>.<\/p>\n\n\n\n<p>Cuando ya no queden restos:<\/p>\n\n\n\n<ul>\n<li>Abre la incidencia dentro de Search Console.<\/li>\n\n\n\n<li>Comprueba ejemplos de URLs afectadas.<\/li>\n\n\n\n<li>Verifica que la limpieza est\u00e1 hecha en <strong>todas<\/strong> las p\u00e1ginas comprometidas, no solo en una muestra.<\/li>\n\n\n\n<li>Pulsa <strong>Solicitar revisi\u00f3n<\/strong> y explica qu\u00e9 has corregido.<\/li>\n<\/ul>\n\n\n\n<p>Si adem\u00e1s ves spam SEO o p\u00e1ginas falsas indexadas, revisa tambi\u00e9n el <a href=\"https:\/\/support.google.com\/webmasters\/answer\/9044175?hl=es\">informe de <strong>Acciones manuales<\/strong><\/a>. No suele ser la parte principal del problema, pero conviene descartarla.<\/p>\n\n\n\n<p>Google puede tardar varios d\u00edas o incluso semanas en retirar los avisos. Si env\u00edas la solicitud sin haber limpiado bien, lo normal es alargar el proceso.<\/p>\n\n\n\n<!-- saca-tu-web-de-la-lista-negra-de-google -->\n<style>\n@import url('https:\/\/fonts.googleapis.com\/css2?family=Outfit:wght@400;500;600;700;800&display=swap');\n#comp-ld-905 {\n  --c-brand-dark: #37363d;\n  --c-brand-accent: #db7424;\n  --c-bg-soft: #f4f4f6;\n  --c-blue: #0ea5e9;\n  --c-emerald: #22c55e;\n  font-family: 'Outfit', system-ui, sans-serif;\n  color: #2b2931;\n  margin: 24px 0;\n}\n#comp-ld-905 .ld-shell {\n  position: relative;\n  padding: 24px;\n  border-radius: 24px;\n  background: linear-gradient(180deg, #f8fbff 0%, #ffffff 100%);\n  border: 1px solid rgba(14, 165, 233, 0.14);\n  box-shadow: 0 14px 34px rgba(55, 54, 61, 0.07);\n}\n#comp-ld-905 .ld-top {\n  display: flex;\n  flex-wrap: wrap;\n  align-items: center;\n  justify-content: space-between;\n  gap: 12px;\n  margin-bottom: 18px;\n}\n#comp-ld-905 .ld-kicker,\n#comp-ld-905 .ld-side-tag {\n  display: inline-flex;\n  align-items: center;\n  gap: 8px;\n  padding: 7px 12px;\n  border-radius: 999px;\n  font-size: 0.78rem;\n  font-weight: 700;\n}\n#comp-ld-905 .ld-kicker {\n  color: var(--c-blue);\n  background: rgba(14, 165, 233, 0.12);\n}\n#comp-ld-905 .ld-side-tag {\n  color: var(--c-brand-accent);\n  background: rgba(219, 116, 36, 0.12);\n}\n#comp-ld-905 .ld-title {\n  margin: 0 0 8px;\n  font-size: 1.2rem;\n  line-height: 1.2;\n  font-weight: 800;\n  color: var(--c-brand-dark);\n}\n#comp-ld-905 .ld-intro {\n  margin: 0 0 18px;\n  max-width: 62ch;\n  font-size: 0.95rem;\n  color: rgba(55, 54, 61, 0.8);\n}\n#comp-ld-905 .ld-flow {\n  position: relative;\n  display: grid;\n  grid-template-columns: repeat(3, minmax(0, 1fr));\n  gap: 14px;\n  margin-bottom: 14px;\n}\n#comp-ld-905 .ld-flow::before {\n  content: '';\n  position: absolute;\n  left: 8%;\n  right: 8%;\n  top: 28px;\n  height: 1px;\n  background: linear-gradient(90deg, rgba(14, 165, 233, 0.16), rgba(34, 197, 94, 0.18));\n}\n#comp-ld-905 .ld-step {\n  position: relative;\n  padding: 18px;\n  border-radius: 20px;\n  background: #ffffff;\n  border: 1px solid rgba(55, 54, 61, 0.08);\n  box-shadow: 0 10px 24px rgba(55, 54, 61, 0.05);\n  transition: transform 0.25s ease, box-shadow 0.25s ease;\n}\n#comp-ld-905 .ld-step:hover {\n  transform: translateY(-4px);\n  box-shadow: 0 14px 28px rgba(14, 165, 233, 0.12);\n}\n#comp-ld-905 .ld-count {\n  width: 38px;\n  height: 38px;\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  margin-bottom: 12px;\n  border-radius: 14px;\n  background: rgba(14, 165, 233, 0.12);\n  color: var(--c-blue);\n  font-size: 0.84rem;\n  font-weight: 800;\n}\n#comp-ld-905 .ld-step strong {\n  display: block;\n  margin-bottom: 6px;\n  color: var(--c-brand-dark);\n  font-size: 0.98rem;\n}\n#comp-ld-905 .ld-step p,\n#comp-ld-905 .ld-foot p {\n  margin: 0;\n  color: rgba(55, 54, 61, 0.8);\n  font-size: 0.9rem;\n  line-height: 1.5;\n}\n#comp-ld-905 .ld-foot {\n  display: grid;\n  grid-template-columns: minmax(0, 1.4fr) minmax(220px, 0.8fr);\n  gap: 12px;\n}\n#comp-ld-905 .ld-note,\n#comp-ld-905 .ld-side {\n  padding: 14px 16px;\n  border-radius: 18px;\n  border: 1px solid rgba(55, 54, 61, 0.08);\n}\n#comp-ld-905 .ld-note {\n  background: var(--c-bg-soft);\n}\n#comp-ld-905 .ld-side {\n  background: rgba(34, 197, 94, 0.08);\n  border-color: rgba(34, 197, 94, 0.16);\n}\n#comp-ld-905 .ld-note strong,\n#comp-ld-905 .ld-side strong {\n  display: block;\n  margin-bottom: 6px;\n  color: var(--c-brand-dark);\n  font-size: 0.95rem;\n}\n@media (max-width: 860px) {\n  #comp-ld-905 .ld-flow,\n  #comp-ld-905 .ld-foot {\n    grid-template-columns: 1fr;\n  }\n}\n@media (max-width: 640px) {\n  #comp-ld-905 .ld-shell {\n    padding: 20px;\n  }\n  #comp-ld-905 .ld-flow::before {\n    display: none;\n  }\n}\n<\/style>\n<div id=\"comp-ld-905\">\n  <div class=\"ld-shell\">\n    <div class=\"ld-top\">\n      <span class=\"ld-kicker\">\n        <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" fill=\"none\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M3 12h18\"><\/path><path d=\"m16 5 5 7-5 7\"><\/path><\/svg>\n        Search Console despu\u00e9s de limpiar\n      <\/span>\n      <span class=\"ld-side-tag\">No pidas revisi\u00f3n demasiado pronto<\/span>\n    <\/div>\n    <div class=\"ld-title\">Para salir de la lista negra, Google quiere ver limpieza completa y bien explicada<\/div>\n    <div class=\"ld-flow\">\n      <article class=\"ld-step\">\n        <span class=\"ld-count\">01<\/span>\n        <strong>Limpia todo el sitio<\/strong>\n        <p>No vale con arreglar una URL de muestra. Google espera que el problema desaparezca en toda la instalaci\u00f3n.<\/p>\n      <\/article>\n      <article class=\"ld-step\">\n        <span class=\"ld-count\">02<\/span>\n        <strong>Comprueba ejemplos reales<\/strong>\n        <p>Revisa las URLs afectadas, el informe de Problemas de seguridad y cualquier se\u00f1al de contenido peligroso o spam.<\/p>\n      <\/article>\n      <article class=\"ld-step\">\n        <span class=\"ld-count\">03<\/span>\n        <strong>Solicita revisi\u00f3n con contexto<\/strong>\n        <p>Explica qu\u00e9 has corregido y qu\u00e9 medidas has tomado para que no vuelva a ocurrir.<\/p>\n      <\/article>\n    <\/div>\n    <div class=\"ld-foot\">\n      <article class=\"ld-note\">\n        <strong>Checklist m\u00ednima antes de enviar<\/strong>\n        <p>Sin malware visible, sin redirecciones raras, sin usuarios admin fantasma, sin URLs falsas activas y con el origen del problema ya cerrado.<\/p>\n      <\/article>\n      <article class=\"ld-side\">\n        <strong>Extra \u00fatil<\/strong>\n        <p>Si hubo spam SEO, revisa tambi\u00e9n Acciones manuales. No suele ser el foco principal, pero conviene descartarlo.<\/p>\n      <\/article>\n    <\/div>\n  <\/div>\n<\/div>\n<!-- \/saca-tu-web-de-la-lista-negra-de-google -->\n\n\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-recuperacion-seo-post-hackeo\">Recuperaci\u00f3n SEO post hackeo<\/h2>\n\n\n\n<p>No siempre hace falta montar una operaci\u00f3n SEO enorme.<\/p>\n\n\n\n<p>Si detectaste el hackeo pronto y Google apenas lleg\u00f3 a indexar basura, puede bastar con limpiar, pedir revisi\u00f3n y reenviar se\u00f1ales correctas.<\/p>\n\n\n\n<p>Revisa esto con calma:<\/p>\n\n\n\n<ul>\n<li>Busca en Google <code>site:tudominio.com<\/code> para detectar URLs de spam que sigan vivas.<\/li>\n\n\n\n<li>Si aparecieron URLs falsas de spam japon\u00e9s, farmacia o apuestas, devuelve <strong>410 Gone<\/strong> en esas rutas si ya no deben existir.<\/li>\n\n\n\n<li>Sube un <strong>sitemap limpio<\/strong> a Search Console con solo las URLs v\u00e1lidas.<\/li>\n\n\n\n<li>Comprueba que las p\u00e1ginas buenas siguen respondiendo con <code>200<\/code> y no se han quedado rotas o redirigidas.<\/li>\n<\/ul>\n\n\n\n<p>Si el ataque cre\u00f3 miles de p\u00e1ginas basura, no intentes taparlo solo con redirecciones a la home. Es mejor devolver <strong>410<\/strong> a lo que ya no existe y dejar claro a Google qu\u00e9 URLs siguen siendo reales.<\/p>\n\n\n\n<p>Durante unas semanas, vigila:<\/p>\n\n\n\n<ul>\n<li>impresiones y clics<\/li>\n\n\n\n<li>p\u00e1ginas indexadas<\/li>\n\n\n\n<li>t\u00e9rminos de b\u00fasqueda raros<\/li>\n\n\n\n<li>nuevas URLs que no reconozcas<\/li>\n<\/ul>\n\n\n\n<p>Si los datos vuelven a su sitio y no reaparece spam, vas por buen camino.<\/p>\n\n\n\n<!-- recuperacion-seo-post-hackeo -->\n<style>\n@import url('https:\/\/fonts.googleapis.com\/css2?family=Outfit:wght@400;500;600;700;800&display=swap');\n#comp-ld-906 {\n  --c-brand-dark: #37363d;\n  --c-brand-accent: #db7424;\n  --c-bg-soft: #f4f4f6;\n  --c-blue: #0ea5e9;\n  --c-emerald: #22c55e;\n  --c-red: #ef4444;\n  font-family: 'Outfit', system-ui, sans-serif;\n  color: #2c2a32;\n  margin: 24px 0;\n}\n#comp-ld-906 .ld-shell {\n  padding: 24px;\n  border-radius: 24px;\n  background: linear-gradient(180deg, #ffffff 0%, #f9fbfd 100%);\n  border: 1px solid rgba(55, 54, 61, 0.08);\n  box-shadow: 0 14px 34px rgba(55, 54, 61, 0.06);\n}\n#comp-ld-906 .ld-kicker {\n  display: inline-flex;\n  align-items: center;\n  gap: 8px;\n  margin-bottom: 10px;\n  padding: 7px 12px;\n  border-radius: 999px;\n  font-size: 0.78rem;\n  font-weight: 700;\n  color: var(--c-blue);\n  background: rgba(14, 165, 233, 0.12);\n}\n#comp-ld-906 .ld-title {\n  margin: 0 0 8px;\n  font-size: 1.2rem;\n  line-height: 1.2;\n  font-weight: 800;\n  color: var(--c-brand-dark);\n}\n#comp-ld-906 .ld-intro {\n  margin: 0 0 18px;\n  max-width: 63ch;\n  font-size: 0.95rem;\n  color: rgba(55, 54, 61, 0.8);\n}\n#comp-ld-906 .ld-grid {\n  display: grid;\n  grid-template-columns: repeat(4, minmax(0, 1fr));\n  gap: 12px;\n  margin-bottom: 14px;\n}\n#comp-ld-906 .ld-stat {\n  padding: 16px;\n  border-radius: 18px;\n  background: #fff;\n  border: 1px solid rgba(55, 54, 61, 0.08);\n  transition: transform 0.25s ease, box-shadow 0.25s ease;\n}\n#comp-ld-906 .ld-stat:hover {\n  transform: translateY(-4px);\n  box-shadow: 0 14px 28px rgba(14, 165, 233, 0.12);\n}\n#comp-ld-906 .ld-stat strong {\n  display: block;\n  margin: 8px 0 4px;\n  font-size: 0.97rem;\n  color: var(--c-brand-dark);\n}\n#comp-ld-906 .ld-stat p,\n#comp-ld-906 .ld-note p,\n#comp-ld-906 .ld-warning p {\n  margin: 0;\n  font-size: 0.89rem;\n  line-height: 1.5;\n  color: rgba(55, 54, 61, 0.78);\n}\n#comp-ld-906 .ld-icon {\n  width: 40px;\n  height: 40px;\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  border-radius: 14px;\n  background: rgba(219, 116, 36, 0.1);\n  color: var(--c-brand-accent);\n}\n#comp-ld-906 .ld-bottom {\n  display: grid;\n  grid-template-columns: minmax(0, 1.2fr) minmax(220px, 0.8fr);\n  gap: 12px;\n}\n#comp-ld-906 .ld-note,\n#comp-ld-906 .ld-warning {\n  padding: 14px 16px;\n  border-radius: 18px;\n  border: 1px solid rgba(55, 54, 61, 0.08);\n}\n#comp-ld-906 .ld-note {\n  background: rgba(34, 197, 94, 0.08);\n  border-color: rgba(34, 197, 94, 0.16);\n}\n#comp-ld-906 .ld-warning {\n  background: rgba(239, 68, 68, 0.06);\n  border-color: rgba(239, 68, 68, 0.14);\n}\n#comp-ld-906 .ld-note strong,\n#comp-ld-906 .ld-warning strong {\n  display: block;\n  margin-bottom: 6px;\n  color: var(--c-brand-dark);\n  font-size: 0.95rem;\n}\n@media (max-width: 920px) {\n  #comp-ld-906 .ld-grid {\n    grid-template-columns: repeat(2, minmax(0, 1fr));\n  }\n  #comp-ld-906 .ld-bottom {\n    grid-template-columns: 1fr;\n  }\n}\n@media (max-width: 640px) {\n  #comp-ld-906 .ld-shell {\n    padding: 20px;\n  }\n  #comp-ld-906 .ld-grid {\n    grid-template-columns: 1fr;\n  }\n}\n<\/style>\n<div id=\"comp-ld-906\">\n  <div class=\"ld-shell\">\n    <span class=\"ld-kicker\">\n      <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" fill=\"none\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M3 3v18h18\"><\/path><path d=\"m7 15 4-4 3 3 5-7\"><\/path><\/svg>\n      Recuperaci\u00f3n de se\u00f1ales SEO\n    <\/span>\n    <div class=\"ld-title\">Despu\u00e9s del hackeo, lo importante es enviar se\u00f1ales limpias y no crear ruido nuevo<\/div>\n    <div class=\"ld-grid\">\n      <article class=\"ld-stat\">\n        <span class=\"ld-icon\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" fill=\"none\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><circle cx=\"11\" cy=\"11\" r=\"7\"><\/circle><path d=\"m21 21-4.3-4.3\"><\/path><\/svg><\/span>\n        <strong>Busca el rastro<\/strong>\n        <p>Haz consultas `site:` y localiza URLs de spam que todav\u00eda sigan vivas o indexadas.<\/p>\n      <\/article>\n      <article class=\"ld-stat\">\n        <span class=\"ld-icon\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" fill=\"none\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M4 7h16\"><\/path><path d=\"M7 12h10\"><\/path><path d=\"M10 17h4\"><\/path><\/svg><\/span>\n        <strong>410 para basura<\/strong>\n        <p>Si las URLs falsas ya no deben existir, mejor un `410 Gone` que esconder todo detr\u00e1s de la home.<\/p>\n      <\/article>\n      <article class=\"ld-stat\">\n        <span class=\"ld-icon\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" fill=\"none\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M4 4h16v16H4z\"><\/path><path d=\"M8 8h8\"><\/path><path d=\"M8 12h8\"><\/path><path d=\"M8 16h5\"><\/path><\/svg><\/span>\n        <strong>Sitemap limpio<\/strong>\n        <p>Env\u00eda solo las URLs v\u00e1lidas para reforzar qu\u00e9 p\u00e1ginas siguen formando parte del sitio real.<\/p>\n      <\/article>\n      <article class=\"ld-stat\">\n        <span class=\"ld-icon\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" fill=\"none\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M12 6v6l4 2\"><\/path><circle cx=\"12\" cy=\"12\" r=\"9\"><\/circle><\/svg><\/span>\n        <strong>Vigila 2-4 semanas<\/strong>\n        <p>Impresiones, clics, indexaci\u00f3n y t\u00e9rminos raros te dir\u00e1n si el problema desapareci\u00f3 o si algo sigue goteando.<\/p>\n      <\/article>\n    <\/div>\n    <div class=\"ld-bottom\">\n      <article class=\"ld-note\">\n        <strong>Buena se\u00f1al<\/strong>\n        <p>Las p\u00e1ginas sanas responden con `200`, el sitemap ya solo lista URLs v\u00e1lidas y dejan de aparecer consultas o rutas extra\u00f1as.<\/p>\n      <\/article>\n      <article class=\"ld-warning\">\n        <strong>Evita este atajo<\/strong>\n        <p>No tapes miles de URLs basura con una redirecci\u00f3n masiva a la home. Para Google suele ser una se\u00f1al mucho menos limpia que un `410` bien aplicado.<\/p>\n      <\/article>\n    <\/div>\n  <\/div>\n<\/div>\n<!-- \/recuperacion-seo-post-hackeo -->\n\n\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-como-evitar-futuros-hackeos-en-tu-servidor\">C\u00f3mo evitar futuros hackeos en tu servidor<\/h2>\n\n\n\n<p>Una limpieza buena no termina cuando la web vuelve a abrir. Termina cuando cierras la v\u00eda de entrada.<\/p>\n\n\n\n<p>Qu\u00e9 conviene dejar hecho:<\/p>\n\n\n\n<ul>\n<li><strong>Actualiza WordPress, plugins y temas<\/strong> en cuanto salga un parche de seguridad.<\/li>\n\n\n\n<li><strong>Borra<\/strong> plugins y themes que no uses.<\/li>\n\n\n\n<li><strong>No instales themes piratas o plugins nulled<\/strong>.<\/li>\n\n\n\n<li>Usa <strong>contrase\u00f1as \u00fanicas y largas<\/strong> para Plesk, WordPress, FTP y base de datos.<\/li>\n\n\n\n<li>Activa <strong>doble factor<\/strong> si tu plugin de seguridad lo permite.<\/li>\n\n\n\n<li>Limita el n\u00famero de administradores al m\u00ednimo.<\/li>\n\n\n\n<li>Revisa de forma peri\u00f3dica los usuarios, los cambios de archivos y los avisos del hosting.<\/li>\n<\/ul>\n\n\n\n<p>Si quieres reforzar la parte preventiva, ap\u00f3yate en un buen plugin de seguridad para WordPress y en una rutina de revisi\u00f3n m\u00ednima cada mes.<\/p>\n\n\n\n<p>Tambi\u00e9n ayuda trabajar sobre un entorno estable, con copias, panel claro y soporte que conozca WordPress. En Loading eso encaja especialmente bien con el <a href=\"https:\/\/www.loading.es\/hosting-wordpress\/index.html\" target=\"_blank\" rel=\"noopener\" title=\"hosting WordPress en Loading\">hosting WordPress<\/a>, pero la clave real sigue siendo esta: <strong>actualizar, revisar y eliminar lo que no usas<\/strong>.<\/p>\n\n\n\n<!-- como-evitar-futuros-hackeos-en-tu-servidor -->\n<style>\n@import url('https:\/\/fonts.googleapis.com\/css2?family=Outfit:wght@400;500;600;700;800&display=swap');\n#comp-ld-907 {\n  --c-brand-dark: #37363d;\n  --c-brand-accent: #db7424;\n  --c-bg-soft: #f4f4f6;\n  --c-blue: #0ea5e9;\n  --c-emerald: #22c55e;\n  font-family: 'Outfit', system-ui, sans-serif;\n  color: #2d2b33;\n  margin: 24px 0;\n}\n#comp-ld-907 .ld-shell {\n  position: relative;\n  padding: 24px;\n  border-radius: 24px;\n  background: linear-gradient(180deg, #fffdf8 0%, #ffffff 100%);\n  border: 1px solid rgba(219, 116, 36, 0.14);\n  box-shadow: 0 16px 36px rgba(55, 54, 61, 0.07);\n}\n#comp-ld-907 .ld-kicker {\n  display: inline-flex;\n  align-items: center;\n  gap: 8px;\n  margin-bottom: 10px;\n  padding: 7px 12px;\n  border-radius: 999px;\n  font-size: 0.78rem;\n  font-weight: 700;\n  color: var(--c-brand-accent);\n  background: rgba(219, 116, 36, 0.12);\n}\n#comp-ld-907 .ld-title {\n  margin: 0 0 8px;\n  font-size: 1.2rem;\n  line-height: 1.2;\n  font-weight: 800;\n  color: var(--c-brand-dark);\n}\n#comp-ld-907 .ld-intro {\n  margin: 0 0 18px;\n  max-width: 62ch;\n  font-size: 0.95rem;\n  color: rgba(55, 54, 61, 0.8);\n}\n#comp-ld-907 .ld-grid {\n  display: grid;\n  grid-template-columns: repeat(3, minmax(0, 1fr));\n  gap: 12px;\n}\n#comp-ld-907 .ld-card {\n  position: relative;\n  padding: 16px;\n  border-radius: 18px;\n  background: #fff;\n  border: 1px solid rgba(55, 54, 61, 0.08);\n  transition: transform 0.24s ease, box-shadow 0.24s ease, border-color 0.24s ease;\n}\n#comp-ld-907 .ld-card:hover {\n  transform: translateY(-4px);\n  border-color: rgba(34, 197, 94, 0.18);\n  box-shadow: 0 14px 28px rgba(34, 197, 94, 0.12);\n}\n#comp-ld-907 .ld-icon {\n  width: 40px;\n  height: 40px;\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  border-radius: 14px;\n  background: rgba(34, 197, 94, 0.12);\n  color: var(--c-emerald);\n}\n#comp-ld-907 .ld-card strong {\n  display: block;\n  margin: 9px 0 5px;\n  font-size: 0.97rem;\n  color: var(--c-brand-dark);\n}\n#comp-ld-907 .ld-card p {\n  margin: 0;\n  font-size: 0.89rem;\n  line-height: 1.5;\n  color: rgba(55, 54, 61, 0.78);\n}\n#comp-ld-907 .ld-foot {\n  margin-top: 12px;\n  padding: 14px 16px;\n  border-radius: 18px;\n  background: var(--c-bg-soft);\n  border: 1px solid rgba(55, 54, 61, 0.08);\n}\n#comp-ld-907 .ld-foot strong {\n  display: block;\n  margin-bottom: 6px;\n  color: var(--c-brand-dark);\n  font-size: 0.95rem;\n}\n#comp-ld-907 .ld-foot p {\n  margin: 0;\n  color: rgba(55, 54, 61, 0.8);\n  font-size: 0.9rem;\n  line-height: 1.5;\n}\n@media (max-width: 920px) {\n  #comp-ld-907 .ld-grid {\n    grid-template-columns: repeat(2, minmax(0, 1fr));\n  }\n}\n@media (max-width: 640px) {\n  #comp-ld-907 .ld-shell {\n    padding: 20px;\n  }\n  #comp-ld-907 .ld-grid {\n    grid-template-columns: 1fr;\n  }\n}\n<\/style>\n<div id=\"comp-ld-907\">\n  <div class=\"ld-shell\">\n    <span class=\"ld-kicker\">\n      <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" fill=\"none\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M12 2 4 5v6c0 5 3.4 8.3 8 10 4.6-1.7 8-5 8-10V5l-8-3Z\"><\/path><path d=\"m9 12 2 2 4-4\"><\/path><\/svg>\n      Endurece antes de olvidar el susto\n    <\/span>\n    <div class=\"ld-title\">Una web no se rehace solo con un parche. Se protege de forma constante.<\/div>\n    <div class=\"ld-grid\">\n      <article class=\"ld-card\">\n        <span class=\"ld-icon\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" fill=\"none\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M12 3v18\"><\/path><path d=\"M3 12h18\"><\/path><\/svg><\/span>\n        <strong>Actualiza r\u00e1pido<\/strong>\n        <p>WordPress, plugins y temas no deben esperar semanas cuando hay parches de seguridad de por medio.<\/p>\n      <\/article>\n      <article class=\"ld-card\">\n        <span class=\"ld-icon\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" fill=\"none\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M3 6h18\"><\/path><path d=\"M8 6V4h8v2\"><\/path><path d=\"M6 6l1 14h10l1-14\"><\/path><\/svg><\/span>\n        <strong>Borra lo que no uses<\/strong>\n        <p>Desactivado no significa inocuo. Themes nulled, plugins viejos o abandonados son superficie de riesgo.<\/p>\n      <\/article>\n      <article class=\"ld-card\">\n        <span class=\"ld-icon\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" fill=\"none\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M16 10V7a4 4 0 1 0-8 0v3\"><\/path><rect x=\"4\" y=\"10\" width=\"16\" height=\"10\" rx=\"2\"><\/rect><\/svg><\/span>\n        <strong>Refuerza accesos<\/strong>\n        <p>Contrase\u00f1as \u00fanicas, largas y, si puedes, doble factor para el panel y los usuarios con m\u00e1s privilegios.<\/p>\n      <\/article>\n      <article class=\"ld-card\">\n        <span class=\"ld-icon\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" fill=\"none\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M16 21v-2a4 4 0 0 0-4-4H7a4 4 0 0 0-4 4v2\"><\/path><circle cx=\"9.5\" cy=\"7\" r=\"4\"><\/circle><path d=\"M20 8v6\"><\/path><path d=\"M23 11h-6\"><\/path><\/svg><\/span>\n        <strong>Reduce administradores<\/strong>\n        <p>Cuantos m\u00e1s usuarios con acceso alto, m\u00e1s dif\u00edcil es controlar credenciales, cambios y fugas.<\/p>\n      <\/article>\n      <article class=\"ld-card\">\n        <span class=\"ld-icon\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" fill=\"none\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M3 12h6l3 8 4-16 3 8h2\"><\/path><\/svg><\/span>\n        <strong>Revisa se\u00f1ales<\/strong>\n        <p>Usuarios nuevos, archivos cambiados y avisos del hosting no deber\u00edan pasar semanas sin revisi\u00f3n.<\/p>\n      <\/article>\n      <article class=\"ld-card\">\n        <span class=\"ld-icon\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" fill=\"none\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M4 4h16v16H4z\"><\/path><path d=\"M8 8h8\"><\/path><path d=\"M8 12h8\"><\/path><path d=\"M8 16h5\"><\/path><\/svg><\/span>\n        <strong>Trabaja con base estable<\/strong>\n        <p>Copias, panel claro y un entorno bien mantenido reducen mucho el tiempo de reacci\u00f3n cuando algo falla.<\/p>\n      <\/article>\n    <\/div>\n    <div class=\"ld-foot\">\n      <strong>Idea fuerza<\/strong>\n      <p>La mejor prevenci\u00f3n no es una sola herramienta. Es una rutina simple: actualizar, limpiar software sobrante, revisar accesos y reaccionar pronto ante cualquier anomal\u00eda.<\/p>\n    <\/div>\n  <\/div>\n<\/div>\n<!-- \/como-evitar-futuros-hackeos-en-tu-servidor -->\n\n\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-conclusion\">Conclusi\u00f3n<\/h2>\n\n\n\n<p>Cuando una web cae por malware, el orden importa mucho.<\/p>\n\n\n\n<p>Primero frena el da\u00f1o. Luego recupera el acceso. Despu\u00e9s limpia archivos, base de datos, usuarios y credenciales. Y al final, pide revisi\u00f3n a Google y revisa qu\u00e9 agujero permiti\u00f3 la entrada.<\/p>\n\n\n\n<p>Un WordPress hackeado puede volver a la normalidad r\u00e1pido si act\u00faas sin improvisar y no dejas dentro el plugin, usuario o archivo que abri\u00f3 la puerta.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/www.loading.es\/hosting-wordpress\/index.html\" target=\"_blank\" rel=\"noreferrer noopener\"><img decoding=\"async\" loading=\"lazy\" width=\"1000\" height=\"100\" src=\"https:\/\/www.loading.es\/blog\/wp-content\/uploads\/banner-oferta-hosting-wordpress.png\" alt=\"Oferta Contratar Hosting WordPress\" class=\"wp-image-8079\" srcset=\"https:\/\/www.loading.es\/blog\/wp-content\/uploads\/banner-oferta-hosting-wordpress.png 1000w, https:\/\/www.loading.es\/blog\/wp-content\/uploads\/banner-oferta-hosting-wordpress-300x30.png 300w, https:\/\/www.loading.es\/blog\/wp-content\/uploads\/banner-oferta-hosting-wordpress-768x77.png 768w, https:\/\/www.loading.es\/blog\/wp-content\/uploads\/banner-oferta-hosting-wordpress-850x85.png 850w\" sizes=\"(max-width: 1000px) 100vw, 1000px\" \/><\/a><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-preguntas-frecuentes-sobre-desinfectar-wordpress-hackeado-faq\">Preguntas frecuentes sobre desinfectar WordPress hackeado (FAQ)<\/h2>\n\n\n\n<!-- preguntas-frecuentes-sobre-desinfectar-wordpress-hackeado-faq -->\n<style>\n#comp-ld-908 {\n  --c-brand-dark: #37363d;\n  --c-brand-accent: #db7424;\n  font-family: inherit;\n  color: var(--c-brand-dark);\n  margin: 20px 0;\n}\n#comp-ld-908 .ld-title {\n  margin: 0 0 8px;\n  font-size: 1.18rem;\n  line-height: 1.2;\n  font-weight: 700;\n  color: var(--c-brand-dark);\n}\n#comp-ld-908 .ld-intro {\n  margin: 0 0 14px;\n  color: rgba(49, 63, 76, 0.78);\n  font-size: 0.95rem;\n  line-height: 1.5;\n}\n#comp-ld-908 details {\n  border-bottom: 1px solid rgba(49, 63, 76, 0.1);\n}\n#comp-ld-908 summary {\n  position: relative;\n  display: block;\n  padding: 16px 46px 16px 0;\n  cursor: pointer;\n  font-weight: 700;\n  list-style: none;\n  transition: color 0.2s ease;\n}\n#comp-ld-908 summary::-webkit-details-marker {\n  display: none;\n}\n#comp-ld-908 summary:hover {\n  color: var(--c-brand-accent);\n}\n#comp-ld-908 summary::after {\n  content: '+';\n  position: absolute;\n  top: 50%;\n  right: 0;\n  transform: translateY(-50%);\n  width: 28px;\n  height: 28px;\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  border-radius: 999px;\n  background: rgba(219, 116, 36, 0.1);\n  color: var(--c-brand-accent);\n  font-size: 1rem;\n  line-height: 1;\n}\n#comp-ld-908 details[open] summary::after {\n  content: '\u2212';\n}\n#comp-ld-908 .ld-answer {\n  padding: 0 0 16px;\n  color: rgba(49, 63, 76, 0.82);\n  font-size: 0.94rem;\n  line-height: 1.6;\n}\n<\/style>\n<div id=\"comp-ld-908\">\n  <details>\n    <summary>\u00bfPuedo desinfectar un WordPress hackeado sin saber programar?<\/summary>\n    <div class=\"ld-answer\">S\u00ed, si sigues un orden claro en Plesk, phpMyAdmin y WordPress. Lo cr\u00edtico es no borrar cosas al azar y cerrar accesos al final.<\/div>\n  <\/details>\n  <details>\n    <summary>\u00bfRestaurar una copia de seguridad deja la web limpia del todo?<\/summary>\n    <div class=\"ld-answer\">No siempre. Puede devolverte la web online, pero si el agujero sigue abierto, el problema puede reaparecer.<\/div>\n  <\/details>\n  <details>\n    <summary>\u00bfPor qu\u00e9 mi WordPress redirige a otra p\u00e1gina?<\/summary>\n    <div class=\"ld-answer\">Normalmente por c\u00f3digo inyectado, cambios en archivos clave, un plugin comprometido o un usuario con permisos altos que no deber\u00eda estar ah\u00ed.<\/div>\n  <\/details>\n  <details>\n    <summary>\u00bfQu\u00e9 plugin usar para eliminar malware en WordPress?<\/summary>\n    <div class=\"ld-answer\">Wordfence es una opci\u00f3n muy v\u00e1lida para escanear y detectar cambios raros, pero no sustituye la revisi\u00f3n manual de accesos, base de datos y archivos.<\/div>\n  <\/details>\n  <details>\n    <summary>\u00bfCu\u00e1nto tarda Google en quitar una web de la lista negra?<\/summary>\n    <div class=\"ld-answer\">Depende del problema y de lo completa que haya sido la limpieza. Puede tardar desde varios d\u00edas hasta varias semanas.<\/div>\n  <\/details>\n  <details>\n    <summary>\u00bfDebo borrar todos los plugins despu\u00e9s de un hackeo?<\/summary>\n    <div class=\"ld-answer\">No todos, pero s\u00ed los que no uses, est\u00e9n abandonados o sean pirateados. Mantener software innecesario aumenta el riesgo de reinfecci\u00f3n.<\/div>\n  <\/details>\n  <details>\n    <summary>\u00bfQu\u00e9 hago si aparecen URLs de spam japon\u00e9s en Google?<\/summary>\n    <div class=\"ld-answer\">Primero elimina la causa que las crea. Despu\u00e9s devuelve `410 Gone` a las rutas falsas, revisa Search Console y env\u00eda un sitemap limpio.<\/div>\n  <\/details>\n  <details>\n    <summary>\u00bfCambiar las security keys de WordPress para qu\u00e9 sirve?<\/summary>\n    <div class=\"ld-answer\">Sirve para invalidar sesiones activas. Si el atacante segu\u00eda dentro con una cookie robada, lo expulsas obligando a iniciar sesi\u00f3n otra vez.<\/div>\n  <\/details>\n<\/div>\n<!-- \/preguntas-frecuentes-sobre-desinfectar-wordpress-hackeado-faq -->\n\n\n\n<p><\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-4 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-embed is-type-wp-embed is-provider-el-blog-de-loading wp-block-embed-el-blog-de-loading\"><div class=\"wp-block-embed__wrapper\">\n<blockquote class=\"wp-embedded-content\" data-secret=\"hxZJSZVraW\"><a href=\"https:\/\/www.loading.es\/blog\/enlaces-follow-enlaces-no-follow-seo\/\">Qu\u00e9 son los enlaces follow y no follow y por qu\u00e9 importan en SEO<\/a><\/blockquote><iframe class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; clip: rect(1px, 1px, 1px, 1px);\" title=\"\u00abQu\u00e9 son los enlaces follow y no follow y por qu\u00e9 importan en SEO\u00bb \u2014 El blog de Loading\" src=\"https:\/\/www.loading.es\/blog\/enlaces-follow-enlaces-no-follow-seo\/embed\/#?secret=p9nHBNpwRE#?secret=hxZJSZVraW\" data-secret=\"hxZJSZVraW\" width=\"600\" height=\"338\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe>\n<\/div><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-embed is-type-wp-embed is-provider-el-blog-de-loading wp-block-embed-el-blog-de-loading\"><div class=\"wp-block-embed__wrapper\">\n<blockquote class=\"wp-embedded-content\" data-secret=\"xulQBPR4Sm\"><a href=\"https:\/\/www.loading.es\/blog\/encontrar-enlaces-rotos-wordpress\/\">C\u00f3mo encontrar enlaces rotos en WordPress<\/a><\/blockquote><iframe class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; clip: rect(1px, 1px, 1px, 1px);\" title=\"\u00abC\u00f3mo encontrar enlaces rotos en WordPress\u00bb \u2014 El blog de Loading\" src=\"https:\/\/www.loading.es\/blog\/encontrar-enlaces-rotos-wordpress\/embed\/#?secret=xQ99X9AqhA#?secret=xulQBPR4Sm\" data-secret=\"xulQBPR4Sm\" width=\"600\" height=\"338\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe>\n<\/div><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-embed is-type-wp-embed is-provider-el-blog-de-loading wp-block-embed-el-blog-de-loading\"><div class=\"wp-block-embed__wrapper\">\n<blockquote class=\"wp-embedded-content\" data-secret=\"2Vqo3UskNR\"><a href=\"https:\/\/www.loading.es\/blog\/las-mejores-plantillas-para-wordpress-gratis\/\">Los mejores temas para WordPress gratis<\/a><\/blockquote><iframe class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; clip: rect(1px, 1px, 1px, 1px);\" title=\"\u00abLos mejores temas para WordPress gratis\u00bb \u2014 El blog de Loading\" src=\"https:\/\/www.loading.es\/blog\/las-mejores-plantillas-para-wordpress-gratis\/embed\/#?secret=cN1RYYpABF#?secret=2Vqo3UskNR\" data-secret=\"2Vqo3UskNR\" width=\"600\" height=\"338\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe>\n<\/div><\/figure>\n<\/div>\n<\/div>\n\n\n\n<script type=\"application\/ld+json\">\n{\n  \"@context\": \"https:\/\/schema.org\",\n  \"@type\": \"FAQPage\",\n  \"mainEntity\": [\n    {\n      \"@type\": \"Question\",\n      \"name\": \"\u00bfPuedo desinfectar un WordPress hackeado sin saber programar?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"S\u00ed, en muchos casos puedes hacerlo si sigues un orden claro en Plesk, phpMyAdmin y WordPress. Lo importante es no borrar cosas al azar y no saltarte el cambio de contrase\u00f1as y salts.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"\u00bfRestaurar una copia de seguridad deja la web limpia del todo?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"No siempre. Puede quitar el s\u00edntoma y devolverte la web online, pero si el plugin vulnerable o la contrase\u00f1a comprometida siguen ah\u00ed, la infecci\u00f3n puede volver.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"\u00bfPor qu\u00e9 mi WordPress redirige a otra p\u00e1gina?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Suele deberse a c\u00f3digo inyectado, un plugin comprometido, un usuario admin creado por el atacante o cambios en archivos del core, tema o .htaccess. Hay que revisar archivos, usuarios y base de datos.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"\u00bfQu\u00e9 plugin usar para eliminar malware en WordPress?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Wordfence en su versi\u00f3n gratuita es una opci\u00f3n muy v\u00e1lida para escanear y detectar cambios sospechosos. Aun as\u00ed, ning\u00fan plugin sustituye la revisi\u00f3n manual de accesos, archivos y vulnerabilidades.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"\u00bfCu\u00e1nto tarda Google en quitar una web de la lista negra?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Depende del tipo de problema y de lo completa que haya sido la limpieza. La revisi\u00f3n puede tardar desde varios d\u00edas hasta varias semanas.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"\u00bfDebo borrar todos los plugins despu\u00e9s de un hackeo?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"No todos, pero s\u00ed debes borrar los que no uses, los abandonados y cualquier plugin o theme pirateado. Mantener software innecesario aumenta mucho el riesgo de reinfecci\u00f3n.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"\u00bfQu\u00e9 hago si aparecen URLs de spam japon\u00e9s en Google?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Primero elimina la causa que las genera. Despu\u00e9s devuelve 410 Gone en esas URLs si ya no existen, revisa Search Console y env\u00eda un sitemap limpio con las p\u00e1ginas v\u00e1lidas.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"\u00bfCambiar las security keys de WordPress para qu\u00e9 sirve?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Sirve para invalidar sesiones activas y obligar a todos los usuarios a iniciar sesi\u00f3n otra vez. Si el atacante segu\u00eda conectado con una cookie robada, as\u00ed lo expulsas.\"\n      }\n    }\n  ]\n}\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>Si acabas de descubrir redirecciones raras, avisos de malware o un desplome repentino en tu web, necesitas un plan corto y \u00fatil para desinfectar WordPress hackeado sin tocar cosas a ciegas. Primero hay que cortar el da\u00f1o, recuperar el acceso y limpiar la instalaci\u00f3n. Despu\u00e9s toca cerrar el agujero para que no vuelva a pasar.<\/p>\n<p>Sabemos que asusta. Sobre todo si no tienes experiencia en estos casos, pero que te hayan hackeado WordPress no significa es el final. Es un fastidio, s\u00ed, pero tiene soluci\u00f3n y en este post te vamos a indicar los pasos para que puedas recuperar tu web cuanto antes despu\u00e9s de sufrir un hackeo.<\/p>\n","protected":false},"author":2,"featured_media":11489,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[66],"tags":[78],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.loading.es\/blog\/wp-json\/wp\/v2\/posts\/11486"}],"collection":[{"href":"https:\/\/www.loading.es\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.loading.es\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.loading.es\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.loading.es\/blog\/wp-json\/wp\/v2\/comments?post=11486"}],"version-history":[{"count":6,"href":"https:\/\/www.loading.es\/blog\/wp-json\/wp\/v2\/posts\/11486\/revisions"}],"predecessor-version":[{"id":11504,"href":"https:\/\/www.loading.es\/blog\/wp-json\/wp\/v2\/posts\/11486\/revisions\/11504"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.loading.es\/blog\/wp-json\/wp\/v2\/media\/11489"}],"wp:attachment":[{"href":"https:\/\/www.loading.es\/blog\/wp-json\/wp\/v2\/media?parent=11486"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.loading.es\/blog\/wp-json\/wp\/v2\/categories?post=11486"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.loading.es\/blog\/wp-json\/wp\/v2\/tags?post=11486"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}