domingo, julio 01, 2007

Reiniciar/apagar la computadora con PHP

Gracias a un post en ForosDelWeb descubro algo interesante. En el post se pide algún código que reinicie/apague la pc con PHP. La computadora que hace de servidor en este caso es un Windows (crashes?). Me puse a buscar info y enseguida dí con una forma de apagar el Win y de inmediato termine con el siguiente código:

exec('%systemroot%\system32\shutdown.exe -r -t 0');

Si desean apagar simplemente cambien el -r y coloquen -s (shutdown).

Esto funciona y me preocupa un poco... en realidad no sé que pensar, esto es un agujero de seguridad (¿?).

Este es un tip un tanto curioso cuanto menos y creo que esto lo deberíamos de anotar.
De todas formas este tip se tendría que agregar a la lista de "Las 5 cosas geniales que puedes hacer con Windows y PHP" ("5 cool things you can do with windows and PHP")... en realidad no tendrían que ser 6? :-P

En cuanto termine de publicar este post apagare mi CPU e iniciare con mi querido GNU/Debian y probaré algo de esto a ver si funciona.

Actualización 02-07-2007 a las 19:19hs:
Como ya me imaginaba esto también funciona bajo GNU/Linux aunque sigo sosteniendo que por la naturaleza de PHP esto no se tendría que permitir. Cuando digo naturaleza me refiero a que PHP a sido concebido para realizar paginas Web y este no tendría que poder manipular cosas del SO.


Dario Ocles.

4 comentarios:

Anónimo dijo...

En el php.ini, hay justamente una variable de configuracion que no permite el exec o el uso de `` para ejecutar comandos de consola.
En cualquier entorno profesional de desarrollo, no se permite su uso

DarioDario dijo...

Señor "anónimo" :-P

Tiene razón, pero yo a lo que apunto (y creo que en la actualización lo explico) es que por la naturaleza del lenguaje esto no debería permitirse... PHP es para paginas Web o por lo menos nació así y estas cosas "sobre pasan" los limites que debería tener.

Sabía que en el php.ini se pueden bloquear, pero no era a esto a lo que me refería.

Saludos.

PD: Creo que debería haber escrito esto en el post :-S

Mehio dijo...

Si, esto puede ser catalogado como riskware, igual hasta se escribe software malicioso en PHP, pero igual se debe tener ya que PHP no solo se usa para Sitios Web, tan solo usamos GTK y ahí si que se puede "manipular cosas del SO". Pues viéndolo por esa parte me parece que es razonable. Obviamente me estoy refiriendo a sistemas GNU/Linux, además no le veo la razón de ser en Windows.

DarioDario dijo...

Mehio:

>hasta se escribe software
>malicioso en PHP

Justamente sobre esto estoy haciendo algunas pruebas pero de forma didáctica :-S
De todas formas "todos" sabemos donde están las limitaciones y estos código maliciosos no deberían llevar el apodo de Virus ni mucho menos, simplemente de código "dañino".

>Sitios Web, tan solo usamos GTK y
>ahí si que se puede "manipular cosas
>del SO". Pues viéndolo por esa parte
>me parece que es razonable.

No es necesario hacer uso de PHP-GTK para hacer uso de opciones del SO... es más, PHP-GTK no es más que PHP pudiendo manipular la librería de GTK pero esta no es la que te da la posibilidad de ejecutar cosas del SO, PHP es quien te la da al fin y al cabo.

>Obviamente me estoy refiriendo a
>sistemas GNU/Linux, además no le
>veo la razón de ser en Windows.

Esto no solo se limita a GNU/Linux, bajo Win funciona y sin problemas y no me quiero equivocar pero bajo Mac creo que también.

Saludos.