Actualización de seguridad Laravel 5.6.30

Ayer se publicó una actualización de seguridad para Laravel. Es una vulnerabilidad relacionada con la APP_KEY. Esta variable es un valor que se usa para encriptar algunos valores como las sesiones de usuarios.

¿Es grave? Sí, pero solo debes preocuparte si alguien se ha hecho con esta APP_KEY. Eso solo puede hacerlo alguien con acceso al servidor (por ejemplo algún antiguo proveedor o un empleado resentido).

Si crees que no es el caso no deberías preocuparte aunque siempre es preferible actualizar.

La APP_KEY se usa para cifrar las sesiones de usuario, no para las contraseñas. Así que si la cambias las contraseñas no se verán afectadas pero sí las sesiones de usuario (cosa que, bueno, no es tan grave).

Laravel - el framework de los artesanos

Laravel – el framework de los artesanos

Cómo indicarle al git la llave ssh que debe usar

Si tienes tantas llaves ssh como yo seguro que tarde o temprano tendrás problemas porque en algún sitio se quejará de “too many retries”. Si eso te pasa en git hay una forma de indicar cuál es la llave que quieres usar al conectarte vía ssh.

En mi caso yo tenía problemas al conectarme a BitBucket. Así que para solucionarlo hay que editar el fichero de configuración SSH de tu ordenador. En mi caso:

/home/gorka/.ssh/config

y añadir:

host bitbucket.org
    HostName bitbucket.org
    IdentityFile ~/.ssh/llave_publica_para_conectarme_a_bitbucket.pub
    User gorka

En tu caso deberás cambiar “gorka” por tu usuario en BitBucket y ~/.ssh/llave_publica_para_conectarme_a_bitbucket.pub por la ruta de tu llave pública (la que uses para conectarte a BitBucket).

Si el problema lo tuvieses con GitHub harías:

host github.com
    HostName github.com
    IdentityFile ~/.ssh/llave_publica_para_conectarme_a_github.pub
    User git

Las dificultades de conectarse a AWS desde un terminal Linux

Conectarme a una máquina (instancia) con AWS sieeeempre me da algún problema. Así que voy a publicar la lista de dificultades habituales con los que me suelo encontrar y cómo resolverlas.

Ten en cuenta que mi método de conexión es a través de un terminal Linux.

Esta no es una guía paso a paso, para eso, los de Amazon AWS ya tienen su propia guía. Este post es para resolver los problemas que yo me suelo encontrar.

El comando que uso para comentarte es algo así:

ssh ubuntu@ec2-35-156-22-215.eu-west-4.compute.amazonaws.com -i mi-clave-privada-aws.pem

Nota: no copies y peques esto porque no te funciona seguro (de hecho la IP es ficticia).

Too many authentication failures

En mi caso suele ser por esta razón:

Yo tengo una carpeta .ssh donde tengo un montón de llaves ssh. Al intentar conectarse, ssh va probando todas esas llaves. Supongo que después de todas probará con mi-clave-privada-aws.pem. Como tengo tantas claves privadas se alcanza el número máximo de intentos de conexión (que no se cuántos intentos son ni me he molestado en cambiarlo).

El problema es que la opción -i de ssh que te recomienda AWS no hace que se use esa llave en lugar de las que ya tienes. En lugar de eso usa todas las que tienes en la carpeta .ssh y, además, la que indiques con la opción -i.

Solución:

Añade la opción:

-o "IdentitiesOnly=yes"

Con lo que te quedaría algo como ésto:

ssh ubuntu@ec2-35-156-22-215.eu-west-4.compute.amazonaws.com -i mi-clave-privada-aws.pem -o "IdentitiesOnly=yes"

Permission denied (publickey)

Esto puede ser por varias razones:

1) Te has equivocada con el nombre de usuario. Cada tipo de instancia suele venir con un usuario por defecto. En su guía han puesto una lista (echa un vistazo a la lista de AWS que puede cambiar):

  • Para Amazon Linux 2 or the Amazon Linux AMI -> ec2-user.
  • Para Centos AMI, -> centos.
  • Para Debian AMI, -> admin o root.
  • Para Fedora AMI,-> ec2-user o fedora.
  • Para RHEL AMI, -> ec2-user o root.
  • Para SUSE AMI, -> ec2-user o root.
  • Para Ubuntu AMI, -> ubuntu.

2) Te has olvidado de indicar tu llave privada (el fichero .pem). Sí, a veces pasa.

Connection timed out (el servidor tarda un montón de tiempo en contestar)

Aquí es posible que sea porque te falte alguna regla “inbound” (de tráfico de entrada) en la configuración de la instancia. Si es así sigue las instrucciones para crear una regla de éstas.

También es posible que te estés conectando desde una IP no indicada en ninguna de las reglas de tráfico de entrada. Puedes añadir tu IP a una regla o puedes usar la IP 0.0.0.0/0 (para IPv4) o ::/0 (para IPv6). Ten en cuenta que si usas estas dos se pueden intentar conexiones a la instancia desde cualquier IP.


Espero que te haya sido de utilidad y hayas podido solucionar el problema. Si es así añade un comentario y si no es así escribe a ver si podemos ayudarte entre todos.

 

Mi Libro de programación en C ahora es gratuito

A partir de hoy, 16 de Julio de 2018, mi libro de programación en C para principiantes estará disponible de manera gratuita. Hace ya tiempo que lo escribí y considero que ya he ganado lo suficiente con él. Así que he decidido regalarlo.

Por ahora estará disponible gratuitamente en Amazon. Como Amazon no me deja ponerlo a precio cero hasta septiembre lo voy a deshabilitar y crearé uno nuevo esta vez gratuito y sin drm (esa cosa que no te deja copiarlo ni nada).

Ahora voy a maquetarlo de nuevo en formato PDF y, posiblemente en epub o algo así. Cuando termine lo pondré disponible gratuitamente para descarga en el Rincón del C.

Si quieres me puedes echar una mano maquetando el libro. Voy a ir poniendo el código fuente del libro disponible en GitHub para que todo el mundo pueda colaborar.

Si lo ves a la venta en algún sitio avísame, que se trata de un timo.

Mi próximo proyecto en PHP

Tengo idea de preparar un curso sobre PHP, pero estoy dudando en qué tema centrarlo.

Por un lado he pensado escribir un libro sobre buenas prácticas en PHP. Para darle un poco de gracia al asunte se me ha ocurrido ambientarlo en un ataque alienígena a la tierra.

Por otro lado está la opción de escribir uno sobre cómo escribir aplicaciones seguras en PHP. Este otro estaría ambientado en un mundo de piratas.

Aúno no se el formato que darle (libros, vídeos, algo interactivo, etc). Si quieres aportar ideas estaré encantado de oírlas.

Y puedes ayudarme a escoger participando en esta encuesta.

Taller online gratuito de Python

¿Quieres empezar con Python y no sabes por dónde empezar? Pues apúntate a mi taller gratuito de introducción a Python para perderle miedo.

Funcionará a modo de videoconferencia y durará aproximadamente una hora. Nos veremos las caras todos los participantes y podrás preguntar dudas sobre la marcha. Los grupos serán de máximo de cinco personas.

Las fechas aún están por decidir, pero si te interesa apúntate cuanto antes que las plazas son limitadas.

Taller online de refactorización en PHP

En los próximos días voy a organizar talleres online en los que refactorizaremos código PHP. Aprenderemos cómo convertir una chapuza de código espaguetti en código de calidad yendo a través de pequeñas mejoras. En el taller usaremos buenas prácticas, programación orientada a objetos, interfaces, composición, phpunit, git, etc.

Será divertido y podrás aprender un montón. Requisitos imprescindibles: participación activa, conocimientos de PHP y saber algo de programación orientada a objetos.

PHP Sensei - Nueva sección de trucos sobre PHP

Solución para la nueva ley de protección de datos en PrestaShop

Si tienes una tienda online con PrestaShop esto te va a interesar. Están preparando una completa solución que te ayudará a que tu tienda PrestaShop cumpla con la nueva ley de protección de datos, el famoso RGPD. Está abierto a empresas y autónomos y la participación es gratuita.

Nueva sección de trucos y consejos de PHP

Hace un par de días puse en marcha una nueva sección de trucos y consejos sobre PHP en PHPSensei. La intención es publicar cada día una nueva “perla” de sabiduría. Si quieres aprender un poco cada día no te puedes perder esta nueva sección.

PHP Sensei - Nueva sección de trucos sobre PHP