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

 

 


Tema destacado: Security Series.XSS. [Cross Site Scripting]


  Mostrar Mensajes
Páginas: [1] 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ... 65
1  Programación / Desarrollo Web / [Pregunta]: Definir un arreglo vacío (javascript). en: 3 Enero 2021, 22:32 pm
Hola,

¿Cómo podría definir un arreglo vacío?
Me explico...

Código
  1. var formdata = new FormData();
  2. var my_array = []; // esto es un arreglo vacío, si por consola imprimimos este dato nos va a devolver: []
  3.  
  4. for(var i = 0; i < my_array.length; i++)
  5. {
  6.      formdata.append('my_array[]', my_array[i]);
  7. }


Como el tamaño del arreglo es 0 porque está vacío, no va a entrar en ninguna interacción y no va a agregar dicho arreglo.

Intenté con algunas otras maneras pero siempre me termina agregando un dato vacío.. "" cuando lo llamo con formdata.get('my_array[]'); y lo que yo quiero que devuelva sea: [] que significa arreglo vacío.


Mod: Sacados los comentarios a texto para mejor lectura.
2  Programación / Desarrollo Web / Re: [Pregunta]: ¿Por qué pasa esto con mis llamadas AJAX? Es algo totalmente ilógico y sin sentido. en: 28 Diciembre 2020, 14:44 pm
PROBLEMA SOLUCIONADO

En resumen el problema fue una mala interpretación de como funcionaba el código y no hacer uso de let (variable local).

Explico, digamos que cuando se ejecutaban en este caso 2 peticiones ajax en simultaneo lo que ocurría era que...



Lo que pasa con esto es que en la variable "ajax_file_used" al ser de alcance global se va a terminar poniendo en false con el nuevo nombre modificado por lo que siempre la primer ejecución quedara con el "ajax_enviando" en true por eso después no funcionará.

La solución, usar let ajax_file_used y ya funcionaría.
3  Programación / Desarrollo Web / [Pregunta]: ¿Por qué pasa esto con mis llamadas AJAX? Es algo totalmente ilógico y sin sentido. en: 28 Diciembre 2020, 00:39 am
Hola,

bueno tengo para mostrarles hoy, dos funciones que hacen llamadas a código del servidor por medio de AJAX.

El problema que tengo es que si estas funciones ajax se ejecutan de manera "Secuencial" es decir, primero una y después la otra no va a haber ningún problema. Pero si las ejecuto al mismo momento se me bugean por lo menos la primer llamada de la siguiente manera.

Cuando digo que se bugean me refiero a que cuando la intento volver a llamar a dicha función esta no se ejecuta (no pasa absolutamente nada)

Para el ejemplo que les tengo, Un sistema donde tengo dos cajas donde en principio son de color gris pero al ejecutar "Ajax_Colour_A();" o "Ajax_Colour_B();" por medio de la consola del navegador va a modificar el color de las cajas. Si es Ajax_Colour_A modificará con color ROJO la primer caja pero si es Ajax_Colour_B modificará con color azul la segunda caja.

Además, abajo de todo habrá un mensaje en texto plano, de "Ejecutando..." cuando se este ejecutando el archivo php que este mensaje ayudará a que vean que no se ejecuta el archivo cuando se bugea su función correspondiente.

- test.php (tendrá las dos cajas y las definiciones de las funciones necesarias)
- ajax_colour_a.php (este archivo php será el que tendrá un script para modificar el color de la caja A con color ROJO)
- ajax_colour_b.php (este archivo php será el que tendrá un script para modificar el color de la caja B con color AZUL)

Aclaración: No hace falta verle el sentido al código, es solamente un ejemplo lo más básico posible para poder entender el problema.

test.php
Código
  1. <div id="box_a" style="background: #f2f2f2; border: 1px solid #e6e6e6; height: 300px; width: 300px; padding: 10px;">
  2.         <h2 style="text-align: center; margin-top: 70px;">AJAX #1</h2>
  3.         <h6 style="text-align: center; margin-top: 10px;">Ajax_Colour_A();</h6>
  4. </div>
  5. <div id="box_b" style="background: #f2f2f2; border: 1px solid #e6e6e6; height: 300px; padding: 10px;">
  6.         <h2 style="text-align: center; margin-top: 70px;">AJAX #2</h2>
  7.         <h6 style="text-align: center; margin-top: 10px;">Ajax_Colour_B();</h6>
  8. </div>
  9.  
  10. <script type="text/javascript">
  11.    var ajax_file_used = null;
  12.    var ajax_files = ['ajax_colour_a.php', 'ajax_colour_b.php'];
  13.    var ajax_enviando = [];
  14.    var ajax_solicitud = [];
  15.  
  16.    for(var i = 0; i < ajax_files.length; i++)
  17.    {
  18.        ajax_enviando[ajax_files[i]] = false;
  19.        ajax_solicitud[ajax_files[i]] = null;
  20.    }
  21.  
  22.    function Ajax_Colour_A()
  23.    {
  24.        ajax_file_used = 'ajax_colour_a.php';
  25.  
  26.        if(ajax_enviando[ajax_file_used] == false)
  27.        {
  28.            ajax_enviando[ajax_file_used] = true;
  29.  
  30.            ajax_solicitud[ajax_file_used] = $.ajax({
  31.                url: (ROOT_URL)+'/ajax/'+(ajax_file_used),
  32.                type: 'POST',
  33.                dataType: 'html',
  34.  
  35.                success: function()
  36.                {
  37.                    ajax_enviando[ajax_file_used] = false;
  38.                }
  39.            })
  40.  
  41.            .done(function(results)
  42.            {
  43.                $('body').append(results);
  44.            })
  45.  
  46.            .fail(function()
  47.            {
  48.                ajax_enviando[ajax_file_used] = false;
  49.            })
  50.        }
  51.    }
  52.  
  53.    function Ajax_Colour_B()
  54.    {
  55.        ajax_file_used = 'ajax_colour_b.php';
  56.  
  57.        if(ajax_enviando[ajax_file_used] == false)
  58.        {
  59.            ajax_enviando[ajax_file_used] = true;
  60.  
  61.            ajax_solicitud[ajax_file_used] = $.ajax({
  62.                url: (ROOT_URL)+'/ajax/'+(ajax_file_used),
  63.                type: 'POST',
  64.                dataType: 'html',
  65.  
  66.                success: function()
  67.                {
  68.                    ajax_enviando[ajax_file_used] = false;
  69.                }
  70.            })
  71.  
  72.            .done(function(results)
  73.            {
  74.                $('body').append(results);
  75.            })
  76.  
  77.            .fail(function()
  78.            {
  79.                ajax_enviando[ajax_file_used] = false;
  80.            })
  81.        }
  82.    }
  83. </script>
  84.  


ajax/ajax_colour_a.php
Código
  1. <!-- ajax_colour_a.php -->
  2. <?php
  3. echo "<br>ejecutando...<br>";
  4.  
  5. ?>
  6. <script type="text/javascript">
  7. document.getElementById('box_a').style.background = 'red';
  8. </script>
  9.  

ajax/ajax_colour_b.php
Código
  1. <!-- ajax_colour_b.php -->
  2. <?php
  3. echo "<br>ejecutando...<br>";
  4.  
  5. ?>
  6. <script type="text/javascript">
  7. document.getElementById('box_b').style.background = 'blue';
  8. </script>
  9.  

La verdad no puedo entender que es lo que está mal con el código porque todo debería de funcionar de 10, estuve todo el día de el porque de esto pero no se entiende.
4  Programación / Desarrollo Web / [Pregunta]: ¿Cómo puedo manipular un entero y un decimal en conjunto en una consulta SQL? en: 24 Diciembre 2020, 03:03 am
Buenas noches,

me refiero a tener los siguientes campos en una base de datos:

- number_int // representa un numero entero
- number_dec // representa un numero decimal (solo la parte después de la coma)

Ejemplos:

- number_int // por ejemplo: 9
- number_dec // por ejemplo: 34 donde 34 es "x, 34"

Mi pregunta es que en una consulta SQL yo pueda juntar tanto el number_int como el number_dec y formen un valor, en este caso el valor formado sería el 9.34 o 9,34

Creo que con eso ya me pude dar a entender correctamente, pero por las dudas agrego otro ejemplo:

Código
  1. "SELECT * FROM tabla WHERE Juntar(number_int y number_dec) >= x and Juntar(number_int y number_dec) <= y"
  2.  

Gracias.

5  Programación / Desarrollo Web / Re: [Pregunta]: ¿Existe una vulnerabilidad de inyección en esta consulta? en: 12 Diciembre 2020, 19:00 pm
Hola,

Código
  1. // tendría esto...
  2. $algo = 'algo';
  3. $algo_2 = 'algo';
  4.  
  5. $con = Connection(username, password);
  6. $query = $con->prepare('SELECT x, y FROM tabla WHERE x = :algo AND y = :algo_2');
  7. $query->execute(array(':algo' => $algo,
  8.                      ':algo_2' => $algo_2));
  9. $results = $query->fetchAll();
  10.  
  11. return $results;
  12.  
  13. // lo pasaría a esto, correcto?...
  14. $algo = 'algo';
  15. $algo_2 = 'algo';
  16.  
  17. $con = Connection(username, password);
  18. $query = $con->prepare('SELECT x, y FROM tabla WHERE x = :algo AND y = :algo_2');
  19. $query->execute(array(':algo' => bindParam($algo),
  20.                      ':algo_2' => bindParam($algo_2)));
  21. $results = $query->fetchAll();
  22.  
  23. return $results;
  24.  

Otra duda que me quedó es... entonces digamos que esas variables que había concatenado antes (arriba de todo, en el principio del tema) si no fueran constantes y si fueran datos que el usuario ingresa entonces SÍ habría una vulnerabilidad, no?

Gracias! (tardé en responder porque anduve bastante ocupado)
6  Programación / Desarrollo Web / [Pregunta]: ¿Existe una vulnerabilidad de inyección en esta consulta? en: 7 Diciembre 2020, 21:08 pm
Hola,

uso las consultas "prepare" que tengo entendido ayudan a prevenir las inyecciones SQL, ahora bien también escuche que no es recomendable por este tema concatenar datos a una consulta.

No estoy del todo seguro si en este caso existe una vulnerabilidad de inyección:

Código
  1. class x
  2. {
  3.     static function Consulta($x, $y)
  4.     {
  5.            $con = Connection(username, password);
  6.            $query = $con->prepare('SELECT x_campo, y_campo FROM x_tabla WHERE '.($x).' = '.($y));
  7.            $query->execute();
  8.    $results = $query->fetchAll();
  9.  
  10.    return $results;
  11.     }
  12. }
  13.  

aclarar que tanto los parametros $x, como $y son constantes y no son datos que el usuario envía, un ejemplo:

Código
  1. $datos = x::Consulta('id_user', 61); // son constantes, no datos que un usuario ingresa
7  Programación / Desarrollo Web / Re: [Pregunta]: ¿Hacer esto con los correos electrónicos de los usuarios es legal? en: 30 Noviembre 2020, 14:44 pm
Es verdad que el plazo de 6 horas aporta bastante seguridad. Pero aún así no convence del todo. Resulta que el administrador me cambia la dirección e-mail que debo usar para loguearme. Bien ¿y la nueva dirección es real? ¿corresponde a un correo real? Si es así, no es mi correo. La verdad no veo nada de seguridad en tener que usar como mi identificador una dirección de correo que no es mía; y que quién sabe para qué usará su dueño real. Aunque sea una dirección de un administrador, cualquiera sabe qué a manos puede llegar y qué usos le pueden dar. Y si no es una dirección real actualmente, ¿quién dice que no pueda llegar a serlo y que mañana alguien dé de alta y registre ese mail?

No sé; no es sólo la posible suplantación o la seguridad en general, sino que todo el proceso tiene un punto de artificioso que no me gusta. Éso y además la arbitrariedad de que un administrador lo cambie a gusto. ¿Qué motivos puede haber para asignarte un correo que no es tuyo? Lo lógico sería en todo caso cambiarte la contraseña y asignarte una. Vale, éso, dentro de la excepcionalidad, lo vería más lógico. ¿Pero cambiarte el correo?  :silbar:

Creo que la situación real no se ha explicado del todo y debe ser bastante "rarilla" cuando tú mismo -que es el que sabe de qué va la cosa- debes de tener tus "ideas", lo que se ve muy claro cuando incides muy particularmente en el aspecto "legal" del asunto. Por ahí se ve que no las tienes muy todas contigo y esperas a ver si te "justifican" esa forma de proceder.

Lo cual, dicho sea de paso, yo sería bastante escéptico de conseguirlo mediante las opiniones de un foro; todavía si en vez de foro.elhacker fuese foro.eljurista... ::) Pero vaya que un foro es un foro; y yo ese tipo de dudas las consultaría más bien con un abogado, antes que con un aficionado al hacking o la informática en general. Quien sabe, puede que por aquí haya alguien que reúna ambas condiciones. Aún así no dejaría de ser una opinión "foreril"; si estuviese en juego mi seguridad "legal" buscaría otro tipo de asesoramiento y apoyo más técnico y fiable.

A mí con chicanas, no flaco..

Fíjate como de un problema sobre si pedía email o username te dije que no existe tal vulnerabilidad en todo caso es la misma uses el login que uses ya por el hecho de guardar el email de los usuarios...
Así que eso de que es más recomendable usar el login username porque es más "seguro" es una idea estúpida si es por el problema de la "suplantación", hay que avisarle a facebook, paypal, etc que usen username será más seguro por el problema de "suplantación"

Segundo, quédate tranquilo que si no te sentís calificado para opinar de derecho o informática entonces no comentes me ahorras el tiempo en andar replicandote y si te molestaras en leer y en escribir menos quizás te hayas dado cuenta que en los primeros mensajes había puesto que iba a sacar la modificación de los email por parte de la administración...

No me tomo mal las críticas sino no hubiera creado el tema pero no me gustan las chicanas..

Respecto al problema principal del tema repito que ya lo saqué porque hay gente a la que hay que re escribirle las cosas..

Gracias por las críticas y sugerencias.
8  Programación / Desarrollo Web / Re: [Pregunta]: ¿Hacer esto con los correos electrónicos de los usuarios es legal? en: 29 Noviembre 2020, 21:27 pm
No. Porque ese e-mail que se solicita es para comprobación. No para loguearse después.

Se solicita para mandar desde el servicio un correo a esa dirección y poder comprobar mediante el correo de vuelta que desde esa dirección se ha solicitado realmente el servicio; por ejemplo el participar en un foro.

Una vez que se ha comprobado mediante el correo de vuelta -o la entrada en una página- que el usuario es realmente quien dice ser (en cuanto a su cuenta de correo electrónico se entiende) ya no hay más razón para usar el e-mail como logueo.

Pero de todas formas, si se usa el e-mail -una vez comprobado que es real- para loguerase...
¿cuál es el motivo de cambiarlo unilateral y arbitrariamente desde la administración del sitio?

¿Y se ha comprobado si el nuevo e-mail facilitado es real ? ¿Corresponde a alguien?

Ufff... Me suena a chapuza que ha hecho alguien por su cuenta y riesgo, sin encomendarse a Dios ni al Diablo.
Pinta no la tiene buena,  muy ortodoxo como que no es.


Pero haber..

Citar
Sin embargo, si en un sitio en el que los datos que piden loguearse con e-mail + contraseña, si alguien da como esos datos:
e-mail: morritos_menopausico@dominiocorreo.com
contraseña: la-que-sea

ese alguien sí que está suplantándome, ya que dirección e-mail:
morritos_menopausico@dominiocorreo.com
hay una y sólo una ---> la mía.

El problema tuyo con el login usando una dirección de correo electrónico es la suplantación de identidad, ¿no es así?

Es cierto, cualquiera puede ir y registrarse con un correo existente y que no les pertenezca. Ahora, si la persona no verifica esa dirección en un plazo de 6h se le eliminará la cuenta y quedará como que nunca se registró una cuenta con esa dirección. Ya sea, si el sistema cuenta con un login email+password o un username+password.

Si ese es el problema que decís de "suplantación" está solventado, o por ahí te referís a otro problema que no te puedo entender...
9  Programación / Desarrollo Web / Re: [Pregunta]: ¿Hacer esto con los correos electrónicos de los usuarios es legal? en: 29 Noviembre 2020, 18:25 pm
Yo lo que no entiendo es por qué usar una -supuesta- dirección de e-mail + contraseña como login para un sitio, en lugar de usar nombre-usuario + contraseña.

La diferencia es importante porque nombre-usuario todos sabemos que es algo completamente virtual, es un alias, un nick que -en principio- no tiene por qué corresponderse con una persona real.

Pero una dirección e-mail sí que puede corresponderse con un usuario real que tiene esa dirección e-mail real a través de la cual se envían y reciben mensajes de una persona, y que por tanto puede ser identificada ante situaciones reales.

Y una persona puede fácilmente usar una dirección e-mail real de otra persona, con lo que interferir en la vida real de esa persona. Por lo que no debería de usarse nunca como método-de-logueado un mail. Es cierto que también puede usarse el nombre real de una persona como nombre de usuario, pero la diferencia consiste en que un nombre de usuario se sabe que -por defecto- no tiene porqué corresponderse con el nombre real de una persona que se llame así, en cambio que con una dirección e-mail sí que se puede corresponder con una dirección real de alguien.

Lo aclaro con un ejemplo. Supongamos que yo en la vida real me llamo Morritos Menopáusico, o sea en los documentos legales de mi país figura:
Nombre: Morritos
Apellido: Menopáusico

Y que tengo como dirección e-mail registrada en el dominio de correo dominiocorreo.com la siguiente cuenta:
morritos_menopausico@dominiocorreo.com
desde la cual escribo y recibos correos reales (que evidentemente me identifican y hasta pueden ser usados como prueba en litigios judiciales).

Es cierto que alguien puede registrarse en cierto sitio en el que se exija nombre-de-usuario + contraseña como:
nombre-de-usuario: Morritos Menopáusico
contraseña: la-que-sea

y si lo veo, puede molestarme e incluso en algunos casos como Twiter, Facebook, etc pedir que baneen a alguien que haya usado ese nombre. Aunque lo tendría complicado porque puede haber bastantes personas que se llamen Morritos Menopáusico (en Facebook pueden verse muchas coincidencias) y si nadie usa fotos mías ni otros elementos que se correspondan sólo con mi personalidad, nadie tiene por qué suponer que soy yo realmente o que es alguien que me está suplantando, sino solamente alguien que, en algunos datos (mi nombre y apellido) coincide conmigo.

Sin embargo, si en un sitio en el que los datos que piden loguearse con e-mail + contraseña, si alguien da como esos datos:
e-mail: morritos_menopausico@dominiocorreo.com
contraseña: la-que-sea

ese alguien sí que está suplantándome, ya que dirección e-mail:
morritos_menopausico@dominiocorreo.com
hay una y sólo una ---> la mía.

Y si alguien ve ese usuario en un sitio y me conoce me identifica a mi personalmente. Y puede afectarme personalmente en mi vida. Por ejemplo ¿y si alguien se loguea en un sitio de pederastas con mi e-mail?

CONCLUSIÓN: lo que hay que evitar desde ya -y ya se está tardando en rectificar- es el usar para logueo una dirección-mail + contraseña.


Si en 12 horas o 6 horas (no me acuerdo bien) un usuario que se registró no verifica su correo se le elimina la cuenta por lo que no es posible una suplantación..

Edit: además casi todas las aplicaciones solicitan un correo electrónico independientemente de si se logean con username o email, así que la suplantación es posible ahí también
10  Programación / Desarrollo Web / Re: [Pregunta]: ¿Hacer esto con los correos electrónicos de los usuarios es legal? en: 28 Noviembre 2020, 21:45 pm
Hola, no entiendo para que un administrador necesita cambiar una email o una contraseña.... eso es personal del usuario y únicamente se podría cambiar eso en caso de tener algún problema con la cuenta, pero fuera de eso no veo porque hacer ese cambio y menos sin la autorización del usuario y con eso de avisarle enviandole un email no tiene porqué ser así...

Si yo entro a un sitio y hacen eso con mí cuenta, me sintiera invadido, no me parece bien eso, no olvides que aunque sea tu sitio, pero no es tu cuenta y debes respetar la privacidad y seguridad de tus usuarios.

Vuelvo a repetir lo de avisarle al usuario por e-mail no sirve para nada y no es justificable, no se juega con las cuentas de los usuarios.


Saludos

Citar
"en un principio lo hice por si a un usuario le ocurría algún problema y por cosas de la vida necesitara que se le modifique el correo electrónico..."

fue exactamente lo que dije...  :-\
voy a esperar más comentarios pero seguramente lo saque...
Páginas: [1] 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ... 65
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines