Posts en Desarrollo

La importancia de NO usar FTP

Cuando uno comienza en el mundo de desarrollo en WordPress, una de las primeras y más básicas cosas que nos encontramos es: la instalación de nuestro sitio. Ya sea de manera local para poder subirlo después a nuestro servidor, o directamente a nuestro servidor (no recomendable).

El sitio necesita ser hospedado en algún lugar para que pueda ser visitado por los usuarios. Obviamente, ya que el usuario final no puede ver nuestro sitio si se mantiene en nuestra computadora, a menos que la convirtamos en un servidor personal, que no es muy recomendable.

Sea como sea la forma en que comencemos, al final siempre será necesario mover nuestra instalación a nuestro servidor, la pregunta es: ¿Cómo hacemos eso? La respuesta más común (y en casi todos los casos errónea) es: usar FTP.

¿Qué es el FTP?

FTP son las siglas de File Transfer Protocol ó en Español Protocolo de Transferencia de Archivos. Sirve básicamente para mover archivos entre computadoras (nuestra computadora -> el servidor y viceversa). Es una de las formas más básicas para conseguirlo.

¿Por qué no utilizar FTP?

FTP es popular por su facilidad para utilizarse. Hay un sin fin de clientes FTP que únicamente requieren que arrastremos nuestros archivos de un lado del cliente (nuestra PC) hacia el otro (el servidor) y listo, nuestro archivo ha sido subido a la nube.

Sin embargo, hay muchas, muchas razones por las que utilizar FTP hoy en día es una muy mala idea.

1. Es antiguo

FTP existe desde los comienzos del internet. La primera especificación del protocolo se escribió en 1971, y su última actualización sucedió en 1998, hace 20 años. Dato curioso, ¿conocen el HTTP? pues cuando la primer versión de HTTP fue lanzada ya superaba en todo sentido al FTP.

2. Problemas con Firewalls

No estoy 100% seguro que tan común sea esto, pero uno de los problemas con los que me he encontrado haciendo ésta investigación, es que el FTP no se lleva bien con Firewalls, por razones que van directo a la forma en que FTP funciona.

El problema es que durante la transferencia FTP abre conexiones simultáneas. Una de ellas en un puerto seleccionado al azar, lo que termina provocando que el Firewall bloquee esa conexión (ya que no sabemos en que puerto vendrá). Muchas veces obligándonos a desactivar el Firewall, mala idea.

3. No es seguro

Tal vez el punto más importante que quiero tocar, es que, FTP es probablemente la herramienta más insegura que puedes utilizar por un par de razones:

Versiones seguras de FTP

Debido a los multiples problemas que tiene el FTP, no es de extrañarse que se hayan intentado solucionar en el pasado. El más importante por supuesto es la seguridad. Y para ello se han dado muchas respuestas, como por ejemplo sFTP.

sFTP es una versión de FTP que corre a través de SSH, lo que hace que la conexión esté por fin encriptada. Resolviendo uno de los problemas más grandes de FTP, ¿o no?

sFTP proteje los archivos mientras están en camino. Sin embargo, hay un pequeño (o mayor, dependiendo de qué tanto tiempo dure la transferencia) momento en el que nuestros archivos están expuestos: Al momento de recibirlos.

El sistema necesita descargar el archivo antes de poder encriptarlo. Mientras mayor es el archivo, o más tiempo dure la conexión, más tiempo se le dará a un atacante para que pueda ver el archivo. Pero, tomando en cuenta que un atacante debe ya tener acceso al sistema para lograr esto, creo que ese archivo sería el menor de nuestros problemas.

Entonces, ¿qué puedo utilizar?

Por ahora sugiero que se muevan inmediatamente a sFTP, por lo menos. Yo recomendaría utilizar una combinación de SSH y Git para manejar sus sitios ¿quieren saber cómo hacerlo? Espérenlo pronto 😉

Eliminar elementos de un array en Javascript

Muchas las cosas más sencillas son las que más dolores de cabeza nos llegan a dar, a pesar de tener muchos años de experiencia en el mundo del desarrollo web, aún tengo que Googlear las cosas más básicas prácticamente todos los días.

Es por eso que he decidido simplemente crear mi propia versión de estos tips, para así tener una referencia en mi sitio cuando inevitablemente tenga que buscarlos de nuevo, ésta vez. Remover elementos de un array en Javascript

El problema, como muchas cosas en la vida, (y en Javascript) es que no es tan simple como debería, y, como muchas cosas en la vida (y en Javascript) hay muchas maneras de hacerlo.

Remover un elemento utilizando .splice()

El método .splice() es probablemente la forma más fácil de manipular arrays, nos permite agregar, reemplazar, o eliminar un cierto elemento en base a su índice, ejemplo:

La ventaja de este método es: En realidad no elimina el elemento del array, si no que lo mueve. Básicamente el método regresa cualquier valor que se ha eliminado del array, en este caso lo guardamos en una nueva constante, para uso en un futuro.

Otro punto a notar, es que podemos quitar varios elementos utilizando éste mismo método, simplemente debemos aumentar la cantidad en el segundo argumento.

Remover el último elemento utilizando .pop()

El método .pop(), es algo así como el opuesto de .push(), mientras que .push() Agrega un nuevo elemento al final de un array, .pop() elimina el último elemento de un array, ejemplo:

Al igual que .splice(), .pop() regresará el elemento “removido” para que podamos usarlo en un futuro. Sin embargo, nótese que en ésta ocasión recibimos un string, y no un array.

Remover el primer elemento utilizando .shift()

El método .shift(), es el opuesto a .unshift(), y éstos a su vez son opuestos a .pop() y .push(), mientras que éstos últimos trabajan al final del array, los primeros hacen su magia al comienzodel array.

.shift() eliminará el primer elemento en nuestro array, ejemplo:

Una vez más, nótese que el valor que recibimos es un string

Remover un elemento en base a su valor

Hasta ahora hemos visto cómo eliminar elementos en base a su índice, pero, ¿Qué pasa cuándo necesitamos remover algo an base a su valor?

El procedimiento es parecido, pero en éste caso necesitamos primero encontrar el índice del elemento con ese valor.

Para encontrar el índice podemos utilizar .indexOf(), y lo utilizamos en conjunto con .splice(), ejemplo, quitemos “bar”:

Nótese la comparación para asegurarnos de que el índice existe, si no existe, regresará -1. Usualmente una comparación fallida regresaría 0, (traduciéndose a false), pero como los arrays comienzan en el índice 0, no nos ayudaría mucho ¿Cierto?

Remover elementos utilizando .filter()

Por último, podemos utilizar el método .filter() para crear un nuevo array con los valores deseados, técnicamente éste método no elimina los elementos del array, ya que el array original no cambia. Ejemplo, creemos un nuevo array sin “bar”: