INFORMATICA Y OCIO

Foros de informática
  Inicio    Normas    Buscar   Miembros   Clanes   Regístrese   Perfil   Conéctese para revisar sus mensajes   Conectarse 
[informatica] + [videos graciosos] + [ultimos mensajes] + [top usuarios] + [contacto]


PHP MYSQL SELECT()
Ir a página 1, 2  Siguiente
 
Publicar Nuevo Tema   Responder al Tema    Índice del Foro Foroz comunity :: Webmasters
Ver tema anterior :: Ver siguiente tema  
Autor Mensaje
xtremer
Yo soy el foro
Yo soy el foro


Registrado: 22 Dic 2006
Mensajes: 1113

MensajePublicado: Dom Ene 10, 2010 11:26 pm    Título del mensaje: PHP MYSQL SELECT() Responder citando
Estoy haciendo un form, para validar 2 cosas importantes en mi pagina.
Los 2 datos mas importantes de este form son Subdominio y Correo,
si llego a utilizar 2 select, apesar de utilizar tecnicas como "'.().'" funciones q impiden el ingreso de caracteres especiales, y de utilizar el mysql_num_rows, puedo llegar a ser vulnerable a injection?

Porque la idea es avisarle al usuario, si el subdominio y el correo ya existe o no en la Base de Datos.
La idea sería no tener que decirle que uno de esos 2 datos no son válidos, ya que si el dominio existe, y su correo no esta en la base de datos, me daría un conflicto a la hora de que se registren, porque talves este no ingresara otro correo
_________________

GameServers & WebHosting Provider
Volver arriba
Ver perfil del usuario Enviar mensaje privado Enviar correo
BenJa - KuMo
Yo soy el foro
Yo soy el foro


Registrado: 14 Ago 2006
Mensajes: 3489
Ubicación: España

MensajePublicado: Lun Ene 11, 2010 7:05 pm    Título del mensaje: Responder citando
te lo decimos siempre, pega el código, así de pronto no se pueden sacar vulnerabilidades.
_________________

Web de Metal Slug y Kof!!

Web en Español de Project Zero!!
Volver arriba
Ver perfil del usuario Enviar mensaje privado Enviar correo Visitar sitio web del autor MSN Messenger
xtremer
Yo soy el foro
Yo soy el foro


Registrado: 22 Dic 2006
Mensajes: 1113

MensajePublicado: Mar Ene 12, 2010 10:54 pm    Título del mensaje: Responder citando
Código:

<?
session_start();
mysql_connect("","","");
mysql_select_db("");

   $destino="micorreo@domain.com"; // Correo que recibira
   $asunto="Mensaje desde el formulario de contacto de tu web";
       
        // ACA VARIABLES DEL FORM //

   function ValidarEmail($email){
   $pattern = "^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$";
   if(eregi($pattern, $email)){
   return true;
   }
   else{
   return false;
   }   
   }
// Captcha
$key=md5($_POST['code']);
if($_POST['contratar'] && $key==$_SESSION['key']){
// Verifico si es Correo es Valido
   if(!ValidarEmail($_POST['email'])){
   $email_novalido="<font style=color:333333;font-size:10px;><strong>ERROR: </strong>La direccion de correo no es valida</font>";
   $xerror_email="SI";
   }
   else{
// Verifico si existe en la Base de Datos
      $checkmail=mysql_query('SELECT correo FROM 3TH05T_pagos WHERE correo="'.($email).'" ');
      $mail_exist=mysql_num_rows($checkmail);
      if($mail_exist>0){
      $error_email="
      <font style=color:333333;font-size:10px;>
      <strong>ERROR: </strong>
      El email ya existe, intente con otro
      </font>
      ";
      $xerror_email="SI";
      }
// Si cumple requisitos entonces
      else{
      // Inicio de Contenido a enviar
         if($subdominio != "" && $nombre != "" && $apellido != "" && $email != "" && $telefono != "" && $horario != "" && $where != "none" && $plan != "none" && $mpago != "none") {
         $msg .="Nombre: ".$nombre."\r\n";
         $msg .="Comentarios: ".$comentarios."\r\n";
                        // LAS DEMAS VARIABLES QUE SE ENVIARAN AL MAIL
      //Fin de Contenido
         mail($destino, $asunto, $msg);
         $_SESSION['finish']="SI";
         $_SESSION['tipo']="WebHosting";
         header("Location:?c=finish");
         }
      }
   }
}
?>


Dsp ta todo el formulario pero creo q no es necesario xd
Acorte alguna q otra cosa para q sea menos code, pero seria eso en realidad.
Y quiero que valide la el subdominio y el correo, y que tire error diferente para esos 2, ya que es lo mas importante de ese form es contratar hosting. Y la persona que contrate debe ser si es el subdominio existe o no, y si su correo tmb se registró ya anteriormente por otra persona.
_________________

GameServers & WebHosting Provider
Volver arriba
Ver perfil del usuario Enviar mensaje privado Enviar correo
BenJa - KuMo
Yo soy el foro
Yo soy el foro


Registrado: 14 Ago 2006
Mensajes: 3489
Ubicación: España

MensajePublicado: Mie Ene 13, 2010 6:16 pm    Título del mensaje: Responder citando
todas estas variables de donde salen? del formulario enviado?
Código:
if($subdominio != "" && $nombre != "" && $apellido != "" && $email != "" && $telefono != "" && $horario != "" && $where != "none" && $plan != "none" && $mpago != "none")


A primera vista parece seguro, pero tiene varios fallos el código.

No puedes abrir una conexión a la BD y salir del script sin cerrarla. Y también en caso que el email no exista, se almacena en una variable un font pero luego ni se muestra ni nada, entonces? o tienes más código que utilice esto o tendrá que arreglarlo.
_________________

Web de Metal Slug y Kof!!

Web en Español de Project Zero!!
Volver arriba
Ver perfil del usuario Enviar mensaje privado Enviar correo Visitar sitio web del autor MSN Messenger
xtremer
Yo soy el foro
Yo soy el foro


Registrado: 22 Dic 2006
Mensajes: 1113

MensajePublicado: Mie Ene 13, 2010 6:51 pm    Título del mensaje: Responder citando
El codigo mas importante lo puse ahi, lo que no agregé fueron los errores que se muestra dentro del form con php, y las variables q no agrege porque eran muchisimas.

Me pueds decir como mejorar la seguridad ahí, y de que forma poder utilizar otro select?

Una de las cosas es que tengo que utilizar mysql_close() al final de todo, no?

Lo que se me ocurre para comprobar si existe o no esos datos es utilizar lo de srtpos

Código:

$sql=mysql_query('SELECT * FROM usuarios');
// Comprobar Correo
$campo=$correo;
$buscar=strpos($sql,$campo);
if($buscar !== false){
echo "Este correo ya existe";
}
// Comprobar SubDominio
$campo=$subdominio;
$buscar=strpos($sql,$campo);
if($buscar !== false){
echo "Este subdominio ya existe";
}


EDIT:
Estuve leyendo bien del mysql_close() y se usa para cerrar la conexión a la Base de datos y es necesario hacerlo para no sobrecargar al servidor. xD
Pero siempre se agrega luego de haber hecho conexion con la DB, no ?

_________________

GameServers & WebHosting Provider
Volver arriba
Ver perfil del usuario Enviar mensaje privado Enviar correo
BenJa - KuMo
Yo soy el foro
Yo soy el foro


Registrado: 14 Ago 2006
Mensajes: 3489
Ubicación: España

MensajePublicado: Jue Ene 14, 2010 7:02 pm    Título del mensaje: Responder citando
el mysql_close lo tienes que poner siempre. Lo pondrás después que ya no necesites acceder a la BD para nada.
_________________

Web de Metal Slug y Kof!!

Web en Español de Project Zero!!
Volver arriba
Ver perfil del usuario Enviar mensaje privado Enviar correo Visitar sitio web del autor MSN Messenger
xtremer
Yo soy el foro
Yo soy el foro


Registrado: 22 Dic 2006
Mensajes: 1113

MensajePublicado: Jue Ene 14, 2010 9:53 pm    Título del mensaje: Responder citando
ajam, y con lo respecto a lo anterior sobre los select como te parece la forma mas adecuada para poder verificar estas 2 cosas (?)


Puedo utilizar 2 SELECT para validar esto? o estoy haciendo mi sitio vulnerable al hacerlo(?)

_________________

GameServers & WebHosting Provider
Volver arriba
Ver perfil del usuario Enviar mensaje privado Enviar correo
BenJa - KuMo
Yo soy el foro
Yo soy el foro


Registrado: 14 Ago 2006
Mensajes: 3489
Ubicación: España

MensajePublicado: Vie Ene 15, 2010 6:32 pm    Título del mensaje: Responder citando
por cierto, esto te funciona bien??:
Código:
$sql=mysql_query('SELECT * FROM usuarios');
// Comprobar Correo
$campo=$correo;
$buscar=strpos($sql,$campo);
if($buscar !== false)


$sql es un array(lo más seguro), no puedes hacer la comprobación de si está con el strpos(creo, no lo he probado).
_________________

Web de Metal Slug y Kof!!

Web en Español de Project Zero!!
Volver arriba
Ver perfil del usuario Enviar mensaje privado Enviar correo Visitar sitio web del autor MSN Messenger
xtremer
Yo soy el foro
Yo soy el foro


Registrado: 22 Dic 2006
Mensajes: 1113

MensajePublicado: Vie Ene 15, 2010 6:41 pm    Título del mensaje: Responder citando
No lo he probado, lo dije nomas para saber si podía hacerlo de esa forma,
porque n o se me ocurre como hacer sin tener q utilizar 2select
_________________

GameServers & WebHosting Provider
Volver arriba
Ver perfil del usuario Enviar mensaje privado Enviar correo
BenJa - KuMo
Yo soy el foro
Yo soy el foro


Registrado: 14 Ago 2006
Mensajes: 3489
Ubicación: España

MensajePublicado: Sab Ene 16, 2010 7:17 pm    Título del mensaje: Responder citando
puedes utilizar en el SELECT de saber si existe el email o la dirección el operador OR en la consulta.

En la consulta poner que devuelva los campo si es igual al email introducido o al subdominio introducido, si devuelve alguno de los dos es por que existen. Entonces mandas mensaje de error.
_________________

Web de Metal Slug y Kof!!

Web en Español de Project Zero!!
Volver arriba
Ver perfil del usuario Enviar mensaje privado Enviar correo Visitar sitio web del autor MSN Messenger
Mostrar mensajes anteriores:   
Publicar Nuevo Tema   Responder al Tema    Índice del Foro Foroz comunity :: Webmasters Todas las horas están en GMT + 1 Hora
Ir a página 1, 2  Siguiente
Página 1 de 2
Saltar a:  
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
 
Articulos relacionados
En General >> "Reboot and Select proper Boot d...
En Webmasters >> [SOLUCIONADO] MYSQL UPDATE
En Webmasters >> [SOLUCIONADO] PHP ARRAY+MYSQL
En Internet >> Dudas servidores. [Apache + MySQl + P...
En Webmasters >> problema con MySQL.
 

 
Foroz comunity Tema RSS 




by phpBB  
informatica Videos graciosos webmasters theme by Scott Stubblefield Top foroz