| Ver tema anterior :: Ver siguiente tema |
| Autor |
Mensaje |
xtremer Yo soy el foro

Registrado: 22 Dic 2006
Mensajes: 1113
|
Publicado: Dom Ene 10, 2010 11:26 pm Título del mensaje: PHP MYSQL SELECT() |
|
|
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 |
|
 |
BenJa - KuMo Yo soy el foro


Registrado: 14 Ago 2006
Mensajes: 3489
Ubicación: España
|
|
| Volver arriba |
|
 |
xtremer Yo soy el foro

Registrado: 22 Dic 2006
Mensajes: 1113
|
Publicado: Mar Ene 12, 2010 10:54 pm Título del mensaje: |
|
|
| 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 |
|
 |
BenJa - KuMo Yo soy el foro


Registrado: 14 Ago 2006
Mensajes: 3489
Ubicación: España
|
Publicado: Mie Ene 13, 2010 6:16 pm Título del mensaje: |
|
|
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 |
|
 |
xtremer Yo soy el foro

Registrado: 22 Dic 2006
Mensajes: 1113
|
Publicado: Mie Ene 13, 2010 6:51 pm Título del mensaje: |
|
|
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 |
|
 |
BenJa - KuMo Yo soy el foro


Registrado: 14 Ago 2006
Mensajes: 3489
Ubicación: España
|
|
| Volver arriba |
|
 |
xtremer Yo soy el foro

Registrado: 22 Dic 2006
Mensajes: 1113
|
Publicado: Jue Ene 14, 2010 9:53 pm Título del mensaje: |
|
|
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 |
|
 |
BenJa - KuMo Yo soy el foro


Registrado: 14 Ago 2006
Mensajes: 3489
Ubicación: España
|
Publicado: Vie Ene 15, 2010 6:32 pm Título del mensaje: |
|
|
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 |
|
 |
xtremer Yo soy el foro

Registrado: 22 Dic 2006
Mensajes: 1113
|
Publicado: Vie Ene 15, 2010 6:41 pm Título del mensaje: |
|
|
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 |
|
 |
BenJa - KuMo Yo soy el foro


Registrado: 14 Ago 2006
Mensajes: 3489
Ubicación: España
|
Publicado: Sab Ene 16, 2010 7:17 pm Título del mensaje: |
|
|
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 |
|
 |
|
|
|