Foros del Web » Programando para Internet » PHP »

Inyeccion sql

Estas en el tema de Inyeccion sql en el foro de PHP en Foros del Web. hola amigos del foro, estuve leyendo un poco acerca de las inyecciones sql y ando algo preocupado de que me pueda afectar por lo que ...
  #1 (permalink)  
Antiguo 25/06/2010, 06:35
Avatar de spacecowboy  
Fecha de Ingreso: agosto-2009
Mensajes: 110
Antigüedad: 14 años, 7 meses
Puntos: 0
Inyeccion sql

hola amigos del foro, estuve leyendo un poco acerca de las inyecciones sql y ando algo preocupado de que me pueda afectar

por lo que lei supuestamente lo que hay que evitar (corriganme si me ekivoco) es insertar en la base de datos, variables con comilla simple (') .... bueno consegui este codigo que te dice si tu server es vulnerable a ataques... el mio dice que no
<?
if(!isset( $_GET [ "inyeccion" ])){
header ( "location: ?inyeccion='" );
} else {
echo 'Tu servidor ' ;
if( $_GET [ "inyeccion" ] != "'" )echo 'no ' ;
echo 'tiene problemas de inyección' ;
}
?>

Aun asi me gustaria saber que mas debo evitar aparte de las comillas simples?? ya que el server que tengo cuando envias algo por form con comilla simple el se encarga de ponerle un slash volteado \ pero entonces no se guarda el registro....
cree una funcion que permite guardar los slashes volteados.... ahora pregunto es peligroso dejar que guarden datos con ese signo \ ??


otra cosa.. estara bien sin las comillas simples las cambio por otro signo? como un acento (´) normal

Última edición por spacecowboy; 25/06/2010 a las 07:00
  #2 (permalink)  
Antiguo 25/06/2010, 07:38
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 3 meses
Puntos: 126
Respuesta: Inyeccion sql

Hola

Recién que empiezo en PHP, pero en ASP lo que hago es reemplazar todo aquello que puedes ser usado para atacar la integridad de bd. Palabra como

Cita:
union select sum, union select min, drop, -shutdown, etc
Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #3 (permalink)  
Antiguo 25/06/2010, 07:49
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Inyeccion sql

Añado, si estás usando las funciones de mysql que ofrece PHP, debes en todas tus consultas usar mysql_real_escape_string.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #4 (permalink)  
Antiguo 25/06/2010, 10:56
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Inyeccion sql

spacecowboy, $_GET['inyeccion'] existira solamente cuando entres a esa pagina y coloques ese atributo como parametro: pagina.php?inyeccion=algo

La existencia o no de parametros en GET, POST o COOKIE no implican que necesariamente tu sitio sea seguro o no, esto depende exclusivamente de como tratas, validas y filtras todos los datos recibidos.
__________________
- León, Guanajuato
- GV-Foto
  #5 (permalink)  
Antiguo 25/06/2010, 17:29
Avatar de spacecowboy  
Fecha de Ingreso: agosto-2009
Mensajes: 110
Antigüedad: 14 años, 7 meses
Puntos: 0
Cita:
Iniciado por Triby Ver Mensaje
spacecowboy, $_GET['inyeccion'] existira solamente cuando entres a esa pagina y coloques ese atributo como parametro: pagina.php?inyeccion=algo

La existencia o no de parametros en GET, POST o COOKIE no implican que necesariamente tu sitio sea seguro o no, esto depende exclusivamente de como tratas, validas y filtras todos los datos recibidos.
Triby es cierto, aunke cuando envio variables POST que contengan comillas simples el mismo server (digo que el server pq yo no he hecho es funcion) las convierte en \

Cita:
Iniciado por Adler Ver Mensaje
Hola

Recién que empiezo en PHP, pero en ASP lo que hago es reemplazar todo aquello que puedes ser usado para atacar la integridad de bd. Palabra como


Suerte
bueno de hecho tengo una funcion asi.. resulta que entonces cuando alguien escribe una frase por ejemplo "pedro inserto tal cosa" ... la funcion detecta el "insert" entonces no guarda el registro... aunke de todos modos creo que no puedo ser tan estricto con suplantar palabras ya que ... la pag contiene un foro y una seccion de blog con varios usuarios ... y es probable que en las cases que ellos escriban pueda estar incluida esas palabras... como hago?

Cita:
Iniciado por abimaelrc Ver Mensaje
Añado, si estás usando las funciones de mysql que ofrece PHP, debes en todas tus consultas usar mysql_real_escape_string.
tengo una funcion programada para cada vez que alguien envie una variable por un form que contenga (') comilla simple el la convierte en acento (´) ... con eso basta?

ya que la pag tiene muchas consultas tendria que hacerla de nuevo para colocarle lo de "mysql_real_escape_string" :(

Última edición por GatorV; 27/06/2010 a las 11:39
  #6 (permalink)  
Antiguo 25/06/2010, 18:04
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Inyeccion sql

Lo de las comillas simples con \ antepuesto es por configuracion de PHP en el servidor que tiene activas las comillas magicas, por lo que deberias:

Código PHP:
Ver original
  1. // Verificar si esta activa la opcion
  2.     $valor_de_post = stripslashes($_POST['valor_de_post']);
  3. } else {
  4.     $valor_de_post = $_POST['valor_de_post'];
  5. }
  6.  
  7. // Antes de insertar en tu base de datos:
  8. $valor_de_post = mysql_real_escape_string($valor_de_post);

Con esto solo evitas inyeccion en base de datos, te faltaria todavia ver de que manera tratas la demas informacion para usar htmlentities() o alguna otra que evite insercion de javascript y otros bichos.
__________________
- León, Guanajuato
- GV-Foto
  #7 (permalink)  
Antiguo 25/06/2010, 18:22
Avatar de spacecowboy  
Fecha de Ingreso: agosto-2009
Mensajes: 110
Antigüedad: 14 años, 7 meses
Puntos: 0
Cita:
Iniciado por Triby Ver Mensaje
Lo de las comillas simples con \ antepuesto es por configuracion de PHP en el servidor que tiene activas las comillas magicas, por lo que deberias:

Código PHP:
Ver original
  1. // Verificar si esta activa la opcion
  2.     $valor_de_post = stripslashes($_POST['valor_de_post']);
  3. } else {
  4.     $valor_de_post = $_POST['valor_de_post'];
  5. }
  6.  
  7. // Antes de insertar en tu base de datos:
  8. $valor_de_post = mysql_real_escape_string($valor_de_post);

Con esto solo evitas inyeccion en base de datos, te faltaria todavia ver de que manera tratas la demas informacion para usar htmlentities() o alguna otra que evite insercion de javascript y otros bichos.

vale muchas gracias, ya estoy usando el htmlentities para que evitar que se imprima codigo html o algo asi, y lo imprime plano... esta bien?
y lo de las comillas magicas si estan activadas, pero como es un server compartido no tengo acceso para desactivarlas

por cierto estoy usando htmlentities() a la hora de insertar datos, pero cuando lo consultos lohago con nl2br
echo nl2br("$variable");

lo que no me gusta de eso es que me muestra el texto con los "enters" que la persona le dio, y eso puede ser algo molesto...

ayuda por favor! tengo dudas que aun no he logrado resolver :S :(

Última edición por GatorV; 27/06/2010 a las 11:38

Etiquetas: sql
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 17:02.