Saltar al contenido

htaccess WordPress – Guía Completa

¿Estás tratando con el archivo.htaccess y no sabes exactamente qué hacer?

Entonces sepa que en esta guía intentaremos describir todas las características del archivo desde lo básico hasta los casos más complejos. Y es por eso que creamos un único artículo que intentaba entenderlo todo.

Resumen contenido

.htaccess: lo básico

¿Qué es el archivo.htaccess?

Muy bien, aquí vamos. El archivo.htaccess es un archivo de configuración que gestiona las respuestas que el servidor web proporciona en situaciones específicas. En realidad, hay diferentes servidores web que utilizan este archivo de configuración, como uno de los más famosos que corresponde al nombre de Apache.

El archivo.htaccess opera a nivel del directorio en el que se encuentra, lo que le permite ignorar las configuraciones generales establecidas por otros archivos.htaccess ubicados en directorios anteriores.

Por ejemplo, las instrucciones contenidas en el archivo.htaccess en el directorio domain name.com/administration tendrán prioridad sobre las instrucciones contenidas en el archivo.htaccess en la dirección domain name.com.

¿Por qué se llama .htaccess?

Este tipo de archivo se utilizaba para controlar el acceso de usuarios específicos dentro de ciertos directorios en los servidores.

De este modo, el administrador del sistema pudo prohibir el acceso a los usuarios que no tenían los privilegios adecuados. Y para hacer esto, el nombre de usuario y la contraseña se insertaron en un archivo llamado .htpasswd.

Aunque el archivo.htaccess todavía se usa para este propósito, su uso se ha expandido enormemente. Muchos de los casos con los que puede tener que lidiar se describen en esta guía.

¿Dónde está el archivo.htaccess?

Como se mencionó antes, el archivo.htaccess es un poco especial y por lo tanto se puede encontrar en cualquier directorio. Dicho esto, el archivo suele estar ubicado en el directorio donde se encuentran los archivos del sitio web. Estos directorios pueden cambiar el nombre de configuración a configuración. Los nombres más comunes son www, httpdocs o public_html.

¿Por qué no puedo encontrar el archivo.htaccess?

En realidad, puede que no lo veas. De hecho, los archivos que empiezan por el punto (como .htaccess) no suelen ser visibles por defecto. Por lo tanto, estamos hablando de lo que se consideran archivos ocultos. Si accede a su directorio con un programa de correo normal, como FileZilla, intente buscar la opción «mostrar archivos ocultos».

De esta manera puede ver su archivo.htaccess.

En caso de que haya entrado en su directorio a través de ssh en su lugar, entonces el comando para ver sólo los archivos ocultos es:

ls -ld ……………………………………………………………………………………………………………………………………………..

¿Qué pasa si el archivo.htaccess no está ahí?

Por lo general, este archivo se genera automáticamente, así que asegúrese de que ha intentado todo lo que puede hacer para localizarlo.

Si no está ahí, puede crear uno usando un programa de texto normal (archivo para ser guardado en formato ASCII) asegurándose de que no lo guarde en formato.txt. El nombre del archivo debería ser simplemente .htaccess

 

Tratamiento de errores

Cuando un servidor recibe una petición externa, el propio servidor intenta responder. Este es el caso, por ejemplo, cuando alguien intenta ver una página html específica, o quiere ver un video o eventualmente descargar un archivo pdf.

Como ya se ha mencionado, el servidor intenta responder a esta petición para satisfacerla. Sin embargo, las cosas no son tan simples y obvias. Sucede a veces que la página html, el vídeo o el documento pdf no existen. Así se genera un error, y cada error específico tiene su propio código específico.

El error 404 es, por ejemplo, el error generado cuando un documento solicitado al servidor no se encuentra realmente. Pero hay muchos más errores:

Error de solicitud de cliente

  • 400 – Mala solicitud
  • 401 – Se requiere autorización
  • 402 – Pago requerido (aún no utilizado)
  • 403 – Prohibido
  • 404 – No encontrado
  • 405 – Método no permitido
  • 406 – No aceptable (codificación)
  • 407 – Se requiere autenticación de proxy
  • 408 – Solicitud de tiempo de espera
  • 409 – Petición conflictiva
  • 410 – Desaparecido
  • 411 – Longitud del contenido requerida
  • 412 – Precondición fallida
  • 413 – Solicitar entidad demasiado tiempo
  • 414 – Solicitar URI demasiado tiempo
  • 415 – Tipo de medio no admitido.

Error del servidor

  • 500 – Error interno del servidor
  • 501 – No aplicadas
  • 502 – Puerta de enlace defectuosa
  • 503 – Servicio no disponible
  • 504 – Tiempo de espera del Gateway
  • 505 – Versión HTTP no soportada.

¿A qué se accede normalmente?

¿Alguna vez ha visitado un sitio y ha visto que su navegador indica un error genérico? Aquí, esto es lo que sucede cuando no se especifica cómo manejar los errores del servidor. ¡Y eso no es bueno!

Cómo especificar errores

Lo ideal es que cree un documento HTML para cada código de error que desee manejar. El nombre del archivo no es importante, puedes llamarlo como quieras, pero trata de encontrar una manera que sea fácil de recordar.

Una vez que haya hecho este primer paso, hay un segundo que completar.

Debe asociar el código de error con el archivo html creado en el documento. ErrorDocument 400 /errori/bad-request.html ErrorDocument 412 /errors/precondition-failed.html ErrorDocument 403 /errori/forbid.html ErrorDocument 404 /errori/not-found.html ErrorDocument 505 /errors//http-version-not-supported.html

Y así sucesivamente……

Alternativa a la gestión de errores

Hay muchas aplicaciones disponibles en Internet, como los CMS, que tienen su propia forma de preocuparse por los errores. Y por un lado esto puede ser una ventaja.

Protección de contraseña con .htaccess

Ahora veamos en detalle cómo proteger contraseñas específicas con este archivo de configuración. Que fue también la razón original por la que nació el archivo.htaccess

.htpasswd

Este archivo almacena la contraseña y el nombre de usuario. Estos valores se almacenan de la siguiente manera

nombre de usuario:passwordcripted

por ejemplo

mariorossi:Hd635dhY684jd

La contraseña que ves, por lo tanto, no es la contraseña real. Pero es una contraseña encriptada.

El sistema verificará que la contraseña introducida por el usuario es la misma que la contraseña introducida en el archivo.htpasswd. Si es así, el usuario podrá acceder al directorio de destino, de lo contrario tendrá que volver a introducir la contraseña.

Almacenar las contraseñas de esta manera hace que el sistema sea más seguro. De hecho, si alguien tenía acceso directo a ese archivo, no podía rastrear las contraseñas reales porque estaban encriptadas. Es una «encriptación unidireccional» que le impide hacer el camino inverso para obtener contraseñas claras.

Bloquear (o desbloquear) una dirección IP

Si desea bloquear usuarios de IPs específicas, puede configurar el archivo.htaccess correctamente. Esta estrategia puede ser útil si necesita bloquear a algunos usuarios que están causando problemas. Pero es cierto que se puede hacer lo contrario, es decir, sólo se puede autorizar a los usuarios que procedan de una determinada ip con exclusión de todas las demás.

Bloquear ip

Para bloquear ips específicas, utilice este modo:

para permitir,negar negar desde 134.65,65.123 negar desde 69.111.45. permitir desde todos

Ahora vamos a explicar lo que dice. La primera línea establece que la primera instrucción a evaluar es permitir, incluso antes de negar. Esto significa que la línea tomada en consideración es la línea permitida de todos. Por lo tanto, sólo se bloquearán los usuarios que se encuentren dentro de las instrucciones establecidas por las dos líneas de rechazo.

¿Por qué se adoptó esta secuencia? Porque si se evaluara primero la instrucción denay, la siguiente, en este caso permitir, neutralizaría el bloqueo para usuarios de la ip indicada.

Tenga en cuenta que la tercera línea indica una ip parcial, lo que significa que una ip específica no está bloqueada, sino todas las que contienen la parte inicial 69.111.45.

Desbloquear ip

Para permitir que sólo unos pocos puedan ver un directorio o un sitio, y negar el acceso al resto del mundo, debemos usar las instrucciones a continuación:

orden negar, permitir negar de todos permitir de 134.65, 65.123 permitir de 69.111.45.

Bloqueo de un nombre de dominio en lugar del ip

También es posible bloquear a un usuario por dominio, no sólo por IP. Por ejemplo, si desea bloquear a los usuarios que vienen, por ejemplo, de una conexión vodafone.com, con las siguientes instrucciones puede aplicar un bloqueo incluso si cambian su ip

order allow,deny deny deny from vodafone.com allow from all

Este tipo de instrucción también funciona en el caso de dominios de tercer nivel, por ejemplo beta.vodafone.com

Bloqueo de usuarios a través de referenciadores

¿Qué es un referenciador? Es un sitio que contiene un enlace al suyo. Cuando un usuario sigue un enlace en una página de otro sitio, ese sitio se identifica como un referente.

¿Cuál es el uso específico de este tipo de bloque? Por ejemplo, puede bloquear los sitios que utilizan las imágenes subidas a su sitio, consumiendo así su ancho de banda. O incluso tu archivo css, u otros recursos. Esta forma de actuar les ahorrará el ancho de banda a su disposición sin recibir ninguna ventaja en términos de tráfico y visibilidad.

Por estas razones, y otras, es posible que desee optar por bloquear ciertas referencias.

Para que esta opción sea utilizable, sin embargo, el módulo mod_rewrite debe estar habilitado. Si no está seguro, pregunte a su proveedor de hosting incluso si, con toda probabilidad, el módulo ya está activo por defecto.

Aquí están las instrucciones en caso de que desee activar dicha restricción:

RewriteEngine onRewriteCond
%{HTTP_REFERERER} ^http://.*example1.com[NC,OR
]RewriteCond %{HTTP_REFERER} ^http://.*example2.com[NC,OR
]RewriteCond %{HTTP_REFERERER} ^http://.esempio3.com[NC
]RewriteRule .

– [F
]

Ahora procedamos con la explicación de cada uno de los aspectos.

La línea de inicio es necesaria para establecer que un conjunto de instrucciones relacionadas con la función de reescritura están a punto de ser enviadas.

Las siguientes tres líneas bloquean dominios específicos (una por línea).

Las dos letras NC significan que el control no debe ser sensible a mayúsculas y minúsculas, mientras que las letras O significan que una vez que la línea está terminada, está a punto de llegar una nueva.

La última línea, la de la regla de reescritura real, contiene la letra F que significa Prohibido, es decir, prohibido. Por lo tanto, todo visitante que tenga como referencia uno de los dominios indicados (example1.com, example2.com y example3.com) está prohibido y no puede acceder. El error que verá el visitante prohibido será: 403 Error prohibido.

Bloqueando a las arañas

¿Alguna vez ha comprobado su cuenta de Analytics y se ha dado cuenta de que gran parte de su tráfico no tiene nada que ver con sus visitantes? Bueno, es algo súper normal que primero le pasa a todo el mundo. Alrededor de la red hay muchos programas llamados bots, spiders, web scrapers y otros.

Son programas diseñados específicamente para ir y recuperar información específica de sitios web. Esta información puede variar de un caso a otro. A veces se utilizan para descubrir el contenido de los sitios, como la araña de Google, a veces se utilizan simplemente para robar los recursos de su cuenta sin recibir ningún beneficio.

En este caso, tan pronto como haya identificado el bot específico que desea bloquear, puede agregar este código al archivo.htaccess

ReescribirMotor en

RewriteCond %{HTTP_USER_AGENT} (googlebot|bingbot)[NC] RewriteRule .* -[R=403,L]

PRECAUCIÓN: Ten en cuenta que estas instrucciones harán que tu sitio web sea invisible para los usuarios que utilicen Google y Bing.

Redirecciones URL 301

¿Qué es Redirect 301? Y sobre todo, ¿cómo configurarlo sin perder el posicionamiento del sitio o de la página que desea transferir?

Aquí están las instrucciones sobre cómo implementar el redireccionamiento que le gusta a los motores de búsqueda y el código que debemos usar.

Suponga que desea crear un nuevo sitio, con una nueva dirección, que debe reemplazar un sitio antiguo que por cualquier razón queremos abandonar.

Supongamos también que el sitio antiguo tiene un importante rango de página y varias páginas en los resultados de búsqueda de Google.

¿Cómo podemos proceder con la creación del nuevo sitio sin perder todo el trabajo realizado en el anterior? Con el Redirect 301

Redireccionar 301 para un sitio

En este caso, tenemos que crear un fichero dentro del directorio principal del sitio y nombrarlo.htaccess (puntohtaccess). E introduzca el siguiente código:

ReescribirMotor en

RewriteRule (.*)$ http://www.newdomain.com/$1[R=301,L]

Con este código, todo el tráfico generado por el sitio antiguo, será redirigido al nuevo (para ser insertado en lugar de www.newdomain.com)

Redireccionar 301 para una página

Si, por otro lado, simplemente queremos reemplazar una sola página por una nueva, el código es el siguiente:

ReescribirMotor en

RewriteRule ^/?vecchia-pagina.html http://www.newdomain.com/nuova-pagina.html [R=301,L]

Reglas de .htaccess para protegerse de las inyecciones de SQL de WordPress

2mMzoYg

Las inyecciones de WordPress SQL son un método común de hacking.

A menudo se utiliza para insertar enlaces de malware y spam en su sitio web.

Cuando se trata de proteger su sitio de WordPress, esta es una amenaza para la que necesita estar preparado!

Es muy importante tener un buen plan de seguridad de WordPress. En este post, explicaré con más detalle qué es una inyección SQL y cómo puede minimizar que suceda en su sitio web.

¿Qué son las inyecciones de SQL?

Los hackers pueden entrar en WordPress de muchas maneras, pero como ya habrás adivinado el nombre SQL injection nos da una pista de cómo se consigue este hacker o a dónde se dirige para ser más precisos.

Seguridad de la base de datos de WordPress

WordPress se basa en PHP y una base de datos MySQL para funcionar. Muchos de los datos de su sitio web se almacenan en la base de datos MySQL y son llamados cuando la gente visita su sitio. El código PHP se utiliza para llamar entradas en la base de datos.

¿Cómo hackean la base de datos de WordPress las personas o los robots?

En resumen, una inyección SQL puede ocurrir en cualquier lugar que tenga un elemento de formulario en su sitio. Estos pueden serlo:

  • Formularios de contacto
  • Formularios de suscripción
  • Formularios de acceso
  • Barras de búsqueda y muchos otros campos de entrada.

Incluso las vulnerabilidades más pequeñas pueden dejar su base de datos abierta a un ataque SQL!

Los hackers básicamente buscan sitios con vulnerabilidades, cuando encuentran una, todo lo que tienen que hacer es usar un comando SQL malicioso en lugar de una entrada de formulario válida y eso es todo!

Piense en su formulario de contacto, por ejemplo.

Si tienes un campo de número de teléfono de contacto, entonces todo lo que quieres que la gente ponga ahí son números, no letras u otros caracteres.

Si no configuras correctamente tu campo de formulario o tu tema o plugin lo ha descuidado, entonces el hacker puede poner cualquier cosa que le guste en ese campo, ¡incluyendo código malicioso!

Tipos de inyección SQL

Generalmente hay dos tipos principales de inyección SQL o, más exactamente, dos razones principales por las que los atacantes utilizan inyecciones SQL.

Para obtener información sensible – SQL ClásicoEste tipo de inyección SQL básicamente devuelve información sensible al navegador del hacker. Utilizarán los formularios de su sitio para consultar la base de datos. Esto entonces revela información sobre la estructura y el contenido de su base de datos. A continuación, pueden utilizar esta información para lanzar un ataque a su sitio web.

Para ejecutar acciones de la base de datos – Blind SQLI

Como el nombre sugiere que una inyección ciega no busca devolver ningún dato como tal, sino ejecutar acciones de la base de datos como borrar, alterar o añadir tablas.

Es posible que haya sido víctima de una o ambas inyecciones de WordPress SQL, pueden haber eliminado la tabla wp_users, por lo que ahora no puede acceder a la administración de su sitio web.

Es posible que hayan recopilado información confidencial sobre su base de datos y agregado código malicioso, malware, enlaces de spam, redirecciones y ventanas emergentes a su sitio.

¿Por qué WordPress no bloquea esto como estándar?

WordPress como plataforma es realmente muy segura, y se toman este tipo de seguridad muy en serio.

La seguridad de los comunicados de prensa de WordPress y las actualizaciones de corrección de errores todo el tiempo.

WordPress realmente hace poder alrededor del 34% de Internet ahora, lo que significa que es un gran objetivo para los hackers que dicen que WordPress hace un excelente trabajo en mantener su software seguro.

El punto débil son a menudo los temas y los plugins, por lo que es esencial un estricto plan de seguridad y mantenimiento de WordPress.

Los plugins y los temas se abandonan, o los autores no son conscientes de la seguridad y no parchean las vulnerabilidades muy rápidamente.

Es esto lo que a menudo explotan los hackers.

Es por eso que siempre les diremos a todos que primero tengan el menor número posible de temas y plugins y que los mantengan actualizados en todo momento.

Si un tema o plugin ya no es compatible o no se ha actualizado durante algún tiempo, le sugerimos que busque una alternativa.

Cómo prevenir la inyección SQL

Antes de seguir adelante, asegúrese de hacer una copia de seguridad de su base de datos y de los archivos del sitio. Es muy importante que tenga una copia de trabajo de su sitio antes de hacer cualquier cambio, así que en caso de que se rompa su sitio o algo vaya mal, puede restaurarlo fácilmente.

  1. Usar plugins y temas de confianza

    Como se mencionó anteriormente, hay muchas maneras en las que los hackers pueden entrar, por lo que lo mejor es asegurarse de cubrir todas las bases. Utiliza sólo plugins de confianza y autores de temas, NUNCA uses plugins o temas nulos o pirateados!

  2. Asegúrese de que su hardware es seguro

    Asegúrese de que el equipo que utiliza para acceder a su sitio también esté seguro con las últimas actualizaciones y software antivirus.

  3. Asegúrese de que la configuración de su hosting sea segura

    Con demasiada frecuencia la gente pasa por alto la seguridad de su hosting. La mayoría van por hosts compartidos baratos con poco cuidado para su seguridad de WordPress. No importa lo que haga en otro lugar de su sitio web, si su hosting y/o servidor no son seguros, entonces está perdiendo el tiempo.

  4. Mantenga los campos de entrada de formularios al mínimo y configúrelos correctamente

    Los campos de formulario y la entrada son el punto de acceso clave para una inyección SQL, así que utilice sólo lo que necesite y asegúrese de configurarlos correctamente. Si un campo sólo requiere un número de teléfono, entonces sólo permita que ese campo acepte números.

  5. Utilice un buen plugin de seguridad y WAF

    Es esencial que utilice un buen firewall de aplicaciones web (WAF) y un plugin de monitorización de seguridad. Estos a menudo le alertarán de los problemas para que pueda trabajar arreglándolos o bloqueándolos antes de que ocurra algo importante. Recomendamos Wordfence o Sucuri, pero hay muchos otros.

  6. Utilice las reglas de .htaccess para protegerse de la inyección SQL de WordPress

    Si está usando un servidor Apache, puede usar el archivo.htaccess para bloquear algunos de los intentos de inyección SQL. Esto no garantiza al 100% que nunca serás atacado, pero puede ser útil para minimizar las inyecciones de SQL.
    A continuación hemos creado una lista de las mejores reglas de .htaccess para endurecer tu sitio web de WordPress.

12 Reglas de .htaccess para proteger de la inyección SQL de WordPress y endurecer WordPress

Redirigir todos los Http a Https

Si tiene un certificado SSL, es posible que desee redirigir todo el tráfico no seguro (HTTP) a https. Puede hacer esto añadiendo el siguiente código el archivo.htaccess en la raíz de su instalación de WordPress. Si no tiene este archivo en la raíz, puede crear uno y copiar y pegar este código en el archivo. Una vez hecho esto, guárdelo y cárguelo en la raíz de su sitio web.

#Redirigir http a https
ReescribirMotor en
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}[R=301,L]

Bloquear los bots malos

Hay algunos bots que se sabe que son malos y que simplemente deberían ser bloqueados. Copie este código en el archivo root.htaccess de su sitio web.

#Bloqueen a los malos hackers
SetEnvIfNoCase User-Agent "^libwwww-perl*" block_bad_bots
Denegar desde env=block_bad_bots

Desactivar la navegación por el directorio

Si no bloquea la navegación por el directorio, los hackers pueden simplemente ingresar en una URL como yourwebsite.com/wp-incluye/ y ver todos los archivos e información de sus sitios. Este es un gran riesgo para la seguridad y usted debe apagarlo de inmediato. Puede hacerlo añadiendo el siguiente código a su archivo roots.htaccess.

# Desactivar la navegación por el directorio
Opciones Todos los Índices

Una vez que haya añadido que las personas que intentan acceder a estas URLs obtendrán un mensaje como el que se muestra a continuación.

Denegar el acceso a los archivos

Dado que estamos haciendo todos estos cambios en el archivo.htaccess, lo más sensato es que bloqueemos el acceso a él para que nadie pueda ver qué reglas hemos puesto ahí!

Además, debemos bloquear algunos otros archivos como el archivo wp-config que contiene toda la información de inicio de sesión de su base de datos!

Para ello, añada lo siguiente al archivo root.htaccess de su sitio. Esto bloqueará el acceso a cualquier archivo.htaccess en cualquier lugar de su sitio, lo cual es aconsejable.

# Denegar el acceso a todos los archivos.htaccess
<Subtítulos por aRGENTeaM
para permitir, negar
negar de todo
satisfacer todas
</ficheros>
 
# Denegar el acceso a readme.html
<ficheros readme.html>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>).
Orden permitir, negar
Negación de todo
</ficheros>
 
# Denegar el acceso a license.txt
<archivos license.txt>
Orden permitir, negar
Negación de todo
</ficheros>
 
# Denegar el acceso al archivo wp-config.php
<ficheros wp-config.php>
para permitir, negar
negar de todo
</ficheros>
 
# Denegar el acceso a error_log
<ficheros error_log>
Orden permitir, negar
Negación de todo
</ficheros>

Bloquear el acceso a wp: incluye carpetas y archivos

La carpeta wp-includes es una parte importante del software WordPress y contiene la mayoría de los archivos de su sitio.

Eso es todo lo que contiene esta carpeta. Tus propias subidas, plugins, temas, etc. no van ahí, así que nadie necesita acceder a la carpeta wp-includes, ¡ni siquiera tú! Utilice el siguiente código en el archivo.htaccess de su sitio web para bloquear el acceso al wp: incluye la carpeta y los archivos.

# Negar el acceso a wp: incluye carpetas y archivos
<IfModule mod_rewrite.c>
ReescribirMotor en
RewriteBase / RewriteBase
RewriteRule ^wp-admin/includes/ -[F,L]
RewriteRule!^wp-includes/ -[S=3]
RewriteRule ^wp-includes/[^/]+\.php$ -[F,L]
RewriteRule ^wp-includes/js/tinymce/langs/.+\.php -[F,L]
RewriteRule ^wp-includes/theme-compat/ -[F,L]
Módulo </IfModule>

Proteger contra la inyección de SQL

Por último, pero no por ello menos importante, es la protección contra la inyección SQL en WordPress.

Es importante señalar de nuevo que esto no va a mantenerte protegido al 100% para siempre, así que no uses ciegamente este código y pienses que eso es todo.

Usted necesita estar al tanto de su monitoreo de seguridad todo el tiempo. Sin embargo, esto bloqueará al menos algunos de los intentos más comunes de inyección SQL. Inserte este código en su archivo roots.htaccess.

# Proteger contra la inyección de SQL
<IfModule mod_rewrite.c>
ReescribirMotor en
RewriteBase / RewriteBase
RewriteCond %{REQUEST_METHOD} ^(HEAD|TRACE|DELETE|TRACK)[NC]
RewriteRule ^(.*)$ -[F,L]
RewriteCond %{QUERY_STRING} N - NO, NO, NO, NO, NO
RewriteCond %{QUERY_STRING} boot\.ini[NC,OR]
RewriteCond %{QUERY_STRING} tag=[NC,OR]
RewriteCond %{QUERY_STRING} ftp\:  [NC,OR]
RewriteCond %{QUERY_STRING} http\:  [NC,OR]
RewriteCond %{QUERY_STRING} https:  [NC,OR]
RewriteCond %{QUERY_STRING} (N-).*script.*(N-)[NC,OR]
RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|%3D)[NC,OR]
RewriteCond %{QUERY_STRING} base64_encode.*(.*)[NC,OR]
RewriteCond %{QUERY_STRING} * (NC, OR) *
RewriteCond %{QUERY_STRING} * ^.*(|"|'|<|>>>>N-).*[NC,O]
RewriteCond %{QUERY_STRING} ^.*(%24&x).*[NC,OR]
RewriteCond %{QUERY_STRING} ^.*(%0|%A|%B|%C|%D|%E|%F|127N-.0).*[NC,OR]
RewriteCond %{QUERY_STRING} ^.*(globals|encode|localhost|loopback).*[NC,OR]
RewriteCond %{QUERY_STRING} ^.*(request|select|insert|union|declare).*[NC]
RewriteCond %{HTTP_COOKIE} !^.*WordPress_logged_in_.*$$
RewriteRule ^(.*)$ -[F,L]
Módulo </IfModule>

Bloqueo de la ejecución de código PHP con reglas.htaccess

Además de las reglas anteriores, también puede detener la ejecución de código PHP dentro de ciertas carpetas como su wp-content/uploads y wp-includes/ folders.

Dependiendo del tema y de la configuración del plugin, estos pueden funcionar o romper ciertas cosas. Puedes probarlos y ver cómo te va. Si se producen errores, simplemente elimine el archivo.

Bloquear la ejecución de PHP en wp-incluye la carpeta

Para ello, necesita crear un nuevo archivo.htaccess con el siguiente código. Este archivo debe ser cargado en el directorio wp-includes.

# Proteger contra la ejecución de php
<Archivos *.php>
negar de todo
</Ficheros>

Bloquear la ejecución de PHP en la carpeta wp-content/uploads

Por lo general, no debería tener código PHP en su carpeta de subidas ya que está ahí para almacenar sus imágenes. El código de abajo básicamente permite los siguientes tipos de archivos, pero no permite la ejecución de PHP.

Una vez más esto necesita ser un nuevo archivo.htaccess con el siguiente código en el directorio wp-content/uploads.

# Desactivar el acceso a todos los tipos de archivos excepto los siguientes
#Ordenar negar, permitir
#Deny from all
#<Subtítulos por aRGENTeaM
#Allow from all
#</Files>

Archivo.htaccess completo para bloquear robots defectuosos, acceso a archivos y bloqueo de inyección SQL

Para facilitar su uso, a continuación se presentan todas las reglas discutidas anteriormente para el archivo root.htaccess.

Recuerde que el archivo root.htaccess va en el directorio raíz de su sitio web (el mismo lugar que el archivo wp-config.php.)

#.HTACCESS ARCHIVO INFO POR 
#THRIVEWP.COM
##############################

#COMENZAR código https
ReescribirMotor en
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}[R=301,L]


#BEGIN Bloquea a los malos hackers
SetEnvIfNoCase User-Agent "^libwwww-perl*" block_bad_bots
Denegar desde env=block_bad_bots

# Desactivar la navegación por el directorio
Opciones Todos los Índices

# Denegar el acceso a todos los archivos.htaccess
<Subtítulos por aRGENTeaM
para permitir, negar
negar de todo
satisfacer todas
</ficheros>
 
# Denegar el acceso a readme.html
<ficheros readme.html>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>).
Orden permitir, negar
Negación de todo
</ficheros>
 
# Denegar el acceso a license.txt
<archivos license.txt>
Orden permitir, negar
Negación de todo
</ficheros>
 
# Denegar el acceso al archivo wp-config.php
<ficheros wp-config.php>
para permitir, negar
negar de todo
</ficheros>
 
# Denegar el acceso a error_log
<ficheros error_log>
Orden permitir, negar
Negación de todo
</ficheros>

# Negar el acceso a wp: incluye carpetas y archivos
<IfModule mod_rewrite.c>
ReescribirMotor en
RewriteBase / RewriteBase
RewriteRule ^wp-admin/includes/ -[F,L]
RewriteRule!^wp-includes/ -[S=3]
RewriteRule ^wp-includes/[^/]+\.php$ -[F,L]
RewriteRule ^wp-includes/js/tinymce/langs/.+\.php -[F,L]
RewriteRule ^wp-includes/theme-compat/ -[F,L]
Módulo </IfModule>

# Proteger contra la inyección de SQL
<IfModule mod_rewrite.c>
ReescribirMotor en
RewriteBase / RewriteBase
RewriteCond %{REQUEST_METHOD} ^(HEAD|TRACE|DELETE|TRACK)[NC]
RewriteRule ^(.*)$ -[F,L]
RewriteCond %{QUERY_STRING} N - NO, NO, NO, NO, NO
RewriteCond %{QUERY_STRING} boot\.ini[NC,OR]
RewriteCond %{QUERY_STRING} tag=[NC,OR]
RewriteCond %{QUERY_STRING} ftp\:  [NC,OR]
RewriteCond %{QUERY_STRING} http\:  [NC,OR]
RewriteCond %{QUERY_STRING} https:  [NC,OR]
RewriteCond %{QUERY_STRING} (N-).*script.*(N-)[NC,OR]
RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|%3D)[NC,OR]
RewriteCond %{QUERY_STRING} base64_encode.*(.*)[NC,OR]
RewriteCond %{QUERY_STRING} * (NC, OR) *
RewriteCond %{QUERY_STRING} * ^.*(|"|'|<|>>>>N-).*[NC,O]
RewriteCond %{QUERY_STRING} ^.*(%24&x).*[NC,OR]
RewriteCond %{QUERY_STRING} ^.*(%0|%A|%B|%C|%D|%E|%F|127N-.0).*[NC,OR]
RewriteCond %{QUERY_STRING} ^.*(globals|encode|localhost|loopback).*[NC,OR]
RewriteCond %{QUERY_STRING} ^.*(request|select|insert|union|declare).*[NC]
RewriteCond %{HTTP_COOKIE} !^.*WordPress_logged_in_.*$$
RewriteRule ^(.*)$ -[F,L]
Módulo </IfModule>