send
Grupo de Telegram
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

Un par de tips caseros.

  • 0 Respuestas
  • 912 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Xt3mP

  • *
  • Underc0der
  • Mensajes: 432
  • Actividad:
    0%
  • Reputación 0
  • Ellos me están buscando, pero yo los encontraré.
    • MSN Messenger - Xt3mP@h4x0rz.us
    • AOL Instant Messenger - Xt3mP@h4x0rz.us
    • Yahoo Instant Messenger - Xt3mP@h4x0rz.us
    • Ver Perfil
    • Xt3mP
« en: Agosto 17, 2010, 08:03:43 pm »
Algunas funciones y tips para mejorar su web.
------------------------------------------------
Hace poco esta adentrandome más en PHP y encontré (mejor dicho, recordé) una función parecida a la etiqueta FORM METHOD en modo GET de HTML que lo que hace es mostrar ó añadir los argumentos (en este caso los inputs) del formulario por una URL, ejemplo:

Código: HTML5
  1. <You are not allowed to view links. Register or Login>
  2. <You are not allowed to view links. Register or Login>
  3. <You are not allowed to view links. Register or Login>Form</You are not allowed to view links. Register or Login>
  4. </You are not allowed to view links. Register or Login>
  5. <You are not allowed to view links. Register or Login>
  6. <You are not allowed to view links. Register or Login action="" METHOD="GET">
  7. Nombre: <You are not allowed to view links. Register or Login type="text" name="name" id="name"><You are not allowed to view links. Register or Login /> <!-- Xt3mP -->
  8. Edad: <You are not allowed to view links. Register or Login type="text" name="age" id="age"><You are not allowed to view links. Register or Login /> <!-- 17 -->
  9. Mail: <You are not allowed to view links. Register or Login type="text" name="mail" id="mail"><You are not allowed to view links. Register or Login /> <!-- Xt3mP@und3rgr0und.org -->
  10. Pais: <You are not allowed to view links. Register or Login type="text" name="country" id="country"><You are not allowed to view links. Register or Login /> <!-- Mexico -->
  11. <You are not allowed to view links. Register or Login type="submit" value="Enviar">
  12. </You are not allowed to view links. Register or Login>
  13. </You are not allowed to view links. Register or Login>
  14. </You are not allowed to view links. Register or Login>
  15.  

Y que al dar enviar nos generaría una URL algo así: You are not allowed to view links. Register or Login, es decir, nos muestra todas los "inputs" en la variable.

Entonces con PHP hay una función llamada http_build_query() que apartir de un array asociativo ó indexado, nos generaría una "cadena" al estilo de GET como mencioné anteriormente:

Código: PHP
  1. <?php
  2. $datos = You are not allowed to view links. Register or Login("name" => "Xt3mP", "age" => "17", "mail" => "Xt3mP@und3rgr0und.org", "country" => "Mexico");
  3. echo "www.web.com/path/?".You are not allowed to view links. Register or Login($datos);
  4. /*
  5. Daria:
  6. www.web.com/path/?name=Xt3mP&age=17&mail=Xt3mP%40und3rgr0und.org&country=Mexico
  7. */
  8. ?>
  9.  

Como ven, hace "prácticamente" lo mismo, esto puede servir en caso de que tengamos muchos "switchs" ó si tenemos alguna página que necesite agregar los argumentos en la URL ya que no podemos hacer un "switch" para cada parámetro, entonces creamos un array con los datos que ocuparémos y listo, la verdad a mi me funciona mucho, espero les sirva.
------------------------------------------------
Limpiar variables con carácteres raros.

Cuantas veces no nos ha pasado que tenemos algún sistema de usuarios ó algún sistema de registros en donde el usuario tiene que facilitar su nickname (nombre de usuario) y al revisar el registro ó base de datos nos encontramos con carácteres raros que pueden dejarnos vulnerables, entonces hice una función que "limpia" literalmente los carácteres raros de la siguiente manera:

Código: PHP
  1. <?php
  2. function limpiar_texto($texto){
  3. $car = You are not allowed to view links. Register or Login("\\","ª","º","-","~","#","@","|","!","\"","·","$","%","&","/","(",")","?","'","¡","¿","[","^","`","]","+","Ç","}","{","¨","´","ñ","Ñ",">","<",";",",",":","."," ","á","é","í","ó","ú","Á","É","Í","Ó","Ú","à","â","ã","À","Â","Ã","è","ê","ì","î","Ì","Î","ò","ô","õ","Ò","Ô","Õ","ù","û","Ù","Û");
  4. $texto = You are not allowed to view links. Register or Login($car, "", $texto);
  5. return $texto;
  6. }
  7. echo limpiar_texto($_GET['casilla_de_texto']);
  8. /*
  9. xTÉèêemP daria:
  10. xTemP
  11. */
  12. ?>
  13.  

Entonces, simplemente hacer un include a las funciones y agregar la que les facilité arriba y así limpiamos los carácteres raros, inclusive pueden quitar ó agregar carácteres en el array dependiendo lo que necesiten.
------------------------------------------------
Saber quien nos está queriendo fastidiar la web.

Muchas veces al filtrar las variables no se guarda en la base de datos los carácteres raros que pueden ser vulnerables hacia nuestra web, pero ¿Entonces como localizaríamos a aquellos que nos quieren joder? Fácil.

Suponiendo que es un registro:

Código: PHP
  1. <?php
  2. include ("connect.php"); //Incluimos la conexion a la DB
  3. $user = $_POST['user'];
  4. $pass = $_POST['pass'];
  5. $mail = $_POST['mail'];
  6. $ip = $_SERVER[REMOTE_ADDR];
  7. You are not allowed to view links. Register or Login("INSERT INTO users (user,pass,mail,ip) values ('".$user."','".$pass."','".$mail."','".$ip."') ") or You are not allowed to view links. Register or Login (You are not allowed to view links. Register or Login());
  8. echo "Hola ".You are not allowed to view links. Register or Login($user).", te has registrado correctamente.";
  9. ?>
  10.  

Introducimos los datos a la base de datos sin filtrar las variables y mostramos en pantalla filtrandolas, te preguntarás ¿Por qué? Así suponiendo que el usuario escribe algo como "<h1>Xt3mP</h1>", así igualmente aparecería en la base de datos junto con la IP, de esta manera sabremos quien nos esta queriendo joder las "balls", obviamente al mostrarlo en pantalla le metemos un htmlentities(), bueno, a mi me sirve, he pillado a muchos que han querido joderme.
------------------------------------------------
Usuarios autorizados.
 
A veces (He visto), que una parte de las páginas web online te piden autorización para ciertas páginas, digamosle panel_adm.php ¡PERO!, si entramos (ejemplo) a panel_adm_addusers.php da la casualidad que hay no te pide autorización del sitio y queda totalmente a la merced del usuario atacante.

Les recomiendo hacer una función ó comprobar (como lo haré en este caso) que siempre que sea una página crítica solo personal autorizado pueda acceder a ella:

Código: PHP
  1. <?php
  2. You are not allowed to view links. Register or Login(); //Inicia la session, si existe la retoma, si no existe la crea.
  3.  
  4. if ($_SESSION['admin'] != TRUE){ //Comprobamos que la sesion ADMIN sea verdadera, recuerden que != significa diferente a.
  5. echo "No autorizado";
  6. }else{
  7.  
  8. //Toda la web aqui
  9.  
  10. }
  11. ?>
  12.  
------------------------------------------------
Encriptación de contraseñas.

A veces la encriptación de contraseñas con "hashes" se nos hace un poco díficil ya que es one-way, es decir, solo encriptan más no tiene función para desencriptar a menos que sea con "brutus force" mediante encriptando la contraseña en el mismo tipo de encriptación y comparar si la contraseña encriptada es igual a la que encriptamos, es decir:


Si la contraseña encriptada del usuario es: 21fa33e4fb9fa3f1da10f7c17823e7e8

El atacante al obtener esa contraseña y darse cuenta por obvias razones que es md5, utilizará alguna herramienta tanto online como offline que funcionan de la siguiente manera:

Encriptar: Text1 = 1c06e3d86536d0eb8903da08af433909
Encriptar: Text1 = eb396671a7de43af3a9b5afaceb1514b
Encriptar: Xt3mP = 21fa33e4fb9fa3f1da10f7c17823e7e8 (Bingo) Nos vota exáctamente el mismo hash por lo tanto esa sería la contraseña.

En terminos básicos, para desencriptar un hash one-way se hace a la reversa literalmente, encriptas el texto lo cual hará que nos genere un hash y ya obteniendo ese hash lo comparas con el hash de la contraseña.

Así que almenos yo encripto la contraseña de manera muy, mmm como decirlo, que sea díficil de descifrarla:

Código: PHP
  1. <?php
  2. $pass = "Xt3mP";
  3. $pass = You are not allowed to view links. Register or Login(You are not allowed to view links. Register or Login(You are not allowed to view links. Register or Login(You are not allowed to view links. Register or Login(You are not allowed to view links. Register or Login(You are not allowed to view links. Register or Login($pass),"s523/*a5s4s"))).$pass));
  4. echo $pass;
  5. /*
  6. Daria:
  7. Y2YzOWUxYzNkZWZiZGExYmU3OTUyNDk2MmE0YjhiNTA=
  8. */
  9. ?>
  10.  

Ya al momento de querer cambiar la contraseña hay sería lo díficil, porque tendrías que crear un sistema de reseteo de contraseña mediante la introducción de la fecha de nacimiento, pregunta privada, etc.

Nota: Y sí, puse base64 para que cuando el atacante la vea sepa que le estoy jugando una pequeña bromita =).
------------------------------------------------
Ultimo tip y el más importante.

Es un frase:

"No por tener menos código significa que sea mejor."

Creo que le entienden, se refiere a que no por tener reducido todo en un solo PHP (y gracias a esto cometer un error de programación) significa que el script vaya a ser mejor ó más rápido, usen la cantidad de archivos que realmente necesiten.
------------------------------------------------
Saludos.
« Última modificación: Marzo 27, 2014, 06:07:19 pm por Expermicid »
Cada vez que me das Karma me motivas

 

¿Te gustó el post? COMPARTILO!



TIPS para programar mejor en php

Iniciado por alexander1712

Respuestas: 6
Vistas: 2412
Último mensaje Octubre 29, 2012, 03:15:18 pm
por alexander1712
Un par de tips caseros

Iniciado por Xt3mP

Respuestas: 0
Vistas: 891
Último mensaje Enero 27, 2011, 09:31:08 am
por Xt3mP