Foros del Web » Programando para Internet » PHP »

Seguridad PHP?

Estas en el tema de Seguridad PHP? en el foro de PHP en Foros del Web. Hola algunos problemas de los que me e topado , es el suo de get y post. En realidad el POST. Por ejemplo, eliminar un ...
  #1 (permalink)  
Antiguo 24/10/2008, 23:54
Avatar de jamesjara  
Fecha de Ingreso: mayo-2008
Ubicación: san jose
Mensajes: 449
Antigüedad: 16 años
Puntos: 7
Seguridad PHP?

Hola algunos problemas de los que me e topado , es el suo de get y post. En realidad el POST.

Por ejemplo, eliminar un registro

Ya sea get o post, de cualquier forma es una gran vulnerabilidad. Y realmnete no se como arreglarla.
Ejmplo si eliminar un registro es asi

delete.php?id= , si fuese por post,. simplemente se emula el formulario y se redirecciona a la pagina real.

Un usuario malicioso. Podri manipular esto como quiera.

Entonces yo quiero que me instruyan , me den links cosas asi, para arreglar esto..
asi que sea 100% perfecto

porcierto vi un articulo en el cual los registros no se borran, simplemente se le agrega un columna con dato 1 o 0, o es borrado. 1 es no borrado. Eliminacion fisica o logica algo asi...

Por favor espero toda su ayuda gracias!
__________________
X7CLOUD El webservice latino!
Compatible
con mysql,sql,sqlitte.
Compatible con extjs , sencha , smargwt, Gwt , Jquery , Charts, Streaming.
  #2 (permalink)  
Antiguo 25/10/2008, 04:13
 
Fecha de Ingreso: octubre-2008
Mensajes: 12
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Seguridad PHP?

Buenos dias James,

Realmente el uso de POST y GET pueden llegar a ser peligrosos, sobre todo el ultimo.

Lo mas utilizado para altas, bajas y modificaciones son formularios enviados por POST, si bien es cierto que el la barra de direcciones no se ve aparentemente nada de lo que se envia, estudiando un poco el codigo de la pagina se pueden llegar a ver los campos y direcciones de actualizacion de ese formulario. Pero, si la pagina que realiza las actualizaciones solo acepta valores que le lleguen por POST, conseguimos que, (si el programa esta bien estructurado de base) si un usuario no tiene potestad para ver ciertos registros no podra modificarlos.
Tambien a raiz del ejemplo que presentas, no es necesario ser tan explicito con el nombre de los archivos que realicen las acciones de borrado, modificacion... Simplemente puedes tener un archivo que se llame acciones.php y que le pases por parametro POST la accion que deseas realizar.

Claro esta que esto no es infalible (me lo podreis rebatir y posiblemente encontrareis mil formas de burlarlo), pero, no dotemos de sabiduria a cientos de usuarios, ya que muchos no saben ni pq se les ha corrido a la derecha un texto en word.

Esto puede ser una solucion dependiendo de la finalidad del programa que tengas que construir y el publico a quien lo vayas a destinar. Hay otras tecnicas de proteccion para que solo determinados usuarios accedan a tus programas que modifican datos en bbdd, como por ejemplo proteccion de carpetas, validacion con nombre de usuario y contraseña. Por ejemplo si tienes un sistema de validacion de usuarios, puedes por ejemplo guardar sus acciones.

En cuanto a lo que apuntas sobre "eliminacion logica", un sistema sencillo es lo que apuntas, pero igualmente el problema de base a mi humilde manera de entender es quien accede y quien no a esos datos. Ya que aunque no se eliminen, ¿quien va a estar mirando si eso tiene que estar eliminado o no?

Resumiendo:

Si tienes una aplicacion web que trabaja con bbdd, la gente se debe tener que validar con nombre de usuario y contraseña, para tener a la gente localizada y saber que hace y a que accede.

Salvo mejor criterio (que seguramente lo habra)

Espero haberte ayudado en algo.
  #3 (permalink)  
Antiguo 25/10/2008, 05:23
Avatar de geq
geq
 
Fecha de Ingreso: agosto-2006
Ubicación: Rosario
Mensajes: 655
Antigüedad: 17 años, 8 meses
Puntos: 22
Respuesta: Seguridad PHP?

Una buena solución es tener un registro con usuario y contraseña, y el script que realiza la acción en base al usuario que esté loggeado decida si tiene acceso a esos datos o no.

Después de todo, ¿para qué serviría una página en la que cualquiera entre y te borre todo?

La idea sería tener usuarios registrados, con diferentes permisos si fueran necesarios. Entonces si alguien no logueado le pasa un ID por get o post, el script lo detendría pidiendole que se loguee. Y si está logueado y no tiene acceso al ID que está pasando, también lo detendría. De esa forma, si tu login es seguro no habrá que preocuparse más por este asunto.

Esto lo podés lograr todo con la base de datos, poniendo campos por ejemplo de permisos y demás a los usuarios y a los registros, y que el script verifique los valores.

El tema de la eliminación, se trata de una columna Borrado, por ejemplo, con la que los registros que tengan valor 1 no serán mostrados en ningún lugar y los 0 si. Es como que están borrados, pero los datos siguen allí para recuperarlos. (Lo logras agregando AND Borrado=0 en todas las cláusulas WHERE)

Una buena alternativa para hacer esto es copiar los registros que se borran a otra tabla con los mismos campos. De esa manera no ocupás espacio inutilmente en la tabla que está en uso.

Saludos.
  #4 (permalink)  
Antiguo 25/10/2008, 09:40
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 9 meses
Puntos: 70
Respuesta: Seguridad PHP?

http://www.sirviejo.com.ar/seguridad-en-desarrollo-web/

Saludos
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #5 (permalink)  
Antiguo 31/10/2008, 19:37
Avatar de jamesjara  
Fecha de Ingreso: mayo-2008
Ubicación: san jose
Mensajes: 449
Antigüedad: 16 años
Puntos: 7
Respuesta: Seguridad PHP?

Gracias a todos precisamente eso es lo que ocupaba!!

bendicones de DIos!
__________________
X7CLOUD El webservice latino!
Compatible
con mysql,sql,sqlitte.
Compatible con extjs , sencha , smargwt, Gwt , Jquery , Charts, Streaming.
  #6 (permalink)  
Antiguo 31/10/2008, 20:34
Avatar de Gerifaltus  
Fecha de Ingreso: junio-2005
Ubicación: Tabasco, México
Mensajes: 180
Antigüedad: 18 años, 10 meses
Puntos: 4
Respuesta: Seguridad PHP?

Que tal, el siguiente link hace referencia a un artículo en donde el autor realiza un ejemplo de cómo crear un hash (MD5) de ida y vuelta, jejeje no es broma, tampoco es un hash de ida y vuelta, el MD5 sólo es de ida (a menos que se use fuerza bruta).

Hash de ida y vuelta con MD5

Yo lo implementé en mi ultimo trabajo y si funciona y realmente si eleva un poco la seguridad, principalmente para las cuestiones de eliminación pues en lugar de mostrar:

Código PHP:
eliminar.php?id=
mostraría:

Código PHP:
eliminar.php?id=4567ujt87696 <--- hash 

Saludos.
__________________
:::.. Todo tiene un ¿Por qué? y un ¿Para qué? ..:::
:::.. Todo se reduce a un SI y a un No ..:::
  #7 (permalink)  
Antiguo 31/10/2008, 20:41
 
Fecha de Ingreso: octubre-2008
Mensajes: 102
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Seguridad PHP?

y que pasa si ponen

eliminar.php?id='; codigo maligno lalalalaa; ---

ahi quedo tu hash... Para mejor segurar es mejor validar todos los POST, GET, etc...
  #8 (permalink)  
Antiguo 31/10/2008, 21:06
Avatar de Gerifaltus  
Fecha de Ingreso: junio-2005
Ubicación: Tabasco, México
Mensajes: 180
Antigüedad: 18 años, 10 meses
Puntos: 4
Respuesta: Seguridad PHP?

Cita:
Iniciado por Zidencjb Ver Mensaje
y que pasa si ponen

eliminar.php?id='; codigo maligno lalalalaa; ---

ahi quedo tu hash... Para mejor segurar es mejor validar todos los POST, GET, etc...
Mi estimado creo que no entendiste el objetivo de mi post, lo del hash con md5 no evita eso, lo que indicas es parte de la validación que se debe realizar cuando se envian datos por POST ó por GET, simple y sencillamente es más dificil adivinar cuál puede ser el id de un determinado item viendo esto: página.php?id=2323kj4j3k4j4k34.

Pero aún así puedes usar otra técnica para mostrar los datos que se enviarán por GET.

Saludos.
__________________
:::.. Todo tiene un ¿Por qué? y un ¿Para qué? ..:::
:::.. Todo se reduce a un SI y a un No ..:::
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 04:18.