X

Cómo proteger WordPress contra solicitudes de URL maliciosas

Snippets de IsItWP

¿Estás buscando una forma de proteger tu sitio de WordPress de solicitudes de URL maliciosas? Si bien probablemente exista un plugin para esto, hemos creado un fragmento de código rápido que puedes usar para proteger WordPress contra solicitudes de URL maliciosas en WordPress.

Instrucciones:

Todo lo que tienes que hacer es agregar este código al archivo .htaccess de tu tema.

$request_uri = $_SERVER['REQUEST_URI'];
$query_string = $_SERVER['QUERY_STRING'];
$user_agent = $_SERVER['HTTP_USER_AGENT'];

// request uri
if (	//strlen($request_uri) > 255 || 
	stripos($request_uri, 'eval(') || 
	stripos($request_uri, 'CONCAT') || 
	stripos($request_uri, 'UNION+SELECT') || 
	stripos($request_uri, '(null)') || 
	stripos($request_uri, 'base64_') || 
	stripos($request_uri, '/localhost') || 
	stripos($request_uri, '/pingserver') || 
	stripos($request_uri, '/config.') || 
	stripos($request_uri, '/wwwroot') || 
	stripos($request_uri, '/makefile') || 
	stripos($request_uri, 'crossdomain.') || 
	stripos($request_uri, 'proc/self/environ') || 
	stripos($request_uri, 'etc/passwd') || 
	stripos($request_uri, '/https/') || 
	stripos($request_uri, '/http/') || 
	stripos($request_uri, '/ftp/') || 
	stripos($request_uri, '/cgi/') || 
	stripos($request_uri, '.cgi') || 
	stripos($request_uri, '.exe') || 
	stripos($request_uri, '.sql') || 
	stripos($request_uri, '.ini') || 
	stripos($request_uri, '.dll') || 
	stripos($request_uri, '.asp') || 
	stripos($request_uri, '.jsp') || 
	stripos($request_uri, '/.bash') || 
	stripos($request_uri, '/.git') || 
	stripos($request_uri, '/.svn') || 
	stripos($request_uri, '/.tar') || 
	stripos($request_uri, ' ') || 
	stripos($request_uri, '<') || 
	stripos($request_uri, '>') || 
	stripos($request_uri, '/=') || 
	stripos($request_uri, '...') || 
	stripos($request_uri, '+++') || 
	stripos($request_uri, '://') || 
	stripos($request_uri, '/&&') || 
	// query strings
	stripos($query_string, '?') || 
	stripos($query_string, ':') || 
	stripos($query_string, '[') || 
	stripos($query_string, ']') || 
	stripos($query_string, '../') || 
	stripos($query_string, '127.0.0.1') || 
	stripos($query_string, 'loopback') || 
	stripos($query_string, '%0A') || 
	stripos($query_string, '%0D') || 
	stripos($query_string, '%22') || 
	stripos($query_string, '%27') || 
	stripos($query_string, '%3C') || 
	stripos($query_string, '%3E') || 
	stripos($query_string, '%00') || 
	stripos($query_string, '%2e%2e') || 
	stripos($query_string, 'union') || 
	stripos($query_string, 'input_file') || 
	stripos($query_string, 'execute') || 
	stripos($query_string, 'mosconfig') || 
	stripos($query_string, 'environ') || 
	//stripos($query_string, 'scanner') || 
	stripos($query_string, 'path=.') || 
	stripos($query_string, 'mod=.') || 
	// user agents
	stripos($user_agent, 'binlar') || 
	stripos($user_agent, 'casper') || 
	stripos($user_agent, 'cmswor') || 
	stripos($user_agent, 'diavol') || 
	stripos($user_agent, 'dotbot') || 
	stripos($user_agent, 'finder') || 
	stripos($user_agent, 'flicky') || 
	stripos($user_agent, 'libwww') || 
	stripos($user_agent, 'nutch') || 
	stripos($user_agent, 'planet') || 
	stripos($user_agent, 'purebot') || 
	stripos($user_agent, 'pycurl') || 
	stripos($user_agent, 'skygrid') || 
	stripos($user_agent, 'sucker') || 
	stripos($user_agent, 'turnit') || 
	stripos($user_agent, 'vikspi') || 
	stripos($user_agent, 'zmeu')
) {
	@header('HTTP/1.1 403 Forbidden');
	@header('Status: 403 Forbidden');
	@header('Connection: Close');
	@exit;
} 

Nota: Si es la primera vez que agregas fragmentos de código en WordPress, consulta nuestra guía sobre cómo copiar / pegar fragmentos de código correctamente en WordPress, para que no rompas tu sitio accidentalmente.

Si te gustó este fragmento de código, considera revisar nuestros otros artículos en el sitio como: 18 mejores plugins de comentarios de WordPress y cómo crear un formulario emergente en WordPress.

Comentarios   Dejar una respuesta

  1. gracias

  2. Hola Kevin, ¿es esto lo mismo que hace Secure Wordpress (http://wordpress.org/extend/plugins/secure-wordpress/), mira el elemento 11 de la lista?

  3. Los niveles de usuario fueron obsoletos en WP 3.0, deberías usar capacidades o roles actuales en tu verificación current_user_can, por ejemplo:
    if ( ! current_user_can( 'administrator' ) ) {

    1.  Muy cierto Drew, actualizaré el fragmento ¡gracias!

  4. ¿Puedo simplemente agregar este código a mi plugin functions.php?

    También me gustaría ver código para protección POST.

    1.  la mejor manera de incluir esto, encuentro que es colocarlo dentro de la carpeta mu-plugins/ si no tienes una, puedes crearla. Esto forzará que el plugin se ejecute como un plugin de uso obligatorio. Descarga el zip de arriba, esa es la mejor manera de ejecutarlo.

  5. Esto solo protegerá una solicitud GET, como index.php?name=eval(base64_decode(EVIL+CODE

    Pero en el Foro de Wordpress, mucha gente está siendo hackeada a través de solicitudes POST, y entonces este código no protegerá.

    ¿Tienes algo similar pero para POST?

Agregar un comentario

Nos complace que hayas elegido dejar un comentario. Ten en cuenta que todos los comentarios son moderados de acuerdo con nuestra política de privacidad, y todos los enlaces son nofollow. NO uses palabras clave en el campo del nombre. Tengamos una conversación personal y significativa.

Lista de verificación para lanzar WordPress

La lista de verificación definitiva para lanzar WordPress

Hemos recopilado todos los elementos esenciales de la lista de verificación para el lanzamiento de tu próximo sitio web de WordPress en un práctico ebook.
¡Sí, envíame el eBook gratis!