Foros del Web » Programando para Internet » PHP »

Aplicacion Segura y Inyeccion SQL

Estas en el tema de Aplicacion Segura y Inyeccion SQL en el foro de PHP en Foros del Web. Bueno, me gustaria saber si es seguro a xss y inyeccion sql un script en php que: Nombre: Comentario: En donde el nombre sera pasado ...
  #1 (permalink)  
Antiguo 21/08/2009, 19:20
 
Fecha de Ingreso: enero-2009
Ubicación: Chile
Mensajes: 191
Antigüedad: 15 años, 3 meses
Puntos: 2
Aplicacion Segura y Inyeccion SQL

Bueno, me gustaria saber si es seguro a xss y inyeccion sql un script en php que:
Nombre:
Comentario:

En donde el nombre sera pasado por htmlentities y el comentario tambien, ahora bien, si hago la inserccion pasando solo htmlentities es seguro mi script a sql inyeccion?? en caso de que la respuesta sea NO, entonces que pasa si yo encripto a base64 y luego al mostrar solo desencripto? esto ayudaria a prevenir y incluso seria casi inmsposible hacer sql inyeccion? porque tengo entendido que en base64 ya no podrian hacer nada porque solo habrain caracteres codificados. . .

Pero ahora si en caso de meer datos no haya problema, ahora para sacar abrian problemas? en caso de que por ejemplo el usuario isnerte algo como: or '' . .. o lo que sea a la hora de sacar esto seria peligroso? o nada que ver?

Bueno esa es mi duda en cuanto a sql inyeccion, ahora en cuanto a una pequeña aplciacion web dodne tengo lo siguiente:


<?php
$user = 'admin';
$pass = '13231323';
if ($user == $_POST['usuario'] and $pass == $_POST['password']) {
entonces muestra administracion y se crean cookie.. . .
}
else
{
echo "nombre de usuario incorrecto";
}

Bueno espero que puedan ayudar, es que me surge la ultima duda acerca de la aplicacion web por que algun suaurio podira hacer que en user poner algo como OR algo=algo entonces igual entra. . .
  #2 (permalink)  
Antiguo 21/08/2009, 20:11
Avatar de bioxido  
Fecha de Ingreso: diciembre-2008
Ubicación: $_SERVER['PHP_SELF']
Mensajes: 601
Antigüedad: 15 años, 4 meses
Puntos: 21
Respuesta: Aplicacion Segura y Inyeccion SQL

con htmlentities ya tendria que ser relativamente seguro... pero como medida extra, tambien podrias usar addslashes, auque lo veo innecesario ya que con htmlentities no quedarian comillas.

y lo otro esta bien....solo te recomendaria encriptar la password en md5 para darle un toque extra de seguridad.
  #3 (permalink)  
Antiguo 21/08/2009, 21:10
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: Aplicacion Segura y Inyeccion SQL

Para evitar inyecciones SQL pasa los datos por mysql_real_escape_string() antes de usarlos en una consulta (SELECT, INSERT, etc.) y, mejor aun, verifica cada tipo de dato recibido:

Código php:
Ver original
  1. // Cadenas: eliminar espacios al principio y al final, convertir caracteres especiales
  2. $cadena = htmlentities(trim($_POST['cadena']));
  3. if(strlen($cadena) < longitud_minima || strlen($cadena) > longitud_maxima) {
  4.     die('Error en cadena.');
  5. }
  6. $cadena = mysql_real_escape_string($cadena);
  7.  
  8. // Enteros
  9. $entero = intval($_POST['entero']);
  10.  
  11. // Flotantes
  12. $flotante = (float)$_POST['flotante'];
__________________
- León, Guanajuato
- GV-Foto
  #4 (permalink)  
Antiguo 21/08/2009, 21:18
 
Fecha de Ingreso: enero-2009
Ubicación: Chile
Mensajes: 191
Antigüedad: 15 años, 3 meses
Puntos: 2
Respuesta: Aplicacion Segura y Inyeccion SQL

Bueno, si tienen razón, en mi caso no seria necesario, usar el filtro de mysql mysql_real_escape_string($cadena); ya que ademas de usar htmlentities uso base64 entonces no tendria ninguna posibilidad el atacante de poder agregar comillas por que ademas de las comillas estar en entidades html osea " esta en base 64 tipo aa46a4==

Que dicen ustedes??
  #5 (permalink)  
Antiguo 22/08/2009, 01:33
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: Aplicacion Segura y Inyeccion SQL

Un inconveniente de codificar en base64 es el espacio:

Cita:
Iniciado por Manual php.net
Base64-encoded data takes about 33% more space than the original data.
Tambien, supongo que el uso de base64_encode() al guardar y base64_decode() al leer debe consumir algo de recursos extra del servidor y, por tanto, reducir el rendimiento. Tal vez en un sitio con pocas visitas no sea muy notorio.

En fin, los argumentos ahi estan, pero tu decides.

Por ultimo, como ya te dijo bioxido, para incrementar un poco la seguridad, encripta las contraseñas con MD5.
__________________
- León, Guanajuato
- GV-Foto
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:13.