Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Leguim

#351
Cita de: MinusFour en  4 Diciembre 2019, 14:14 PM
Lo que podrías hacer es no invalidar el token si el usuario vuelve a abrir el formulario (no reescribir el token si ya hay una entrada) y simplemente reusar el token anterior. De forma que en lugar de tener un token por sesión tienes un token único por sesión por cada formulario.

¡Tenes razón!
¿Como se me pasó? jaja GRACIAS ya lo hago!  ;-) ;-) ;-) ;-)
#352
Buenos días,

tengo un formulario ("id_form") en el cual tengo 2 inputs uno que tiene name="username" y name="pass"

Código (javascript) [Seleccionar]

        $('#id_form').on('change',function() // detecto si se produjo un cambio en el formulario entero
        {
            if(id_form.input_username.onchange) // quiero que si el cambio se produjo en el input username
            {
                alert('1');
            }
            else if(id_form.input_pass.onchange) // quiero que si el cambio se produjo en el input pass
            {
                alert('2');
            }
        });


Como esta el código no da errores pero tampoco sirve, no hace nada.
Probé de otras maneras pero tampoco me servían porque me daban errores, quiero hacerlo de esta manera para no tener que estar poniendo una id="" a cada campo o un onchange, es muy tedioso y prefiero hacerlo así...
#353
Desarrollo Web / [Pregunta]: Anti-CSRF 2.0 (Dilema)
4 Diciembre 2019, 13:30 PM
Buenos días,

hasta día de hoy mi protección para ataques CSRF es generar un token de seguridad o aleatorio para cada formulario, es decir si yo entro a la pagina login, efectivamente me va a generar un token con el nombre del formulario, "token_csrf_form_login" quedando así $_SESSION['token_csrf_form_login"] después si entro a el formulario de registro $_SESSION['token_csrf_form_registry'] cada una de estas sessiones va a tener un token diferente pero hay un problema con este método y es que si la persona esta con dos formularios iguales a la misma vez se va a generar un problema...

[Page A (Registry)] [Page B (Registry)]

Primero va a generar un tocken para form_registry, después cuando vuelva a abrir el mismo formulario desde otra ventana o pestaña va a volver a generar el token y va a dejar obsoleto el anterior, por lo que el formulario que se abrió primero quedará inoperable, va a terminar dando un error para la primera pestaña o ventana que haya.. cargado el formulario antes.

Buscando por ahí varias formas de crear token se sigue un patrón (es material del 2011 a el 2014) generar el token una vez que el usuario se logea.

[Usuario inicia sesión]
[Genera tocken anti CSRF] => $_SESSION['token_csrf'] = [Dato aleatorio];
y todos los formularios u otros métodos que requieran este tipo de seguridad van a compartir el mismo token (por lo menos hasta que el usuario se desconecte, ahí ya se destruyen todas las sessiones).

¿Qué opinan de esto? ¿Se inclinan por la opción A u opción B?
#354
Cita de: AlbertoBSD en  4 Diciembre 2019, 05:57 AM
Necesitas combiar un poco de paradigma de programacion, yo antes tambien tenia problemas con esa parte de javascript.

Te recomiendo el siguiente link que a mi me sirvio mucho, muchisimo para entender las "Promises" y como aplicarlas en mi codigo.

https://scotch.io/tutorials/javascript-promises-for-dummies

Espero que a ti tambien te funcione.

Saludos!

Recien lo termine de ver, te agradezco... igualmente no me queda todavía en claro como puedo aplicarlo...

Buscando por ahí encontré lo siguiente aunque tampoco me funciona, ¿será que estoy cerca de entender o cada vez estoy más lejos?

Código (javascript) [Seleccionar]

$.when(Change_Select_Ubication('select_country')).then(function()
            {
                var select_province = document.getElementById('select_province');
                var op_province = select_province.getElementsByTagName('option');
                op_province[<?php echo($_POST['select_province']); ?>].selected = true;

                $.when(Change_Select_Ubication('select_province')).then(function()
                {
                    var select_municipality = document.getElementById('select_municipality');
                    var op_municipality = select_municipality.getElementsByTagName('option');
                    op_municipality[<?php echo($_POST['select_municipality']); ?>].selected = true;

                    $.when(Change_Select_Ubication('select_municipality')).then(function()
                    {
                        var select_city = document.getElementById('select_city');
                        var op_city = select_city.getElementsByTagName('option');
                        op_city[<?php echo($_POST['select_city']); ?>].selected = true;
                    });
                });
            });
#355
Les agradecería mucho si me dan una mano con esto,

entonces digamos si yo necesito que una función AJAX se complete... mientras no se haya completado no puede ejecutar lo que tenga abajo.
Porque tengo que estar haciendo esto usando timeout para que funcione bien algo que se no es bueno ya que esto es dinámico quizá un día tarde 1.3 segundos completar la función AJAX quien sabe..

Código (javascript) [Seleccionar]

            var select_country = document.getElementById('select_country');
            var op_country = select_country.getElementsByTagName('option');
            op_country[<?php echo($_POST['select_country']); ?>].selected = true;

            Change_Select_Ubication('select_country'); // ESTA FUNCIÓN MIENTRAS NO SE COMPLETE QUE NO SIGA LEYENDO INSTRUCCIONES Y EJECUTANDOLAS
 
            setTimeout(function()
            {
                var select_province = document.getElementById('select_province');
                var op_province = select_province.getElementsByTagName('option');
                op_province[<?php echo($_POST['select_province']); ?>].selected = true;
             }, 1000);


Quise probar con async: false, pero bueno tampoco me sirvió... ¿Como podría aplicar las "promesas" acá? ¿Eso servirá?
#356
Buenas noches,

¿Qué significa esta alerta? Apareció cuando a mi función AJAX le puse async: false para que deje de ser asincrona... ¿Qué quiere decir esta alerta? ¿Es algo grave?
#357
Desarrollo Web / Re: [Pregunta]: Token CSRF
3 Diciembre 2019, 17:38 PM
Imagino que voy a tener que actualizar o crear 2 sistemas anti CSRF totalmente diferentes ya que como hago para hacer un token para cada pagina (mejor dicho para cada pagina que use $_GET por ejemplo o cambie de estado)

ya que la manera en como lo hago no me va a servir para esto (si para los formularios) pero no para esto... (este método no me acuerdo bien quien me lo había pasado creo que era EdePC o !Drvy) lo había mejorado un poco y quedo así:

Código (php) [Seleccionar]

function Create_Token($name)
{
$result = 'Error';

if(is_string($name))
{
$token_new = 'token_'.($name);
$token_old = 'token_old_'.($name);

if(isset($_SESSION[$token_new]))
{
if(!empty($_SESSION[$token_new]))
{
$_SESSION[$token_old] = $_SESSION[$token_new];
}
}

$_SESSION[$token_new] = Create_Code();
$result = $_SESSION[$token_new];
}

return $result;
}


la parte de verificación sería:

Código (php) [Seleccionar]

function Validate_Token($name, $value)
{
$result = false;

if(is_string($name) && is_string($value))
{
$token_old = 'token_old_'.($name);

if(isset($_SESSION[$token_old]))
{
if(!empty($_SESSION[$token_old]) && $_SESSION[$token_old] === $value)
{
$result = true;
}
}
}

    return $result;
}


En un formulario...

[Creo el token con el nombre del formulario]
[El valor del token lo mando a input de tipo hidden]
[Lo recibo  por $_POST y lo valido por el nombre del token creado anteriormente]

¿Como puedo aplicar esto a por ejemplo una pagina que reciba $_GET?
#358
Jajaja que hdpta jaja

olvidate si las cosas me van bien con este proyecto y tengo que llevar esto a un VPS te llamo y me decis cuanto cobras jaja  ;-)

#359
Buenos días,

estoy teniendo problemas con un código...

voy a resaltar que cada fragmento de código esta encerrado en $(document).ready (jQuery)
Código (javascript) [Seleccionar]

var select_country = document.getElementById('select_country');
var op_country = select_country.getElementsByTagName('option');
op_country[<?php echo($_POST['select_country']); ?>].selected = true;

Change_Select_Ubication('select_country'); // Función AJAX que llama a un fichero.php

// Después va a ejecutar estos otros códigos (pero para este punto todavía no terminó de completarse la función de arriba, la idea es que ejecute esto una vez que la función de arriba se complete del todo)
var select_province = document.getElementById('select_province');
var op_province = select_province.getElementsByTagName('option');
op_province[<?php echo($_POST['select_province']); ?>].selected = true;

Change_Select_Ubication('select_province'); // Después va a ejecutar la misma función pero con parametro diferente


Hasta ahora lo hago con un time out pero yo se que esto no es una buena manera de hacerlo.
Código (javascript) [Seleccionar]

           var select_country = document.getElementById('select_country');
           var op_country = select_country.getElementsByTagName('option');
           op_country[<?php echo($_POST['select_country']); ?>].selected = true;

           Change_Select_Ubication('select_country');

           setTimeout(function()
           {
               var select_province = document.getElementById('select_province');
               var op_province = select_province.getElementsByTagName('option');
               op_province[<?php echo($_POST['select_province']); ?>].selected = true;

               Change_Select_Ubication('select_province');
           }, 750);


Otra cosa que se me ocurrió era:

Código (javascript) [Seleccionar]

           var select_country = document.getElementById('select_country');
           var op_country = select_country.getElementsByTagName('option');
           op_country[<?php echo($_POST['select_country']); ?>].selected = true;

           var estado = Change_Select_Ubication('select_country');

           if(estado == true)
           {
                var select_province = document.getElementById('select_province');
                var op_province = select_province.getElementsByTagName('option');
                op_province[<?php echo($_POST['select_province']); ?>].selected = true;

                Change_Select_Ubication('select_province');
           }


la función es:

Código (javascript) [Seleccionar]

   function Change_Select_Ubication(select)
   {
       var select_country = document.getElementById('select_country').value;
       var select_province = document.getElementById('select_province').value;

       $.ajax({
           url: 'ajax/x.php',
           type: 'POST',
           dataType: 'html',
           data: {select, select_country, select_province},

           success: function()
           {
               $(document).ready(function()
               {
                   return true;
               });
           }
       })

       .done(function(results)
       {
           $('body').append(results);
       })
   }


Pero tampoco funciona ya que al momento de ejecutar la función lo que va a recibir esa variable va a ser "undefined" o en el caso de que ponga una variable más arriba con un valor = false y más abajo en la parte success la cambie por true y luego en la parte de abajo (abajo de todo) return variable; va a devolver false...

ya que al momento de asignarle el valor a esa variable no se completo la función lo que es igual a nada...

¿Alguna manera?
#360
Digamos que sería necesario por ahí en temas servidores, no tengo ninguna idea pero para cuando mi proyecto este en producción, cuando ya termine el desarrollo y lo lleve a un hosting ¿ahí sera necesario saber algo?