Ayuda en un código de php

Discussion in 'Programación & Programación Web' started by bichous, Apr 13, 2014.

  1. gto_81

    gto_81 Usuario Habitual nvl.3 ★
    37/41

    Joined:
    Mar 17, 2008
    Messages:
    47,807
    Likes Received:
    34
    Muy de acuerdo, pero como bien dice cavoso, es una ayuda... el resto lo puede obtener buscando en foros y hasta en la misma página oficial de PHP. El que busca siempre encuentra...
     
  2. El Fin

    El Fin Usuario Habitual nvl.3 ★
    187/244

    Joined:
    Oct 2, 2009
    Messages:
    16,562
    Likes Received:
    16
    Efectivamente la observación de xalupeao es correcta respecto del código posteado por cavoso. Sin embargo, generalmente no es buena idea incorporar medidas de seguridad dentro del ejemplo porque lo hacen más difícil de entender. Resulta mejor colocar una cláusula diciendo algo así como "código no seguro y no solo de ejemplo".

    Hay varias formas de sanitizar el POST y el GET, no viene al caso discutir eso en este tema.

    Saludos.
     
  3. cavoso

    cavoso Usuario Casual nvl. 2
    37/41

    Joined:
    May 31, 2008
    Messages:
    2,727
    Likes Received:
    13
    la forma mas facil de agregarle seguridad seria colocar un pequeño if ya que al parecer la pagina es numerada y encuentro que el ejemplo de xalupeao da muchas vulta aunque igual es corto, pero yo lo aria mas corto aun como por ejemplo asi:

    <FRAME SRC="http://servidor/numeros/<? if(is_numeric($_GET["page"])){echo $_GET["page"];}else{echo 'error';}?>.php" >

    la funcion is_numeric() entrega true o false dependiendo de si la variable es numerica o no, no recuerdo bien si tambien acepta decimales o no, es mas corto, aunque obviamente existen otras formas de hacerlo y agregar mucha mas seguridad
     
  4. El Fin

    El Fin Usuario Habitual nvl.3 ★
    187/244

    Joined:
    Oct 2, 2009
    Messages:
    16,562
    Likes Received:
    16
    En lo que a mi respecta, en todo lo relacionado a la seguridad yo no escatimo en pasos y prefiero irme por el camino largo.

    Primero tengo una clase que hace de "puente" entre el código y todas las entradas proveídas por el usuario. Entonces al pedir el dato (ejemplo :$miclase->obtener("POST","nombre");) esta clase realiza las siguientes funciones:

    1.- Limitar el largo (o de lo contrario te meten un nombre de 80.000 caracteres = buffer overflow), si es un nombre entonces puedo esperar un máximo de no más de 50 caracteres y todas las operaciones posteriores se realizarán a partir de esos caracteres, jamás sobre el nombre original.

    2.- A partir de la cadena generada, filtrar con regex basándose en un whitelist. Si estoy esperando un nombre entonces esperaré letras de la a a la z, minúsculas y mayusculas, nada más.

    3.- Nunca iterar el POST o el GET, el atacante puede crear un formulario que te meta 10.000 variables = te cuelga el sistema.

    4.- En lo posible, generar tokens, es más avanzado pero ayuda a que solo se puedan usar ciertos formularios. A veces simplemente no funciona porque recuerdo que hace tiempo hice un programa que posteaba en el P.D.O.del portal de forma automatizada para ganar posts (bot) y que de paso renovaba el token de login cuando este vencía. Nada del otro mundo por acá.

    5.- Otras prácticas (usar nombres de variable no tan obvios, solo llamar las variables que se van a necesitar, etc).

    Saludos.
     
  5. cavoso

    cavoso Usuario Casual nvl. 2
    37/41

    Joined:
    May 31, 2008
    Messages:
    2,727
    Likes Received:
    13
    por ese mismo motivo yo uso codeigniter, viene con muchos parametros de seguridad, de echo no puedes llamar un post si este no existe cosa que si puedes hacer en php normal xD, ademas de que te permite trabajar con comit en las consultas sql xD
     
  6. El Fin

    El Fin Usuario Habitual nvl.3 ★
    187/244

    Joined:
    Oct 2, 2009
    Messages:
    16,562
    Likes Received:
    16
    Por un lado eso es bueno, por el otro, nunca me ha gustado usar frameworks para la seguridad porque como cualquier habitante del planeta tierra puede ver el código entonces los hax0rs ya tienen decubiertos los exploits hace rato. En cambio cuando tu haces el código entonces el atacante tiene que figurarse un montón de cosas primero: Que engine de regex usas, si usas sqlite, mysql, block de notas, etc. Si el resultado está cacheado o no, etc. etc. etc. etc.) Ahí la mayoría se aburre.

    Saludos.
     
  7. cavoso

    cavoso Usuario Casual nvl. 2
    37/41

    Joined:
    May 31, 2008
    Messages:
    2,727
    Likes Received:
    13

    asdasdasdasd, codeigniter es un framework muy distinto a los otros, ya que tu tienes que configurar todos los aspectos ademas de que las url tienen un filtro que puedes personalizar, es decir puedes decirle que formato de url aceptas o no, e incluso enmascarar una url o desactivarle el formato predefinido para que tome el formato normal de url xD, por lo que tienes muchas opciones de seguridad mejorables por tu cuenta, ademas de que es un framework que es codigo abierto por lo cual puedes meterle mano directamente al sistema y editarle opciones, por ejemplo yo edite la opcion para subir archivos porque estaba usando una funcion que en mi servidor no funcionaba xD
     
  8. El Fin

    El Fin Usuario Habitual nvl.3 ★
    187/244

    Joined:
    Oct 2, 2009
    Messages:
    16,562
    Likes Received:
    16
    Eso se puede hacer con php o con ajax. php sería para algo estático, o sea que el visitante tendría que enviar el formulario y el server le responde.

    Ajax hace lo mismo pero "no se nota", Javascript detectaría el cambio en el formulario, mandaría la información a un script php y con los datos obtenidos modifica el frame mediante el DOM.

    Saludos.
     
  9. cavoso

    cavoso Usuario Casual nvl. 2
    37/41

    Joined:
    May 31, 2008
    Messages:
    2,727
    Likes Received:
    13
    asdasd a lo que me refiero es que codeigniter es un framework que corre en php, por lo que lo puedes modificar a tu gusto trbajando en formato MVC
     
  10. El Fin

    El Fin Usuario Habitual nvl.3 ★
    187/244

    Joined:
    Oct 2, 2009
    Messages:
    16,562
    Likes Received:
    16
    Oh perdona, no me habia fijado que este post era viejo y mi última respuesta iba hacia el primer post:p.

    Saludines!
     
  11. cavoso

    cavoso Usuario Casual nvl. 2
    37/41

    Joined:
    May 31, 2008
    Messages:
    2,727
    Likes Received:
    13

    afasdfasdfasdfasdf ya tenemos desvirtuado el tema xD