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 ... 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 [46] 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
451  Programación / Desarrollo Web / [Resuelto] ¿Como puedo obtener una URL con PHP desde un archivo AJAX? en: 19 Agosto 2019, 00:39
Buenas noches a todos!

Estaba haciendo un sistema nuevo pero me estanque en un tema, digamos tengo un botón en mi pagina.php que al tocarlo realiza una función (JS) -> que va a llamar a un fichero_ajax.php (ajax)

Correcto... Cuando quiero obtener la URL de la pagina.php  con PHP de la siguiente manera:

En fichero_ajax.php
Código
  1. $url = $_SERVER["PHP_SELF"];
  2.  

Me va a devolver "/pagina/ajax/fichero_ajax.php"
pero yo necesito que me devuelva "/pagina/pagina.php"

Es decir la "URL" de la pagina desde donde se llamo la función JS -> que conecta con el archivo ajax

Muchas gracias!
452  Programación / Desarrollo Web / Re: [Pregunta]: ¿Como hago para que los usuarios no puedan usar funciones? en: 18 Agosto 2019, 17:25
¡Muchas gracias! voy a hacer eso.
453  Programación / Desarrollo Web / [Resuelto] ¿Como hago para que los usuarios no puedan usar funciones? en: 18 Agosto 2019, 01:22
Buenas noches.

¿Existe alguna manera de que los usuarios no puedan usar funciones JS en la consola del navegador o que no puedan editar parametros si es que las funciones tienen?
454  Programación / Desarrollo Web / Re: [Pregunta]: ¿Como podría ejecutar solamente un <script> en un archivo ajax? en: 17 Agosto 2019, 23:01
La diferencia es que regresarías el string sin los <script>s:

Código
  1. alert('<?php echo($_POST['resultado_suma']); ?>');

Y en tu código:

Código
  1.     .done(function(results)
  2.     {
  3.  eval(results);
  4.     })
  5.  

Pero para efectos de seguridad viene siendo lo mismo. Por ejemplo, en tu caso estás haciendo una suma de 2 variables y una persona pudiera pensar que es seguro porque si tu sumas otra cosa que son números resulta en NaN (Not A Number) , por lo que una persona pudiera pensar que el dato que se va enviar en tu función Suma está restringida a números solamente.

Pero en javascript, el operador + se utiliza para concatenar strings también... y aquí empiezan los problemas sobre valor_a y valor_b. Si una persona tiene control sobre valor_a y valor_b pueden cambiar los valores, por ejemplo si se corre lo siguiente:

Código
  1. valor_a = "", valor_b ="'); $('body').html('XSS";
  2. Suma(valor_a, valor_b);

Te sale un alert y luego puedes ejecutar cualquier cosa en javascript. Bueno, este es solo un ejemplo, modificar valor_a y valor_b también tiene su gracia. Puedes modificar la funciona de Suma para que solo trabaje con números:

Código
  1. var resultado_suma = Number(valor_a) + Number(valor_b);

¿Pero porque? Tu servidor puede simplemente regresar el número:

Código
  1. echo($_POST['resultado_suma']);

Y tu javascript solo tiene que hacer esto:

Código
  1. .done(function(results)
  2. {
  3.  alert(results);
  4. });

Y si quieres estar seguro que vaya a ser un numero usas Number para asegurarte que te regrese un número siempre.

Si quieres trabajar con diferentes tipos de datos, como strings, numeros, objetos, arreglos, etc tienes JSON.

Si vas a manejar código, lo vas a tener que sobre un DSL que este diseñado para ser seguro. No es MUY díficil con las herramientas que existen hoy para trabajar con lenguajes pero tiene su costo en rendimiento obviamente.

Edit: y si como dice #!drvy también puedes poner

Código
  1. .done(alert);

Que no hay necesidad de la función anónima extra.

Muchas gracias voy a ver que onda con eso!
455  Programación / Desarrollo Web / Re: [Pregunta]: ¿Como podría ejecutar solamente un <script> en un archivo ajax? en: 17 Agosto 2019, 22:25
Hola, asi es, se pone en blanco porque le estás diciendo a jquery que todo el contenido body tendrá tu texto en html, en ves de eso debes utilizar .append().

Adicionalmente te recomiendo que no continues programando de esa manera, en ves de obtener código html y pegarlo en el sitio web puedes solamente obtener código javascript y ejecutarlo con eval(), de esa manera no tendrás necesidad de estar pegando código html.

Saludos.

Muchas gracias a los tres por responderme!

Es decir para ir mostrando registros de 5 en 5. de ante mano muestre 5 y luego al tocar un botón de ver más muestre otros 5, estoy usando esa manera de agregar código html como sería hacerlo con eval() ?
Representa alguna vulnerabilidad hacerlo así?

Gracias por tu respuesta me sirvio mucho!!

"No hay ninguna razón para enviar código en javascript o evaluarlo así. Si necesitas obtener información te montas una API que regrese los datos en JSON. No tienes porque enviar información por <script>s."

   - Hola! me podrías decir como es eso? parece interesante

"Además en este caso, si solo quieres mostrar el alert, no bastaría con poner el alert en el done.


Saludos"

   - Hola! Si te referís a como hice este pequeño sistema, generalmente siempre que tengo un problema y creo un tema lo hago usando la base del problema. El sistema en realidad es mucho mas complejo y robusto que los sistemas que comento. El alert no importa realmente son solo bases que uso para explicar el problema.

Gracias a los 3!
456  Programación / Desarrollo Web / [Pregunta]: ¿Como podría ejecutar solamente un <script> en un archivo ajax? en: 17 Agosto 2019, 20:32
Buenos días...
Estaría teniendo el siguiente problema y es que tengo una función ajax donde lo que hace es sumar dos valores, valor A y valor B. En base a estos dos resultados se los suma y muestra el resultado en forma de "alert();" a través de un <script> en un fichero .php

Es decir, digamos:
Código
  1. var valor_a = 3;
  2. var valor_b = 4;
  3.  
  4. Sumar(valor_a, valor_b);
  5.  

La función Sumar:
Código
  1. function Sumar(value_a, value_b)
  2. {
  3.     var resultado_suma = valor_a + valor_b;
  4.     $.ajax({
  5.          url: 'archivo_ajax.php',
  6.  type: 'POST',
  7.  dataType: 'html',
  8.  data: {resultado_suma},
  9.     })
  10.  
  11.     .done(function(results)
  12.     {
  13.  $('body').html(results);
  14.     })
  15. }
  16.  

Fichero ajax.php:
Código
  1. ?>
  2. <script type="text/javascript>
  3. alert('<?php echo($_POST['resultado_suma']); ?>');
  4. </script>
  5. <?php
  6.  

Como pueden ver lo único que hago es ejecutar un <script> siempre como norma general para ejecutar códigos utilizando AJAX los hago similar a esto, donde tengo que agregar código html pero ahora que solamente quiero ejecutar un script y nada más nose como hacerlo por que al poner en la función ajax .html(results); el body se pone todo blanco desaparece mi pagina queda todo en blanco.

Espero poderme haber dado a entender, Muchas gracias!
457  Programación / Desarrollo Web / Re: [Pregunta]: ¿Alguna idea de como podría realizar esto? en: 11 Agosto 2019, 20:39
hola!

La petición la hago en > el ficheroajax.php

al inicio del fichero pregunto la cantidad total.

Pagina cargada -> realiza una consulta preguntando $cantidad_total
Ajax.js -> Hago una operación cantidad_disponible = cantidad_total - cantidad_vista;
Si la cantidad disponible > 0 se va a permitir usar dicha función .js

Es este el control:
Código
  1. function More(cantidad_total, cantidad_vista)
  2. {
  3.   var cantidad_disponible = cantidad_total - cantidad_vista;
  4.  
  5.   if(cantidad_disponible > 0)
  6.   {
  7. document.body.style.cursor = "progress";
  8.   }
  9.  
  10.   $.ajax({
  11.        url: 'ajax/ficheroajax.php',
  12. type: 'POST',
  13. dataType: 'html',
  14. data: {cantidad_vista},
  15.  
  16. success: function() {
  17.       document.body.style.cursor = "default";
  18. }
  19.    })
  20.  
  21.    .done(function(resultados)
  22.    {
  23.   if(cantidad_disponible > 0)
  24.     {
  25. $('.mostrador).html(resultados);
  26.   }
  27.    })
  28. }
  29.  

ficheroajax.php -> vuelve a realizar una consulta preguntando $cantidad_total, y hace lo que dije antes elimina el evento click y crea uno nuevo con la cantidad total actualizada que pregunte en este mismo fichero (ficheroajax.php)

Entonces siempre va a estar trabajando con datos actualizados realmente.
458  Programación / Desarrollo Web / Re: [Pregunta]: ¿Alguna idea de como podría realizar esto? en: 11 Agosto 2019, 18:43
Gracias a los dos por responder!

No me di a entender bien, disculpen. Básicamente es ir cargando datos, yo de entrada muestro 5 datos y al hacer click en x botón mostrará más datos y así sucesivamente hasta completar todos los registros disponibles. Es interesante el sistema que dijiste de ir mostrando un anuncio por cada tanda de datos que se muestra pero no era lo que quería. Me explique muy mal seguramente..

Imaginemos que para el momento en que la pagina ya fue cargada yo ya tengo 5 registros mostrados... okay... y en total hay 25 registros pero sólo mostrara 5 registros de entrada... ahora como hay más de 5 registros ($cantidad_total >= 6) mostrará el botón para cargar más.. voy a aplicar lo de cambiar >= por > gracias por tu consejo!

Pero ahora imaginemos que antes de haber presionado el botón de cargar más, se borraron algunos registros nose.. 7 registros se borraron... como ya se pueden estar imaginando para cuando yo use la función que esta en ajax.. usará la cantidad total de anuncios que fue cargada anteriormente es decir usará $cantidad_total = 25 un dato que es falso ya que se habían borrado 7 registros por lo que el dato real es $cantidad_total = 18

Ya creo haber encontrado la solución a esto y quería compartirla con ustedes, para saber que les parece y por si a alguien alguna vez le hace falta.

En el ficheroajax.php se debe poner el <script> renovado
Código
  1. $(".boton").click(function()
  2. {
  3. var dato = 1;
  4. alert(dato);
  5. });
  6.  
  7. $('.boton').unbind('click');
  8. $(".boton").click(function()
  9. {
  10. var dato = 2;
  11. alert(dato);
  12. });
  13.  

Les voy a explicar el código el primer fragmento mostrado vendría a ser el script que ya esta en la pagina cargada (no se debería poner en el ficheroajax.php
Después donde dice $('.boton').unbind('click'); sirve para eliminar un script o un evento mejor dicho entonces eliminamos ese evento y lo creamos nuevamente pero con datos actualizados... basicamente eliminas el evento desde ficheroajax.php y volves a preguntar u obtener datos actualizados copiando y pegando el script donde se llama a more_results ...

Si tu evento es un "scroll" se puede eliminar así

Código
  1. $(document).unbind('scroll'); // document puede cambiarse si el scroll se realiza en un div, en ese caso pondrías el id o la clase del div que tiene el scroll pero si el scroll se realiza en el body se deja así..
  2.  

Estos códigos ya los probé y funcionan correctamente.
Si me quieren dar su opinión estoy abierto a criticas, y si alguien necesitó de este código pero todavía no termino de entender me puede preguntar y voy a tratar de explicarlo mejor.
459  Programación / Desarrollo Web / [Pregunta]: ¿Alguna idea de como podría realizar esto? en: 11 Agosto 2019, 03:14
Buenas noches, tengo un problema y es que no puedo entender como podría solucionar el siguiente problema.

Para ponerlos en contexto primero quisiera explicar el sistema, vendría siendo un procedimiento por el cual al cargar la pagina se muestran 5 registros y dependiendo si existen mas de 5 registros se habilitará un botón el cual cuando se presione ejecutará una función JS (Ajax) que llamará a un archivo .php

El sistema funciona perfecto o mejor dicho casi perfecto, ya que lo único que me falta para que quede totalmente terminado es lo siguiente:

En el archivo .php pre-cargado
Código
  1. if($cantidad_total >= 6) // Cantidad total se refiere a la cantidad total de registros encontrados
  2. {
  3.      ?>
  4.      <script type="text/javascript">
  5.      // habilita o crea la función que al dar click en X botón mostrará más registros
  6.      $(".boton_mas_resultados").click(function()
  7.      {
  8.     var cantidad_vista = document.querySelectorAll('.box_resultado_busqueda').length;
  9.  
  10.     More_Results_Registros(cantidad_vista, <?php echo($cantidad_total); ?>);
  11. });
  12.      </script>
  13.      <?php
  14. }
  15.  

Ahora en el archivo ajax.js donde está la función more results
Código
  1. function More_Results_Registros(cantidad_vista, cantidad_total)
  2. {
  3.     var cant_actual = cantidad_total- cantidad_vista;
  4.  
  5.     if(cantidad_actual >= 1) // Si quedan registros disponibles para mostrar al menos 1
  6.     {
  7.            document.body.style.cursor = "progress";
  8.     }
  9.  
  10.     $.ajax({
  11.           url: 'ajax/elficheroajax.php',
  12.   type: 'POST',
  13.   dataType: 'html',
  14.   data: {cantidad_vista, cantidad_total},
  15.  
  16.   success: function() {
  17. document.body.style.cursor = "default";
  18.   }
  19.       })
  20.  
  21.       .done(function(anuncios)
  22.       {
  23.       if(cantidad_actual >= 1)
  24.       {
  25. $('.mostrador').html(anuncios);
  26.       }
  27. })
  28. }
  29.  

Básicamente lo que hace este código es que si no hay ningún registro disponible para mostrar en una próxima tanda no va a ejecutar ni a llamar ningún fichero ya que es algo totalmente innecesario.

El problema radica que necesito que esa cantidad_total va a ser actualizada por lo que no puedo usar siempre el mismo <script> que llama a la función more que es cuando se da click a dicho botón.

Mi idea era agregar un nuevo fragmento de código <script> en el fichero ajax que llamamos desde ajax.js
re-actualizando o recreando el script, nosé bien si este seria un metodo optimo para hacerlo.

Gracias
460  Programación / Desarrollo Web / [Pregunta]: Editar un dato de javascript/Jquery en: 10 Agosto 2019, 04:20
Buenas noches

Quería saber si existe alguna manera de editar un dato usado en un fragmento de código js y jquery.
La idea es la siguiente, al momento de cargar la pagina tengo esto

Código
  1. $(".boton").click(function()
  2. {
  3.      var dato = 1;
  4.      alert(dato);
  5. });
  6.  

Quisiera saber como podría hacer que con otro código JS pueda editar ese dato por otro número.

Muchas gracias.
Páginas: 1 ... 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 [46] 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines