Foros del Web » Programando para Internet » PHP »

Protejer script PHP

Estas en el tema de Protejer script PHP en el foro de PHP en Foros del Web. Hola, soy nuevo en esta comunidad, así que no se qué nivel de preguntas se hacen normalmente aquí, pero bueno, soy bastante novato con el ...
  #1 (permalink)  
Antiguo 19/11/2015, 13:21
 
Fecha de Ingreso: noviembre-2015
Ubicación: Colombia
Mensajes: 37
Antigüedad: 9 años, 1 mes
Puntos: 0
Mensaje Protejer script PHP

Hola, soy nuevo en esta comunidad, así que no se qué nivel de preguntas se hacen normalmente aquí, pero bueno, soy bastante novato con el PHP así que va mi pregunta:
Tengo un scrpit PHP sencillo en mi página, este script me permite subir archivos a mi página web desde mi videojuego, se supone que es un videojuego algo así como para que los jugadores creen sus propios niveles y los puedan publicar, en mi página. Aquí dejo el script PHP:
Código:
<?php
  //CORS header
  header("Access-Control-Allow-Origin: *");
	
  //Capture parameter
  $fname = $_POST['fname']; //nombre del archivo que recibira como variable superglobal en modo post
  $fcont = $_POST['fcont']; // contenido del archivo
	
  //Write the file
  if ($f = fopen("uploads/$fname", 'w')) {
    fwrite($f, $fcont);
    fclose($f);
    echo "OK";
  }//esto basicamente crea el archivo con el nombre que le diste, luego lo escribe y al final lo cierra
  else {
    echo "FAIL";//esto solo ocurre si el archivo no tiene nombre, o la informacion se envia incorrectamente
  }
?>
Y bueno, el código funciona a la perfección. Pero me di cuenta de que con algo tan sencillo como un código HTML puedo "hackear" la página y publicar toda clase de archivos en ella

Así que me preguntaba cómo proteger este script y que solo pueda pubicarse archivos desde mi videojuego.

Aunque tengo otro script, que el problema es casi el mismo, solo que más peligroso, ya que este es para borrar archivos:
Código:
<?php
$fname = $_POST['archivo']; //nombre del archivo que se borrará
unlink('uploads/'.$fname); //borrado del archivo (suponiendo que está en la carpeta uploads)
?>
Y quisiera saber cómo protejer ambos scripts y que sólo sean ejecutables para mi juego y no para los juankers que me quieran juankear.
  #2 (permalink)  
Antiguo 19/11/2015, 14:20
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 8 meses
Puntos: 2534
Respuesta: Protejer script PHP

¿Tu juego no usa sesiones en el servidor o cómo funciona exactamente?

Si el usuario tiene sesión sería muy fácil validar eso antes de ejecutar cualquier acción.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 19/11/2015, 14:31
 
Fecha de Ingreso: noviembre-2015
Ubicación: Colombia
Mensajes: 37
Antigüedad: 9 años, 1 mes
Puntos: 0
Respuesta: Protejer script PHP

Bueno, primero, el juego está creado con la herramienta Game Maker Studio, y en este juego, se envía el archivo a crear a la dirección donde se aloja el script PHP. Lo de las sesiónes aún no lo tengo hecho, pero dentro de poco lo podré terminar. Si tuviera sesiones, cómo podría protejer mis Scripts?
  #4 (permalink)  
Antiguo 19/11/2015, 14:41
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 8 meses
Puntos: 2534
Respuesta: Protejer script PHP

Cita:
Si tuviera sesiones, cómo podría protejer mis Scripts?
Pues así tal cual, si el usuario tiene activa una sesión entonces podrá hacer lo que quiera.

Vamos, la idea es que sólo sea posible iniciar sesión desde tu juego.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 19/11/2015, 14:52
 
Fecha de Ingreso: noviembre-2015
Ubicación: Colombia
Mensajes: 37
Antigüedad: 9 años, 1 mes
Puntos: 0
Respuesta: Protejer script PHP

Eso lo tengo muy claro, y ya tengo todo preparado. Mi duda es cómo puedo evitar que agentes externos entren a la URL de el script y lo usen desde afuera, por ejemplo, si la URL de el script de borrar es: http://paginafake.com/borrar_datos.php algún hacker podría usar un pequeño formulario HTML y ejecutar el script.
Entonces, cómo puedo hacer que el script sea "inejecutable" para cualquier petición excepto la de mi juego?
  #6 (permalink)  
Antiguo 19/11/2015, 14:58
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 8 meses
Puntos: 2534
Respuesta: Protejer script PHP

Piensa un poco lo siguiente:

Si un usuario no ha iniciado sesión ¿por qué deberías permitir ejecutar tus scripts?

Un hacker jamás podrá ejecutar ningún script tuyo mientras no haya iniciado sesión, así de simple.

El tema es que las sesiones no protegen nada por arte de magia, sólo son un mecanismo para identificar a un usuario: aún así debes implementar la lógica para validar todo.

Código PHP:
Ver original
  1.  
  2. if (!isset($_SESSION['soy_un_usuario_valido'])) {
  3.   die('NO SE PUEDE HACER NADA');
  4. }
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 19/11/2015, 15:10
 
Fecha de Ingreso: noviembre-2015
Ubicación: Colombia
Mensajes: 37
Antigüedad: 9 años, 1 mes
Puntos: 0
Respuesta: Protejer script PHP

Perdón por la insistencia, pero, dado caso que no existiera una sesión, pero igualmente quiero ejecutar el script desde el juego y no desde agentes externos. Es decir, algo que en el script, por ejemplo, bloquee todo intento de accesar a él, excepto desde el juego?
  #8 (permalink)  
Antiguo 19/11/2015, 15:27
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 8 meses
Puntos: 2534
Respuesta: Protejer script PHP

Cita:
Iniciado por NiuWeb Ver Mensaje
Perdón por la insistencia, pero, dado caso que no existiera una sesión, pero igualmente quiero ejecutar el script desde el juego y no desde agentes externos. Es decir, algo que en el script, por ejemplo, bloquee todo intento de accesar a él, excepto desde el juego?
No es tan simple como imaginas, sí o sí debes implementar un sistema de sesiones en tu servidor, sin ello es complicado verificar algo.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Etiquetas: html, protejer, variable
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:16.