elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  busco Un codigo muy sencillo
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] Ir Abajo Respuesta Imprimir
Autor Tema: busco Un codigo muy sencillo  (Leído 8,235 veces)
Alex_bro


Desconectado Desconectado

Mensajes: 1.246



Ver Perfil
Re: busco Un codigo muy sencillo
« Respuesta #10 en: 13 Octubre 2007, 01:36 am »

Programacion Segura con PHP
Te recomendaria ese script si vas a aceptar muchos caracteres "extranos" en las pass, como podrian ser & ^ $ @ etc...
Si vas a ser un poco mas estricto podria usarse algo como lo siguiente, que podria ser mas eficaz, aunque es algo escrito por mi, podria estar gafado xD, para aceptar solo numeros, letras y guiones, y que ademas sea de 6 a 12 caracteres seria esto:
Código:
function limpiar_pass($pass) {
if(preg_match("/^[a-z0-9-_]{6,12}$/i",$pass)) {
return $pass;
}else{ die ("El mensaje de error que tu quieras"); }
}
y luego cuando vayas a recoger la pass por GET haces esto:
Código:
$pass=limpiar_pass($_GET['pass']);
asi estarias a salvo...
aunque como ya digo para la mayoria de los casos sirve perfectamente el script del post que te he puesto al principio, y ademas con el metodo de Azielito se limpian automaticamente todas las variables, sin que no tengas que hacer mas que colocarlo al principio de tu script.

Saludos.


En línea

bels_mike


Desconectado Desconectado

Mensajes: 329



Ver Perfil WWW
Re: busco Un codigo muy sencillo
« Respuesta #11 en: 13 Octubre 2007, 10:13 am »

el problemilla de meter los datos a la base de datos ya está solucionado, ahora voy a intentar evitar las inyecciones a través de tu funcion xD a ver si se colocarlo bien jejejje

EDITO:
Bueno, lo he aplicado en el archivo de preocesar.php, y mas o menos me va bien, ahora tengo una preuntilla, como puedo agregar yo mas carácteres y como puedo porejemplo aceptar uno porque esa funcion no tengo claro como funciona

A mi el archivo procesar.php se me ha quedado asi:
Código
  1. <?php
  2.   include("conect.php");
  3.   $link=Conectarse();
  4.   $correo=$_GET['correo'];
  5.      function limpiar_pass($pass) {
  6. if(preg_match("/^[a-z0-9-_]{6,12}$/i",$pass)) {
  7. return $pass;
  8. }else{ die ("El mensaje de error que tu quieras"); }
  9. }
  10.   $pass=limpiar_pass($_GET['pass']);
  11.   mysql_query("insert into prueba (correo,pass) values ('$correo','$pass')",$link);
  12.  
  13.   header("Location: ejemplo3.php");
  14. ?>


« Última modificación: 13 Octubre 2007, 10:24 am por bels_mike » En línea

Alex_bro


Desconectado Desconectado

Mensajes: 1.246



Ver Perfil
Re: busco Un codigo muy sencillo
« Respuesta #12 en: 13 Octubre 2007, 11:31 am »

Pues simplemente anades los caracteres que sean entre los [ ], y para la longitud los de { }. Por ejemplo, una pass que pueda tener letras, numeros, guiones y la arroba:
Código
  1. function limpiar_pass($pass) {
  2. if(preg_match("/^[a-z0-9-_@]{6,12}$/i",$pass)) {
  3. return $pass;
  4. }else{ die ("El mensaje de error que tu quieras"); }
  5. }
Despues la $/i es para que pasen tanto minusculas como mayusculas...

Puedes encontrar mas info en esta pagina de php.net sobre preg_match en el apartado en el que hablan de las expresiones regulares.

Y por cierto puedes cambiar "El mensaje de error que tu quieras" por otro cualquiera, como por ejemplo "Pass no valida" o algo asi...

Y un ultimo consejo, tienes que limpiar toda la informacion que vayas a pasar a una base de datos... de nada vale limpiar solo la pass, por que por ejemplo ahora tu web seria vulnerable pasando un codigo en el campo de correo. Te dejo un ejemplo de como utilizar la funcion para un correo:
Código
  1. function  limpiar_correo($correo) {
  2. if (preg_match("/^[0-9a-zA-Z\.\-\_]+\@[0-9a-zA-Z\.\-]+$/", $correo)){
  3. return $correo;
  4. }else{ die ("Correo no valido"); }
  5. }

Saludos.
En línea

bels_mike


Desconectado Desconectado

Mensajes: 329



Ver Perfil WWW
Re: busco Un codigo muy sencillo
« Respuesta #13 en: 13 Octubre 2007, 11:41 am »

vale, muchas gracias, lo de ponerlo en l ode correo l otenia pensdo la verdad.... y mas o menos sabia como (por lo de la @) de todos modos cuando lo pruebe te digo que tal me va ahroa me tengo que ir jejjeje

EDITO:
Bueno pues algo hago mal:
Código
  1. <?php
  2.   include("conect.php");
  3.   $link=Conectarse(); <br>
  4. function  limpiar_correo($correo) {
  5. if (preg_match("/^[0-9a-zA-Z\.\-\_]+\@[0-9a-zA-Z\.\-]+$/", $correo)){
  6. return $correo; }
  7. else{ die ("Correo no valido"); }
  8.      function limpiar_pass($pass) {
  9. if(preg_match("/^[a-z0-9-_]{3,25}$/i",$pass)) {
  10. return $pass;
  11. }else{ die ("Error de caractéres en la contraseña"); }
  12. }<br>
  13.   $correo=limpiar_correo($_GET['correo']);
  14.   $pass=limpiar_pass($_GET['pass']);
  15.   mysql_query("insert into prueba (correo,pass) values ('$correo','$pass')",$link);
  16.  
  17.   header("Location: ejemplo3.php");
  18. ?>
« Última modificación: 13 Octubre 2007, 14:58 pm por bels_mike » En línea

Alex_bro


Desconectado Desconectado

Mensajes: 1.246



Ver Perfil
Re: busco Un codigo muy sencillo
« Respuesta #14 en: 13 Octubre 2007, 15:06 pm »

Claro, aunque para el correo mas que anadirle la @ a la primera funcion que te puse, yo usaria la segunda funcion de mi post anterior, por que asi verifica tambien que el correo esta bien compuesto, de lo contrario el arroba podria estar escrito en cualquier parte...

Tambien decirte que lo de die("Mensaje"); es para el ejemplo, pero en la practica no es nada practico mandarle un mensaje de error al usuario y ya esta, sino que en ese ELSE podrias declarar una variable "o algo" para retornar al usuario al formulario explicando el error.

Espero tus resultados y comentarios, pues estoy por sacar una funcion mas completita donde se pueda definir de forma mas facil que caracteres se desea aceptar etc... haber si asi acabamos con los fallos mas comunes de algunas webs (ya se sabe que para hacerla segura al 100% no siempre funciona un script "generico").

Saludos.
En línea

bels_mike


Desconectado Desconectado

Mensajes: 329



Ver Perfil WWW
Re: busco Un codigo muy sencillo
« Respuesta #15 en: 13 Octubre 2007, 15:14 pm »

te he escrito el resultado en el ultimo post pero te lo pongo aui tambien:
Código
  1. <?php
  2.   include("conect.php");
  3.   $link=Conectarse(); <br>
  4. function  limpiar_correo($correo) {
  5. if (preg_match("/^[0-9a-zA-Z\.\-\_]+\@[0-9a-zA-Z\.\-]+$/", $correo)){
  6. return $correo; }
  7. else{ die ("Correo no valido"); }
  8.      function limpiar_pass($pass) {
  9. if(preg_match("/^[a-z0-9-_]{3,25}$/i",$pass)) {
  10. return $pass;
  11. }else{ die ("Error de caractéres en la contraseña"); }
  12. }<br>
  13.   $correo=limpiar_correo($_GET['correo']);
  14.   $pass=limpiar_pass($_GET['pass']);
  15.   mysql_query("insert into prueba (correo,pass) values ('$correo','$pass')",$link);
  16.  
  17.   header("Location: ejemplo3.php");
  18. ?>


el caso es que me dice que no encuentra la pagina cuendo doy a enviar
« Última modificación: 13 Octubre 2007, 15:16 pm por bels_mike » En línea

Alex_bro


Desconectado Desconectado

Mensajes: 1.246



Ver Perfil
Re: busco Un codigo muy sencillo
« Respuesta #16 en: 13 Octubre 2007, 15:46 pm »

Seguro que existe ejemplo3.php? tal vez te dice que no lo encuentra por que el Location te lleva a una pagina que no existe.

Saludos.
En línea

bels_mike


Desconectado Desconectado

Mensajes: 329



Ver Perfil WWW
Re: busco Un codigo muy sencillo
« Respuesta #17 en: 14 Octubre 2007, 01:38 am »

si que existe tio:
Código
  1. <html>
  2. <head>
  3.   <title>Ejemplo de PHP</title>
  4. </head>
  5. <body>
  6. <H1>Ejemplo de uso de bases de datos con PHP y MySQL</H1>
  7. <FORM ACTION="procesar.php">
  8. <TABLE>
  9. <TR>
  10.   <TD>Correo electrónico:</TD>
  11.   <TD><INPUT TYPE="text" NAME="correo" SIZE="20" MAXLENGTH="30"></TD>
  12. </TR>
  13. <TR>
  14.   <TD>cotraseña:</TD>
  15.   <TD><INPUT NAME="pass" TYPE="password" SIZE="20" MAXLENGTH="30"></TD>
  16. </TR>
  17. </TABLE>
  18. <INPUT TYPE="submit" NAME="accion" VALUE="Grabar">
  19. </FORM>
  20. <hr>
  21.  
  22. <?php
  23.   include("conect.php");
  24.   $link=Conectarse();
  25.   $result=mysql_query("select * from prueba",$link);
  26. ?>
  27.  
  28. <TABLE BORDER=1 CELLSPACING=1 CELLPADDING=1>
  29.      <TR>
  30.        <TD>&nbsp;<B>Correos electr&oacute;nicos </B></TD>
  31.        <TD>&nbsp;<B>pass</B>&nbsp;</TD></TR>
  32.  
  33.  
  34. <?php      
  35.   while($row = mysql_fetch_array($result)) {
  36.      printf("<tr><td>&nbsp;%s</td> <td>&nbsp;%s&nbsp;</td></tr>", $row["correo"], $row["pass"]);
  37.   }
  38.   mysql_free_result($result);
  39.   mysql_close($link);    
  40. ?>
  41.  
  42. </table>
  43. </body>
  44. </html>  
En línea

Alex_bro


Desconectado Desconectado

Mensajes: 1.246



Ver Perfil
Re: busco Un codigo muy sencillo
« Respuesta #18 en: 14 Octubre 2007, 11:19 am »

Si existen procesar.php, ejemplo3php y conect.php no deberia pasar...
Prueba a poner la direccion completa de ejemplo3.php en el header.

El error es que no existe la pagina (error 404) o es un error de php? haber si me estoy liando... jeje.

Saludos.
En línea

Páginas: 1 [2] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda con código PHP+MySQL sencillo
PHP
mokoMonster 2 2,743 Último mensaje 19 Marzo 2012, 21:27 pm
por mokoMonster
Transformar Codigo Sencillo de VB6 a C++
Programación C/C++
revenge1252 8 4,822 Último mensaje 6 Junio 2012, 17:47 pm
por revenge1252
Problema con codigo para codificar/decodificar caracteres (SENCILLO)
Programación C/C++
Erres 4 5,161 Último mensaje 31 Octubre 2012, 16:51 pm
por Stakewinner00
[Novato] Problema con do-while en codigo sencillo
Java
Mitsu 3 4,688 Último mensaje 9 Febrero 2013, 15:47 pm
por Debci
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines