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

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


  Mostrar Mensajes
Páginas: 1 ... 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 [28] 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 ... 67
271  Programación / Desarrollo Web / [Pregunta]: Websockets en: 12 Diciembre 2019, 04:37 am
Buenas noches,

Ando hace rataso ya intentando hacer mi aplicación web en tiempo real, la verdad estoy tratando de aprender sobre websockets que según lo que pude averiguar es la mejor forma posible pero cada vez que intento ver información me suelen decir que es necesario que sepa usar node js... La verdad ando estancado y no se por donde empezar, ustedes como aprendieron de websockets? Que material me recomdarían ver?
272  Programación / Desarrollo Web / Re: [Pregunta]: Que no puedan ver directorio ajax/x.php en: 11 Diciembre 2019, 21:46 pm
No se puede. Si es accesible para los scripts del navegador es tambien accesible para el usuario. Tendria que limitarlo a determinada session o en su defecto mandar tokens al scripts del navegador y que solo los tokens que aun no se utilizan puedan realizar peticiones validas.

Pero aun asi ese método no va a detener a cualquier curioso que quiera jugar con ese Formulario.

Saludos.

Ya pude!

el metodo de la solicitud ajax es post así que con que ponga al principio arriba de todo del fichero ajax...

if(isset($_POST['parametro_1']))
{
    // Ejecución
}
else
{
   // Interrupción
}

Gracias igual!
273  Programación / Desarrollo Web / [Pregunta]: Que no puedan ver directorio ajax/x.php en: 11 Diciembre 2019, 20:46 pm
Buenos días,

básicamente eso que el usuario no pueda acceder a localhost/aplication/ajax/x.php
ya que solamente quiero que se usen para peticiones AJAX y no para que de la nada quiera ver que hay ahí...
274  Programación / Desarrollo Web / Re: [Pregunta]: Meta http-equiv="refresh" en: 11 Diciembre 2019, 16:48 pm
Me es más sencillo hacerlo así, cuando detecte que javascript está desactivado redirija a otra pagina donde muestre el error. Tengo más de 30 ficheros html/php donde estoy usando esto, imaginate si hago si aplico eso, me es más facil así xD

ya lo pude hacer

Código
  1. <meta http-equiv="refresh" content="0; URL=no_script">
  2.  
275  Programación / Desarrollo Web / [Pregunta]: Meta http-equiv="refresh" en: 11 Diciembre 2019, 01:01 am
Buenas noches,

tengo en la cabecera de html

Código
  1. <head>
  2.     <noscript>
  3.           <meta http-equiv="refresh" content="0; URL=http://localhost/aplication/no_script">
  4.     </noscript>
  5. </head>
  6.  

Lo que va a hacer es que cuando detecte que javascript está desactivado en el cliente del usuario lo va a redireccionar a otra pagina donde le pedirá que active JS para poder usar la aplicación. El problema es que yo quiero que redireccione creo que se dice del path si esta mal corriganme sería... poner solamente "no_script" para la redirección y no toda esa ruta completa con http:// etc
276  Programación / Desarrollo Web / Re: [Pregunta]: ¿Como puedo hacer que si son 4 espacios seguidos...? en: 9 Diciembre 2019, 04:10 am
¡Funciona perfecto! Yo para las expresiones regulares soy medio duro de entender, muchas gracias, otra vez!  ;-) ;-) ;-) ;-)
277  Programación / Desarrollo Web / Re: [Pregunta]: ¿Como puedo hacer que si son 4 espacios seguidos...? en: 9 Diciembre 2019, 02:33 am
error mio, entendi espacios en blanco "\ {4,}" ahi dice "cuatro o mas espacios en blanco" era "\n{4,}" que es "4 o mas saltos de linea"

y el reemplazo tambien lo fallé cambiaba 4 o mas espacios por un salto de linea, tu quieres 4 o mas saltos de linea por solo 3

claramente como los trato como \n no hará efecto sobre los \r, así que te recomendaría eliminar los \r (con un reemplazo a vacio "") pero queda de tu parte y necesidad

Hice así pero no creo que tampoco me este funcionando bien,

Código
  1. <?php
  2. $string = '• Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod.'."\r\n\n\n\n\n\n\n\n\n\n\n\n\n\n".'• Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod.'."\r\n".'• Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod.';
  3.  
  4. echo nl2br($string);
  5. ?>
  6. <br><br><br><br>
  7. <?php
  8. $salida = str_replace("\n\n\n\n", "\n\n\n", $string); // además viendo no va a estar siguiendo un patrón de que si son más de 4, va a funcionar solamente si son 4
  9. echo nl2br($salida);
  10. ?>
  11.  
278  Programación / Desarrollo Web / Re: [Pregunta]: ¿Como puedo hacer que si son 4 espacios seguidos...? en: 9 Diciembre 2019, 01:34 am
No funciono creo que algo estoy poniendo mal porque los saltos de lineas se mantienen

"Texto







Texto" <= (7) saltos de lineas seguidos que están vacíos.

"Texto



Texto" <= Transforma en (3) saltos de lineas seguidos.


Código
  1. <?php
  2. $string = '• Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod.'."\r\n\n\n\n\n\n\n\n\n".'• Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod.'."\r\n".'• Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod.';
  3.  
  4. echo nl2br($string);
  5. ?>
  6. <br><br><br><br>
  7. <?php
  8. $salida = preg_replace('/\ {4,}/m', "\n", $string);
  9. echo nl2br($salida);
  10. ?>
  11.  

Los saltos de lineas se mantienen ¿qué estoy haciendo mal?
279  Programación / Desarrollo Web / [Pregunta]: ¿Como puedo hacer que si son 4 espacios seguidos...? en: 9 Diciembre 2019, 00:31 am
Buenas noches,

¿Como puedo hacer que si en una cadena hay 4 o más (>= 4) lineas en blanco "\n" seguidas estas se transformen en 3 con php

sería algo así:

"Hola,




Acá de nuevo, arriba hay 4 lineas en blanco"


"Hola de nuevo,








Acá de nuevo, arriba hay 8 lineas en blanco"

el programa debería transformarlo en esto =>
"Hola de nuevo,



Arriba hay ahora 3 lineas en blanco"
280  Programación / Desarrollo Web / [Aporte]: Sistema Anti ataques CSRF en: 8 Diciembre 2019, 23:49 pm
Sistema anti ataques CSRF

Con este pequeño sistema se espera que los ataques CSRF ya no nos afecten, este es el segundo aporte que hago. El primero era un contador de llaves donde se podía ingresar un código y el programa iba a devolver la cantidad de llaves abiertas y cerradas.

Con esto quiero decir que este es mi primer aporte "avanzado" para mi así que por eso muy posiblemente existan fallos o áreas donde el código pueda ser mejorado.

El sistema lo que hace es crear tokens de seguridad de clave única cifrada, yo lo uso para evitar ataques en las paginas donde existan formularios, donde se use $_GET como por ejemplo un perfil (profile.php?id_user=x) y también lo uso en ficheros AJAX (realmente no estoy seguro si es necesario pero quería que en todas las partes de mi aplicación web donde se ejecuten funciones importantes exista este control de seguridad)

Con este código espero que me lluevan criticas, sugerencias para que podamos mejorarlo entre todos.

En principio creo 6 funciones, creo que esta de más decir que uso PHP para esto pero quería aclararlo.

La primera función servirá para crear un código de 22 caracteres unos 20 números + 2 letras en mayúsculas.
Código
  1. function Create_Code()
  2. {
  3. $year_code = date('Y');
  4. $month_code = date('m');
  5. $day_code = date('d');
  6. $hour_code = date('H');
  7. $minute_code = date('i');
  8. $second_code = date('s');
  9.  
  10. $random_code_A = rand(100000, 999999);
  11. $random_code_B = chr(rand(ord('A'), ord('Z')));
  12. $random_code_C = chr(rand(ord('A'), ord('Z')));
  13.  
  14. $result = ($random_code_A).($year_code).($month_code).($day_code).($hour_code).($minute_code).($second_code).($random_code_B).($random_code_C);
  15.  
  16. return $result;
  17. }
  18.  

La segunda función servirá para crear un token determinado para cada pagina que exista en nuestra aplicación.
Código
  1. function Create_Token($page)
  2. {
  3. if(is_string($page))
  4. {
  5. if(!isset($_SESSION['token_'.($page)]))
  6. {
  7. $token_csrf = Create_Code(); // Creamos un codigo unico
  8. $token_csrf = Hash_Data($token_csrf); // ciframos el codigo lo que nos va a dar una cadena de 60 caracteres
  9. $_SESSION['token_'.($page)] = $token_csrf; // se crea una session con el token generado
  10. }
  11. }
  12. }
  13.  

La funciòn hash_data (me había olvidado de ponerla, gracias por el aviso!)
Código
  1. function Hash_Data($data) // El tipo de cifrado es general, con esto quiero decir que uso esta función para cifrar contraseñas, códigos de activación de un email, etcétera, ustedes pueden usar el que quieran pero en mi aplicación como norma general uso este.
  2. {
  3. $result = 'Error';
  4.  
  5. if(is_string($data))
  6. {
  7. $result = password_hash($data, PASSWORD_BCRYPT);
  8. }
  9.  
  10. return $result;
  11. }
  12.  

La tercera función servirá para crear una lista de tokens (acá van a tener que poner todas las paginas que van a usar tokens, donde usen formularios, peticiones $_get, o ajax)
Código
  1. function Create_Tokens()
  2. {
  3. // Ajax
  4. Create_Token('ajax'); // acá recomiendo que creen un solo token para validar ficheros ajax
  5.  
  6. // Pages ($_POST or $_GET)
  7. Create_Token('login'); // este token pertenece a login.php donde estará el formulario de acceso
  8. }
  9.  

La cuarta función servirá para validar un token determinado.
Código
  1. function Validate_Token($page, $value)
  2. {
  3. $result = false;
  4.  
  5. if(is_string($page) && is_string($value))
  6. {
  7. if(isset($_SESSION['token_'.($page)]))
  8. {
  9. if(!empty($_SESSION['token_'.($page)]) && $_SESSION['token_'.($page)] === $value)
  10. {
  11. $result = true;
  12. }
  13. }
  14. }
  15.  
  16.    return $result;
  17. }
  18.  

Ahora vamos a ponerlo en práctica, por supuesto todas las funciones de arriba deberían ponerlas en una libreria que ustedes pueden crear e incluirla en todas sus paginas php incluyendo "Create_Tokens();" pero para este ejemplo vamos a dejarlo acá.
Código
  1. <!-- login.php -->
  2. <?php
  3. Create_Tokens();
  4. ?>
  5.  
  6. <form method="post">
  7.     <input type="text" name="el_texto"></input>
  8.     <input type="hidden" name="token_csrf" value="<?php echo($_SESSION['token_login']); ?>"> // Acá va a ir su token, fijense que le puse "token_login" esto tiene que ir personalizado dependiendo en que paginas lo usen
  9.      <button type="submit" name="el_submit"></button>
  10. </form>
  11.  
  12. <?php
  13. if(isset($_POST['el_submit'])) // cuando se envia el formulario
  14. {
  15.     if(isset($_POST['token_csrf']) && Validate_Token('login', $_POST['token_csrf']))
  16.     {
  17.        echo "mandaste ".$_POST['el_texto'];
  18.     }
  19.     else
  20.     {
  21.          echo "Se detecto un ataque CSRF";
  22.     }
  23. }
  24. ?>
  25.  

Bueno ahora vamos a aplicar esto a una pagina que use $_GET como por ejemplo un perfil.
Código
  1. <!-- profile.php -->
  2. <?php
  3. if(isset($_GET['id_user']) && isset($_GET['token_csrf']))
  4. {
  5.    $_GET['token_csrf'] = urldecode($_GET['token_csrf']);
  6.  
  7.    if(Validate_Token('token_profile', $_GET['token_csrf']))
  8.    {
  9.        [Ejecución]
  10.    }
  11.    else  
  12.    {
  13.        [Interrumpimos, redirigimos, etcétera] // ya que no es valido el token
  14.    }
  15. }
  16. else
  17. {
  18.     [Interrumpimos, redirigimos, etcétera]
  19. }
  20. ?>
  21.  

Cuando vayamos a redirigir a el usuario a una pagina donde se use $_get debe de ser así...
Código
  1. window.location.href = 'profile.php?id_user=<?php echo urlencode($id); ?>&token_csrf=<?php echo urlencode($_SESSION['token_profile']); ?>';
  2.  

En ajax sería así:
Código
  1. // ajax/fichero.php
  2. if(Validate_Token('token_ajax', $_POST['token_csrf'])) // $_POST['token_csrf'] depende de si en ajax ustedes usan GET o en este caso POST
  3. {
  4.     [Ejecución]
  5. }
  6. else
  7. {
  8.     [Interrupción]
  9. }
  10.  


Espero que les guste y si lo quieren usar que me comenté si les gusto, escucho criticas como ya dije y entre todos poder ir mejorando este sistema. Gracias!
Páginas: 1 ... 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 [28] 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 ... 67
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines