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 ... 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 [35] 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 ... 74
341  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!
342  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í...
343  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.  
344  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
345  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!  ;-) ;-) ;-) ;-)
346  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.  
347  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?
348  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"
349  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!
350  Programación / Desarrollo Web / [Pregunta]: ¿Como puedo hacer esta lógica "ver más"? ya casi lo tengo terminado en: 8 Diciembre 2019, 21:07 pm
Buenos días,

hace unos días había publicado un tema donde preguntaba sobre un sistema de ver más, la idea es que se va a obtener una cadena donde se va a hacer varias preguntas y en base a estas se ejecutara un resultado. Hice este algoritmo pero no se como puedo seguirlo, estoy en un bloqueo y no consigo entender.

Lo que espero que haga el "programa" es que a partir de una cadena sobre si esta es muy grande (mb_strlen($cadena) >= 250) esta se acorte mostrando las primeras 250 letras y al final concatenar "..." y un botón "Ver más" hasta acá no hay ningun problema es más el programa hasta acá funciona pero hay "huecos" que no puedo cubrir, la verdad si que estoy bloqueado.

Digamos que en la cadena hay saltos de lineas este ya es otro panorama diferente porque la cadena puede ser

"a
b
c
d
e
.. así hasta 249 letras
" si ustedes se fijan si yo aplico la solución que ya hice no va a hacer nada ya que es menor a 250 caracteres entonces lo va a mostrar completo pero va a ser muy alto, para que puedan entender se puede tomar como ejemplo alguna red social como facebook que al pasar x cantidad de caracteres una publicación esta se va a "minimizar" pero no se como puedo cubrir los saltos de líneas.

Hice este algoritmo pero no puedo entender,

Espero que se entienda porque la pagina desde donde hice el algoritmo es una verg# y le pusieron como 500 marcas de agua los crotos estos xD

cualquier cosa me dicen y lo hago desde otro lado



Muchas gracias, no hace falta que manden código ni nada de eso no quiero que me hagan el programa ustedes nada más que me puedan dar una mano con esta parte final en cuanto a lógica.
Páginas: 1 ... 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 [35] 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 ... 74
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines