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

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Ayuda Consejos Para Evitar SQL INJECTION
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda Consejos Para Evitar SQL INJECTION  (Leído 2,689 veces)
SrTrp


Desconectado Desconectado

Mensajes: 325


Script/C#


Ver Perfil
Ayuda Consejos Para Evitar SQL INJECTION
« en: 19 Febrero 2017, 01:19 am »

Bueno me acaban de hacer una SQL injection, y se logearon en mi cuenta de administrador, y decidi agregarle cifrado a mis contraseñas tambien captchas, que me recomiendan para hacer un bloqueo y evitar estos SQL INJECTIONS uso en mi login el metodo $_POST pero me dijieron que es mejor el metodo $_GET, si me pudiesen dar unos consejos para como poder bloquear las puertas mas faciles para evitar estos SQL injections.


« Última modificación: 19 Febrero 2017, 03:21 am por SrTrp » En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Ayuda Consejos Para Evitar SQL INJECTION
« Respuesta #1 en: 19 Febrero 2017, 02:09 am »

Citar
uso en mi login el metodo $_POST pero me dijieron que es mejor el metodo $_GET

quien te dijo eso consume drogas baratas... lo haces por get y todas las contraseñas quedarán guardadas como url en el historial...

para evitar sql inyection, se evita en lo posible cualquier pase de datos directos enter post y la DB

poe ejemplo para usuario

Código
  1. $user = $_POST["user"];
  2. $pass = $_POST["pass"];
  3. //aquí el usuario será convertido a una representación hexadecimal
  4. $variable_segura = bin2hex($user);
  5.  
  6. //se pasa como hexadecimal a la db y se pide que la compare quitando el hexadecimal y comparando en "binario"
  7. $sql = "SELECT pass FROM users WHERE name = UNHEX('$variable_segura')";
  8.  
  9. // ejecutar sql....
  10.  
  11. if(password_verify($pass, $resultado_sql)){
  12.  echo "usuario correcto";
  13. }else{
  14.  echo "usuario incorrecto";
  15. }
  16.  

hay más aproximaciones que usar hexadecimal, puedes usar prepared query, puedes usar base 64, puedes guardar los usuarios como hash... etc

claro para esto tuviste que guardar tus contraseñas en tu DB usando password_hash

Código
  1. $hash = password_hash($contraseña_a_salvar, PASSWORD_DEFAULT);


En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
SrTrp


Desconectado Desconectado

Mensajes: 325


Script/C#


Ver Perfil
Re: Ayuda Consejos Para Evitar SQL INJECTION
« Respuesta #2 en: 19 Febrero 2017, 02:32 am »

Eso viene siendo para el loggearse verdad?
yo estoy usando la función htmlspecialchars para los caracteres pero igual se mejoraría  pasarlo a hexadecimal?
Código
  1. <?php
  2. function antiscript($DG) {
  3.  $DG= trim($DG);
  4.  $DG= stripslashes($DG);
  5.  $DG= htmlspecialchars($DG);
  6.  return $data;
  7. }
  8. include ("Encoding.php");
  9. require("conex.php");
  10.  
  11. $username= antiscript($_POST['usuario']);
  12. $pass= antiscript($_POST['pass']);
  13.  
  14. $sql=mysql_query("SELECT * FROM users WHERE usuario='$username'");
  15.  
  16. if($f=mysql_fetch_array($sql)){
  17.   $descript = Encrypter::decrypt($f['password']);
  18.  
  19. if($pass==$descript){
  20.    session_start();
  21.   $_SESSION['id']=$f['id'];
  22. $_SESSION['usuario']=$f['usuario'];
  23. ?>
  24.  
hay más aproximaciones que usar hexadecimal, puedes usar prepared query, puedes usar base 64, puedes guardar los usuarios como hash... etc

claro para esto tuviste que guardar tus contraseñas en tu DB usando password_hash

Código
  1. $hash = password_hash($contraseña_a_salvar, PASSWORD_DEFAULT);

para cifrar las contraseñas las hago de esta manera, cual sería la mas a decuada la que me has mencionado o esta?

Código
  1. public static function encrypt ($SA) {
  2.        $EN= base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5(Encrypter::$Key), $SA, MCRYPT_MODE_CBC, md5(md5(Encrypter::$Key))));
  3.        return $EN;
  4.    }
  5.  

También me han recomendado implementar el $_SERVER para evitar los ataques XSS pero no se como implementarlo en mi formulario.
Código
  1. action="<?=$_SERVER['PHP_SELF'];?>">


· No hagas doble post, usa el botón modificar
>aquí las reglas del foro
-Engel Lex
« Última modificación: 19 Febrero 2017, 02:49 am por engel lex » En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Ayuda Consejos Para Evitar SQL INJECTION
« Respuesta #3 en: 19 Febrero 2017, 02:54 am »

en general el metodo de cifrado está bien pero lo veo sobre elaborado... el que te dí es simple y directo, guarda un password normalmente en blowfish + salt

no uses mysql está ya obsoleto! si estnas al manual de php verás esto por todos lados




con el hex, no hay inyección que pase, ya que el contenido es convertido a una representación hexadecimal y luego su reconversión es comparada... para que pueda inyectarse, se necesita que al query llegue algún contenido interpretable por mysql, y en este caso, no lo hará
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
SrTrp


Desconectado Desconectado

Mensajes: 325


Script/C#


Ver Perfil
Re: Ayuda Consejos Para Evitar SQL INJECTION
« Respuesta #4 en: 19 Febrero 2017, 03:11 am »

Ooo ya lo cambiare a mysqli en cuanto pueda  :(
Ya implemente lo de hexadecimal de los usuarios gracias  ;-)
En cuanto lo del
Código
  1. action="<?=$_SERVER['PHP_SELF'];?>">
como puedo integrarlo ya que quisiera también aprevenir para los XSS :P
En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Ayuda Consejos Para Evitar SQL INJECTION
« Respuesta #5 en: 19 Febrero 2017, 03:18 am »

los xss es donde tengas cosas que los usuarios guarden en la base de datos y luego se muestre, o donde algún parametro get o post se muestre en el html... donde tienes algo de eso, no hay una solución universal a xss si no, fuera una función integrada a php y listo XD
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
SrTrp


Desconectado Desconectado

Mensajes: 325


Script/C#


Ver Perfil
Re: Ayuda Consejos Para Evitar SQL INJECTION
« Respuesta #6 en: 19 Febrero 2017, 03:20 am »

los xss es donde tengas cosas que los usuarios guarden en la base de datos y luego se muestre, o donde algún parametro get o post se muestre en el html... donde tienes algo de eso, no hay una solución universal a xss si no, fuera una función integrada a php y listo XD
Ooo Gracias por la explicación y por la solución que me diste me ah servidor
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda: Consejos para mi blog
Foro Libre
Flamer 9 3,039 Último mensaje 18 Febrero 2016, 14:34 pm
por ivancea96
Consejos para evitar ser infectado con virus en Facebook
Noticias
wolfbcn 0 1,010 Último mensaje 22 Febrero 2017, 14:30 pm
por wolfbcn
Consejos para evitar 'verlo todo' en Facebook
Noticias
wolfbcn 0 990 Último mensaje 24 Marzo 2017, 02:10 am
por wolfbcn
Ayuda para evitar poner flotante/double
Programación C/C++
lm_pa 1 1,470 Último mensaje 11 Abril 2017, 04:18 am
por Z@@K
programas para SQL injection?
Análisis y Diseño de Malware
Trollwer 1 3,011 Último mensaje 10 Mayo 2017, 22:50 pm
por MCKSys Argentina
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines