Foros del Web » Programando para Internet » PHP »

Enviando datos via $_POST... (para evitar errores y abusos)

Estas en el tema de Enviando datos via $_POST... (para evitar errores y abusos) en el foro de PHP en Foros del Web. Que tal? Estoy programando un foro, y recien ahora me doy cuenta que la idea de enviar datos por "GET" era no solo mala, sino ...
  #1 (permalink)  
Antiguo 11/04/2006, 00:01
 
Fecha de Ingreso: diciembre-2004
Mensajes: 721
Antigüedad: 13 años
Puntos: 2
Enviando datos via $_POST... (para evitar errores y abusos)

Que tal?

Estoy programando un foro, y recien ahora me doy cuenta que la idea de enviar datos por "GET" era no solo mala, sino que traia consigo resultados horrorosos. Un amigo entro a probar el foro y logro hacer verdaderos desastres.

El hecho es... necesito enviar los datos por POST, o de cualquier otra forma que no requiera de utilizar GETS.

El usar variables de session, NO SE POR QUE, pero no se me hace tan confiable... no me gusta abusar de ellas.

Por otro lado ¿para enviar algo via POST necesito SI o SI un <form> ? ¿no se puede enviar de alguna otra forma?

Hay datos que mando por GET como ID's de posts y respuestas, ids de foro, ids de paginacion... etc, realmente seguir usando GETS va a ser para problemas...

¿Que me recomiendan?

MUCHAS GRACIAS!
  #2 (permalink)  
Antiguo 11/04/2006, 02:35
 
Fecha de Ingreso: marzo-2006
Ubicación: Ramos Arizpe, Coah
Mensajes: 70
Antigüedad: 11 años, 9 meses
Puntos: 0
Bueno las sessiones realmente son un buen método para pasar información, no se porque desconfias de ellas, en cuanto a abuzar de ellas estas no representa un gran problema ya que el servidor en este sentido no te limita por lo que he leido, pero si lo que prefieres es usar el método POST y si la pregunta es de afuerza necesito <form> pues la respuesta es sí, mira cuando realmente alguien te quiere hacer daño te pueda hacer por el método POST, GET o hasta por SESSIONES que por esté método es un poco mas dificil, la cosa seria mejor agregar capas de seguridad esto lo puedes hacer con:

htmlspecialchars($GET["variable"]); para evitar que te intruduscan codigo html, java...

o si vas a mandar la info a consulta en la base de datos

addslashes($GET["variable"]);

o una buena es si tus datos que recojes tienen un formato especial lo que puedes hacer es filtrar los datos acorde a lo que esperas.

Ejemplo si esperas numeros puedes hacer un if

if (is_numeric($_GET["variable"])){
Eres aceptado.
}else{
No eres aceptado.
}
... espero que te ayude esto.
  #3 (permalink)  
Antiguo 11/04/2006, 11:48
 
Fecha de Ingreso: diciembre-2004
Mensajes: 721
Antigüedad: 13 años
Puntos: 2
Ey Fenix... te agradesco por las aclaraciones!

La verdad es que tenes razon en lo de "Si te quieren hacer daño lo van a hacer", pero al menos que el que me haga daño tenga que saber mucho no? :P

Yo estaba usando algunas cosas asi ahora, acabo de poner un filtro regex ante nada, y luego addslashes() / htmlentities() / strip_tags() / etc.

Vamos a ir viendo como funciona la cosa asi.

Muchas gracias por tu ayuda!
  #4 (permalink)  
Antiguo 11/04/2006, 12:00
Avatar de JorgitoAlfajor  
Fecha de Ingreso: enero-2006
Mensajes: 152
Antigüedad: 11 años, 11 meses
Puntos: 1
Computer XTress:
No olvides, antes de utilizar addslashes(), de verificar si magic_quotes_gpc esta activado. Si aplicás addslashes a una variable que ya fue filtrada por magic_quotes vas a duplicar las barras. Por ejemplo, si te ingresan jorgi'to, y aplicas addslashes() con magic_quotes activado te va a quedar algo como jorgi\\\'to, que no es lo que esperás.

Código PHP:
<?
if (!get_magic_quotes_gpc()) {
    
$campo addslashes($_POST['campo']);
} else {
    
$campo $_POST['campo'];
}
?>
Saludos.
__________________
¿Se me entiende la letra?
  #5 (permalink)  
Antiguo 11/04/2006, 12:05
 
Fecha de Ingreso: diciembre-2004
Mensajes: 721
Antigüedad: 13 años
Puntos: 2
Epa eso de las comillas maginas no lo conocia... voy a verlo ahora mismo en el manual!
Gracias de nuevo Jorgito!! (no solo sos el mejor alfajor, tambien sos buena onda! :] )

Esto esta bueno como para hablarlo en general en un nuevo thread... Creo que es un tema que le interesa a todos.
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 08:58.