miércoles, 31 de mayo de 2023

Limpiar un Wordpress hackeado

 Check list para limpiar instancias de Wordpress que han sido hackeadas, y para prevenir hackeos. Para técnicos de sistemas con acceso SSH al servidor.

  1. Hay que estar atentos a las fechas de modificacion de los archivos. El hackeo puede ser con la inyección de ficheros nuevos, con nombres raros y codigo ofuscado, pero tambien puede hacerse modificando ficheros del nucleo de Wordpress. Ahí la pista la dará la fecha de modificación de los ficheros. ls -latr permite listar los ficheros de un directorio ordenados por fechas.
  2. El comando "find . -type f -mtime -1 -ls" lista todos los ficheros que han cambiado en el último dia.
  3. Los hackers tratan de pasar inadvertidos. Por este motivo, ponen codigo PHP en directorios donde no debería estar y donde no vas a mirar: /log/, /css/, /js/.
  4. Atentos a los nombres de los ficheros. Tratan de pasar inadvertidos con extensiones .js.php, o .css.php.
  5. Los dos ficheros más vulnerables al hackeo son el .htaccess del raiz de la web (ahí se encargan de dar permisos a la ejecución de archivos de cualquier tipo. pl, php, etc) y el index.php ,que siempre se ejecuta y por tanto ahí inyectan código de propagación para replicar y crear ficheros que te encargas de borrar.
  6. En el .htaccess tienes que bloquear la ejecución del xmlrpc.php. Es un foco de vulnerabiilidad.
  7. Tienes que tener instalado el Wordfence y hacer escaneos periodicos de los ficheros.
  8. A veces algunos archivos no se detectan. Si se tiene acceso a la consola de Linux, poner el siguiente comando:
find . -type f -exec grep -H "eval" {} \; | less

Y buscar en nano la palabra "eval", suelen indentarlo muchisimo para que no se vea.

sábado, 1 de junio de 2019

Base de datos de aeropuertos del mundo con coordenadas geográficas - Worldwide airports database with geodetic coordinates

Este blog lo utilizo como bloc de notas en el que apunto una serie de tareas relacionadas con la creación de blogs, desde una perspectiva muy técnica, para programadores (development for bloggers).

Hasta ahora, la gran mayoría de las entradas trataban sobre posicionamiento en buscadores (lo que todo el mundo llama SEO, search engine optimization), sobre cómo personalizar las plantillas de Blogger (blogspot.com), o sobre algunas técnicas de programación avanzada para personalizar tus blogs.

Actualización a 2 de Junio de 2019.

Han pasado ya 2 años desde que lancé el proyecto de buscador especializado en mapas, y me he lanzado con nuevos proyectos. Si el trabajo que hice de recopilar las coordenadas de aeropuertos del mundo te ha servido de ayuda, te agradecería que visites estas webs y me des tu opinión en los comentarios.

Guía de Compra de Regalos Originales y Divertidos.

Parece un cambio de inquietudes bastante radical ¡Pasa de hacer un buscador de mapas, y de trabajar con coordenadas, en hacer una guía de compras de regalos originales y divertidos!

Pues sí, en Internet hay que ir cambiando constantemente y, seamos sinceros, la gente acude a Internet a buscar todo tipo de información

Me dí cuenta de que en los regalos divertidos y de broma había un nicho sin explotar, cuando el amigo invisible del año pasado me hinché de buscar ideas de regalos divertidos, y  no encontraba nada más que generalidades y los típicos blogs de rankings, con 6, 7 u 8 ideas sueltas.

Así que, viendo que tenía una necesidad sin resolver, me he liado la manta a la cabeza y he lanzado el proyecto https://regalosdebroma10.com/ 

La idea es recopilar ideas divertidas y originales para hacer regalos, pero clasificadas para la ocasión: amigo invisible, jubilación de un compañero, primera paternidad o maternidad de una amiga, compañero que cambia de trabajo, carnaval, fiesta de fin de año, despedidas de soltero, despedidas de soltera, camisetas para friquis...¡Hay regalos de coña como tazas con la imagen del negro del whatsapp!

Opiniones y reviews de los mejores patinetes y monopatines skate del mercado.

Con los patinetes, me pasó prácticamente lo mismo que con los regalos originales. Quería comprarme un patinete de ruedas grandes, pero hoy en día casi toda la información que vas a encontrar en Internet está referida a patinetes eléctricos.

Yo no quería un patinete eléctrico porque tengo varios compañeros de trabajo que tienen el famosísimo Xiaomi Mijia M365, y aunque el patinete es una pasada, falla lo que en mi opinión es esencial para usarlo para ir al trabajo: su portabilidad y su peso. ¿Es plegable? Sí. ¿Sirve para llevarlo encima en el metro o en el autobus? En mi opinión: no. El patinete eléctrico Xiaomi Mi Scooter pesa 12 kg, y plegado es muy poco compacto. Mis compañeros de trabajo lo usan como si fuera una bicicleta: lo meten en el metro sin plegar, y cuando se bajan de él lo llevan empujándolo.

Así que yo quería comprar un patinete adulto para ciudad, con ruedas grandes y que fuese plegable ¡Pero no eléctrico! Estos patinetes pesan entre 3 y 5 kg. Una pasada. Y como me hinché de buscar, y vi que un patinete urbano no tiene nada que ver con un patinete freestyle (stunt), decidí crear una web para ayudar a la gente que se quiera comprar un patinete:

https://www.depatinetes.com/


La biblia de las superheroinas de los cómics.

Este es, sin dudarlo, mi proyecto más personal. Yo soy amante de los cómics de superheroes desde que prácticamente tengo uso de razón. ¡Y me daban igual los cómics de Marvel que los de DC!

Os podeis figurar que, ahora que estamos en la época dorada de los superheroes en el cine, estoy encantado. Pero salvo en los dos últimos años, en este mundillo siempre había un gran hueco sin cubrir si hablamos de superheroinas de los comics. Y este es el hueco que precisamente pretendo cubrir con mi web que trata única y exclusivamente sobre personajes femeninos de los comics, de Marvel, DC o cualquier otra editorial independiente:




Actualización a 19 de Junio de 2017:
Por un proyecto en el que ando metido, del que pronto voy a hacer su lanzamiento en este mismo blog, en esta entrada voy a liberar un contenido de temática diferente a la que viene siendo habitual: una base de datos de aeropuertos del mundo, con nombres de ciudades y paises en inglés y castellano, incluyendo coordenadas geográficas latitud y longitud

El proyecto al que me refería en este post, del que ya han pasado más de 6 años, es un motor de búsqueda de mapas, www.lookingformaps.com, incluyendo estos mapas de aeropuestos del mundo.
 

Para el proyecto del que hablo necesitaba los códigos IATA de los aeropuertos del mundo. Buscando con Google en la web, lo primero que encontré fue la entrada de la wikipedia con los aeropuertos por código IATA. Pero en vez de aparecer en un único listado, que me permitiese leerlo con un programa de ordenador y parsearlo, los aeropuertos aparecen clasificados por paises y continentes, en páginas distintas, sin coordenadas, y en formato MediaWiki, que es el wiki utilizado por Wikipedia.

Buscando fuentes en lengua inglesa de aeropuertos del mundo, encontré la Global Airport Database, una base de datos constituida por 9300 aeropuertos de todo el mundo, en formato de archivo de texto separado por comas (CSV), y distribuida bajo licencia libre CPL (Common Public License), un tipo de licencia muy parecido a la LGPL, que permite su uso en software privativo.

No obstante, pese a aproximarse bastante a lo que buscaba, esta base de datos adolecía de una serie de limitaciones que me impedían poder utilizarla para el software que estoy desarrollando:
  • Los nombres de ciudades y paises están en inglés. Para explotar esta base de datos, necesitaba tanto nombres en inglés como en castellano
  • Las coordenadas, latitud y longitud, de los aeropuertos están en formato grados, minutos y segundos. Para poder representar esta base de datos en un mapa, a través de cualquiera de las APIs existentes en la nube para la publicación e mapas como Yahoo, Bing o Google, es necesario que estén en formato grado y décimas de grado
  • La altitud sobre el nivel del mar está en piés, y no en metros.
Ante estas limitaciones, y aprovechando que la licencia CPL bajo la que estaba liberado el trabajo original me lo permitía, decidí mejorar esta base de datos con una serie de tratamientos automatizados:
  • Utilizando los servicios web de traducción de Google, Google Translate, y su API Java, añadí los nombres de ciudades y paises en castellano a la base de datos. Es asombroso lo que ha mejorado la calidad de las traducciones de Google Translate. Para muestra un botón: "IVORY COAST" es traducido como "COSTA DE MARFIL".
  • Mediante un cálculo simple, convertí grados, minutos y segundos en grados y partes enteras de grado, y pies en metros
El resultado final se puede descargar según diferentes formatos: CSV, ODS (OpenOffice.org), XLS (Excel) y KML (Google Maps y Google Earth).

Podeis descargar estos archivos de los siguientes enlaces del servicio de discos duros virtuales Mediafire:

Al visualizar la base de datos de aeropuertos del mundo en formato KML con Google Earth, he detectado que algunas coordenadas salen claramente desplazadas, en especial las de los aeropuertos de España. Esto es debido a que en la base de datos original determinados registros tenían el sentido de la longitud (Este u Oeste, East or West) marcado con el valor U (Unknown).

El siguiente tratamiento a aplicar, para conseguir una correcta visualización geográfica de los aeropuertos de esta base de datos, será confrontar las coordenadas de estos aeropuertos con servicios de nomenclator y consulta de coordenadas de nombres geográficos (geonames, Yahoo Places, Google, etc) para tratar de corregir la posición de aquellos aeropuertos que tengan coordenadas incorrectas.





jueves, 14 de febrero de 2019

Dinorank❤️te❤️desplaza❤️y❤️Enlazalia❤️te❤️enlaza

En el mundillo SEO de vez en cuando les gusta medírsela para ver quien la tiene más larga.

Por eso, las verdaderas manos que mueven los hilos, gustan de sacar concursos para SEOs en los que por una miseria de premio, tienen a decenas de SEOs dejándose su tiempo y sus horas (y con ello su dinero) para ganar el prestigio de ser nombrado "el mejor SEO de habla hispana", a cambio de un trabajo de link building y menciones sociales quie no tiene precio.

El último concurso de este tipo lo saca Dean Romero, el tio que hay detrás del blog blogger30.com, un blog muy potente con miles de visitas diarias, y un tío que está encantado de conocerse a sí mismo.

Yo, como paso de concursar, pues this is not my bussiness, he escrito esta entrada para ponerle un link a dos amiguetes:

  • El blog de Gastre, que es un tío muy majo, y posiblemente el mejor relaciones públicas del SEO: Dinorank te desplaza y Enlazalia te enlaza.
  • Una página que Diego, otro hipercrack del SEO, ha hecho aprovechando un dominio expirado que tenía sin utilizar:Dinorank te desplaza y Enlazalia te enlaza.

Ala, ahí va mi enlace, en la única mierda de blog que tenía dedicada a esta temática, y que tengo abandonado desde hace muchísimo tiempo. También le meteré un enlace interno desde la página que tengo mejor posicionada de este blog.

¿Por qué se organiza el concurso de Dinorank te desplaza y Enlazalia te enlaza? 


¿Y por qué lo hace? Para promocionar una nueva pala, que acaba de sacar a la venta, dentro de esta fiebre del oro que se está convirtiendo el SEO y ganar dinero con Internet.

Esta pala, o navaja suiza por la cantidad de cosas que dicen que hace, se llama DinoRank.
Si es buena o no no voy a ser yo quien lo diga, que lo diga el mercado.

Yo ni siquiera soy un SEO, soy simplemente un amateur que aspira que algún día le suene la flauta y que alguno de mis experimentes den el suficiente dinero como para empezar a dedicarme a esto.

Junto con Dean Romero, que aporta su comunidad y poder de convocatoria (ya os digo, miles de visitas diarias de SEOs y de aprendices de SEOs como yo), el concurso lo organiza Enlazalia, una enpresa que vende servicios de link building y que es la que aporta la pasta.

La jugada es una obra maestra del marketing, y de la nueva economía colaborativa basada en tener un montón de gente currando por tí por 4 perras. La cantidad de menciones, enlaces, dominios que le enlacen, y actividad en redes sociales que van a conseguir por LITERALMENTE 4 perras.

Los 2.000 euros que van a dar en premios, si se los hubieran gastado en Adwords o en Facebook Ads, los habrían quemado en un plis plas. No quiero pensar el CPC que tendrán las palabras clave por las que podrían pujar estas dos herramientas:

  • Herramienta SEO.
  • Link Building.
  • Enlaces manuales.
  • Tracking de Posiciones.
  • Keyword Research.
  • Análisis de enlaces.
En fin, que los que organizan esto son unos cracks, y creo que los que participan tontos no son. No solo lo hacen por ego, sino por la fama que te puede dar ganar un concurso así, lo que sin duda se traduciría en nuevos clientes y en enlaces a sus webs personales...

Ahora, que las técnicas black hat que van a utilizar no se si son el mejor reclamo para un cliente. Veréis como a los SEOs serios de este país no participan (o al menos no exponen sus webs personales).





viernes, 30 de diciembre de 2011

Passing values from PHP to javascript

Seen in stackoverflow:



What is the easiest way to encode a PHP string for output to a Javascript variable?

I have a PHP string which includes quotes and newlines. I need the contents of this string to be put into a Javascript variable.

Normally, I would just construct my Javascript in a PHP file, ala:

var myvar = "";


However, this doesn't work when $myVarValue contains quotes or newlines.



Expanding on someone else's answer:



This does require PHP 5.2.0 or greater.

miércoles, 30 de noviembre de 2011

Creating dialogs with jquery-ui

<script type="text/javascript">
$(function(){

var options = {
autoOpen: false,
width: 600,
buttons: {
"Ok": function() {
$(this).dialog("close");
}
}
};
$("#dialog").dialog(options);


// Dialog Link
$('#dialog_link').click(function(){
$('#dialog').dialog('open');
return false;
});

//hover states on the static widgets
$('#dialog_link, ul#icons li').hover(
function() { $(this).addClass('ui-state-hover'); },
function() { $(this).removeClass('ui-state-hover'); }
);

});
</script>

miércoles, 2 de noviembre de 2011

jueves, 20 de octubre de 2011

Removing html tags in a php string

Visto en http://php.net/manual/en/function.strip-tags.php 

strip_tags

(PHP 4, PHP 5)
strip_tagsStrip HTML and PHP tags from a string

reject note Description

string strip_tags ( string $str [, string $allowable_tags ] )
This function tries to return a string with all NUL bytes, HTML and PHP tags stripped from a given str. It uses the same tag stripping state machine as the fgetss() function.

reject note Parameters

str
The input string.
allowable_tags
You can use the optional second parameter to specify tags which should not be stripped.
Note:
HTML comments and PHP tags are also stripped. This is hardcoded and can not be changed with allowable_tags.
Note:
This parameter should not contain whitespace. strip_tags() sees a tag as a case-insensitive string between < and the first whitespace or >. It means that strip_tags(" ", " ") returns an empty string.

reject note Return Values

Returns the stripped string.

reject note Changelog

Version Description
5.0.0 strip_tags() is now binary safe
4.3.0 HTML comments are now always stripped

reject note Examples

Example #1 strip_tags() example
$text 'Test paragraph.
 Other text'
;
echo 
strip_tags($text);
echo 
"\n";
// Allow  and 
echo strip_tags($text'');?>

reject note Notes

Warning
Because strip_tags() does not actually validate the HTML, partial or broken tags can result in the removal of more text/data than expected.
Warning
This function does not modify any attributes on the tags that you allow using allowable_tags, including the style and onmouseover attributes that a mischievous user may abuse when posting text that will be shown to other users.

reject note See Also



stripcslashes> <strcspn
[edit] Last updated: Fri, 14 Oct 2011
 
reject note add a
 note add a note User Contributed Notes strip_tags
dhgouveia at hotmail dot com 10-Oct-2011 11:09
this is just for strip the inside tags

$allow = '
  • ';

    $str = '
    Paragraph
    Bold
    Red

    Header

    '
    ;

    $result = strip_tags($str,$allow);
    $result = clean_inside_tags($result,$allow);

    echo
    '';

    //Clean the inside of the tags
    function clean_inside_tags($txt,$tags){
       
       
    preg_match_all("/<([^>]+)>/i",$tags,$allTags,PREG_PATTERN_ORDER);

        foreach (
    $allTags[1] as $tag){
           
    $txt = preg_replace("/<".$tag."[^>]*>/i","<".$tag.">",$txt);
        }

        return
    $txt;
    }

    ?>

Limpiar un Wordpress hackeado

 Check list para limpiar instancias de Wordpress que han sido hackeadas, y para prevenir hackeos. Para técnicos de sistemas con acceso SSH a...