Archivo de etiquetas php

PorLeón Ramos

Wrapper: Ejecutar un script desde un servidor web en una cubieboard

¡Hola!

En esta ocasión vamos a realizar un wrapper o un script para realizar algunas acciones desde una página web en nuestra cubieboard A10.

IMPORTANTE: Cabe resaltar que esta práctica es altamente insegura y deberán de colocarse controles adicionales como contraseñas o manejo de usuarios para evitar problemas futuros.

Instalar dependencias

  • Lo primero que hay que realizar es asegurarse de que tenemos el servidor web apache instalado:
sudo apt-get install apache2 php

¿Funciona apache?

  • Ahora probaremos que está funcionando, conéctate a la misma red de tu cubieboard y revisa cuál es su dirección ip.
ip a
  • Abre un navegador y deberás ver una página de inicio como la siguiente

 

El script bash

  • Crearemos un script sencillo para probar la ejecución en la carpeta /var/www/html/scripts
sudo mkdir -p /var/www/html/scripts

cd /var/www/html/scripts/

nano script1.sh

El contenido del script será el siguiente:

#!/bin/bash

usuario=$(whoami)
echo "Este es un script BASH!!!! ejecutado por $usuario"

Recuerda darle premisos de ejecución:

sudo chmod 755 script1.sh

La página html

  • Ahora generaremos una página web con un botón en el archivo boton.html
cd /var/www/html

nano boton.html

El contenido del archivo es este:

<!DOCTYPE html>
<html lang="es">
  <head>
  <meta charset="UTF-8">
    <title>Botón para invocar un script Bash</title>
    <script>
      function ejecutarScript() {
        // Realiza una solicitud HTTP POST a un script PHP que ejecutará el script Bash
        console.log("Invocando PHP de fondo");
        var xhr = new XMLHttpRequest();
        xhr.open("POST", "ejecutar_script.php", true);
        xhr.send();
      }
    </script>
  </head>
  <body>
    <h1>Botón para invocar un script Bash</h1>
    <form action="ejecutar_script.php" method="post">
      <input type="submit" value="Ejecutar script redirigiendo"/>
    </form>
    <form action="ejecutar_script_sudo.php" method="post">
      <input type="submit" value="Ejecutar script redirigiendo y sudo"/> 
    </form>
    <button onclick="ejecutarScript()">Ejecutar Script SIN redirigir</button>
  </body>
</html>

El script php

  • Ahora crearemos un script ejecutar_script.php para que lance el script bash
nano ejecutar_script.php

el contenido del archivo es el siguiente:

<?php
// Ruta al script Bash
$scriptPath = "/var/www/html/scripts/script1.sh";

// Ejecuta el script Bash
$output = shell_exec("bash $scriptPath");

// Si deseas imprimir la salida del script Bash, puedes hacerlo aquí
echo "<pre>$output</pre>";
?>

El gemelo malvado

También haremos otro script muy parecido  ejecutar_script_sudo.php pero este lo usaremos para ejecutar el script con permisos de superusuario

nano ejecutar_script_sudo.php

el contenido del archivo es el siguiente:

<?php
// Ruta al script Bash
$scriptPath = "/var/www/html/scripts/script1.sh";

// Ejecuta el script Bash
$output = shell_exec("sudo bash $scriptPath");

// Si deseas imprimir la salida del script Bash, puedes hacerlo aquí
echo "<pre>$output</pre>";
?>

Primera prueba

  • Hasta el momento si abrimos el navegador y escribimos la dirección http://<ip_cubieboard>/boton.html vamos a  ver lo siguiente:

Si damos clic en el primer botón todo funcionará correctamente y nos aparecerá la siguiente leyenda:

Sin embargo, si usamos el segundo botón, que intenta ejecutar el script con permisos de superusuario, nos generará un error, es necesario agregar algo más para que los permisos de superusuario funcionen.

Si damos clic een el tercer botón, se lanzará el script pero de fondo y no sabemos si se ejecutó o no. Para esto abre la consola de desarrollador de tu navegador y al presionar le botón deberás ver una salida como esta:

Donde nos indica que el código javascript efectivamente lanzó la ejecución del script bash pero no vemos la salida en la pantalla.

Permisos de root

  • Para agregar los permisos de super usuario será necesario que escribamos realicemos el siguiente procedimiento:

Abrir la tabla de sudoers con el comando que valida la sintaxis:

sudo visudo

Agregar al final del archivo la siguiente línea:

www-data ALL=(ALL) NOPASSWD: /bin/bash /var/www/html/scripts/script1.sh

Guardar y salir del archivo. Si todo ha salido bien, ahora el segundo botón funcionará y el script bash se habrá ejecutado como root o superusuario.

Happy coding!

PorLeón Ramos

Programando con seguridad – Mesa redonda

¿Se puede programar de forma segura?

Nos acompañan Mariana Maguey, Fernando Perales y Horus S. Rico, varios programadores que lideran equipos de desarrollo y que se enfrentan a riesgos de seguridad constantemente. En esta mesa redonda platicamos sobre varios aspectos que están relacionados con la seguridad y, sobre todo, con la gente que forma los equipos de trabajo.


Hablando del problema de twitter. ¿Es importante contratar buenos programadores? ¿Se pudo haber evitado este problema?

¿Existen lenguajes de programación más inseguros o sólo hay malas prácticas de desarrollo?

Algunos especialistas dicen que el usuario y password están destinados a desaparecer. ¿Qué otras estrategias de autenticación están usando en sus desarrollos?

Hablando de hábitos, ¿Cuántas horas seguidas se puede desarrollar sin empezar a escribir código de mala calidad?

Algunos estudios dicen que el código que se escribe después de las 10pm debe de considerarse inseguro. ¿Influye la hora del día en la que programamos a la calidad de nuestro código?

¿Es necesario hacer code review?

¿Qué elementos relacionados con la seguridad se deben de buscar en un code review?

¿Se puede confiar en bibliotecas de terceros o tenemos que desarrollar las propias la mayor parte del tiempo?

¿Cómo se debe de tratar una vulnerabilidad detectada en producción?

¿Pueden compartir algunos consejos para mejorar la seguridad en el código?

Nuestras Redes

@creadoresdigita CreadoresDigitales

Sigue a León, Hiram y Alina en Twitter

Hiram @hiramcoop
León @fulvous
Alina @alinapoulain

¡Escúchanos!

En Ivoox En Spotify
ApplePodcast En Youtube
Google podcast
PorLeón Ramos

Yevele – Plataforma del bajío que apoya a pequeñas tiendas

Yevele

Plataforma para apoyar las pymes del bajío

Es una iniciativa, cuyo objetivo es poder ayudar a los comerciantes locales a superar la situación
actual y las que vengan; manteniendo la cercanía a sus clientes siempre.
Inicialmente el proyecto iba tener el nombre de pochtecatl . Pero con ayuda de Armando
decidimos el nombre de yevele. Mas fácil de recordar además de que nos ayudo a posicionar
mas rápido en los buscadores. Esto nació por el acotencimiento que vivimos ahora -Coronavirus
y al ver que varias personas cercanas se verían afectadas. Decidimos crear una plataforma
dedicada a exclusivamente para ventas.

Inicialmente solo queríamos tener un directorio y tratarlo de promover en paginas del gobierno
por que creímos que ellos tenían la obligación de promover este tipo de ayuda. Pero al no tener
una ayuda buena, por no decir nula, decidimos postearla en nuestra comunidad “Trinchera
divergente”. Y ahí es cuando tomo un nuevo rumbo.

Se une Armando Are. De Sticker Games para apoyarno con la imagen “el hizo los logos” y
ayudarnos a promoverlos en las redes sociales En especial Facebook. El unio a otras personas.
Que lo estan apoyando.

Al ver que por todos lados el proyecto vimos que nuestra idea podría ampliarse. Así que
decidimos llegar hasta tener catálogos de producto y anexar un punto de venta online “esto ya lo
tenemos se llama alux”. Así que dividimos el proyecto en fases. Haciendo referencia a manera
de broma a lo que dice el presidente. 4 fases son las que tendrán este proyecto. Aunque pueden
ser mas dependiendo de como vaya funcionando.

Como tecnología estamos usando. Php “codeinginter” , mariaDB , jquery, Angular. Alguna
competencia que hemos visto usan como entorno de trabajo WordPress. Pero nosotros
decidimos hacer nuestro sistema. Esto para no depender muchos de terceros además de poder
extender el sistema a las necesidades que se vayan dando. Nos ha funcionado ya que cada vez
que vemos que la forma en como venden los negocios es muy abstracta, siempre vemos
mejoras.

Actualmente estamos desarrollando fase 3. “a la par con la contigencia :)” , la cual enfocaremos
todos nuestros esfuerzos a que la experiencia del usuario comprados sea mas facil y el usuario
vendedor tenga la opcion de promover sus productos. Asi que desarollaremos un catalogo por
tienda ademas mejorar las busquedas,.

    Entre otras cosas Nosotros tenemos las siguiente metas :

  • Ayudaremos que el proceso de venta online sea más fácil.
  • Protegeremos la información que sea proporcionada.
  • Ayudaremos a enfatizar su negocio en la era digital.
  • Proporcionaremos tips para fomentar las ventas en línea.
  • La plataforma proactiva e interactiva con sistemas externos.

Tenemos actualmente 45 tienditas registradas y algunas de ellas nos han dado la gracias pro
que le ha funcionado. También hay personas que han aportado económicamente al proyecto
“aaron”. Que nos ayudo para la compra del dominio y de los certificados https.

Ahorita en el equipo de desarrollo estamos conformado por Adha , Fernando y un servidor. Y
estamos haciendo todo lo posible para que cada semana tengamos feature nueva.
Nosotros pensamos liberar el código , por lo que estamos analizando las licencias que usamos
en cada fragemento de código. Por el momento tenemos en mente un apache con algunas
clausulas que podría ayudarnos para hacer un modelo de negocio rentable.

Sitio de Yevele

Blog deJunglaCode


Nuestras Redes

@creadoresdigita CreadoresDigitales

Sigue a León, Hiram y Alina en Twitter

Hiram @hiramcoop
León @fulvous
Alina @alinapoulain

¡Escúchanos!

En Ivoox En Spotify
ApplePodcast En Youtube
Google podcast