Ayuda en un código de php

Tema en 'Programación & Programación Web' iniciado por bichous, 13 Abr 2014.

  1. gto_81

    gto_81 Usuario Habitual nvl.3 ★
    37/41

    Registrado:
    17 Mar 2008
    Mensajes:
    47.839
    Me Gusta recibidos:
    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

    Registrado:
    2 Oct 2009
    Mensajes:
    16.665
    Me Gusta recibidos:
    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

    Registrado:
    31 May 2008
    Mensajes:
    2.792
    Me Gusta recibidos:
    14
    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

    Registrado:
    2 Oct 2009
    Mensajes:
    16.665
    Me Gusta recibidos:
    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

    Registrado:
    31 May 2008
    Mensajes:
    2.792
    Me Gusta recibidos:
    14
    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

    Registrado:
    2 Oct 2009
    Mensajes:
    16.665
    Me Gusta recibidos:
    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

    Registrado:
    31 May 2008
    Mensajes:
    2.792
    Me Gusta recibidos:
    14

    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

    Registrado:
    2 Oct 2009
    Mensajes:
    16.665
    Me Gusta recibidos:
    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

    Registrado:
    31 May 2008
    Mensajes:
    2.792
    Me Gusta recibidos:
    14
    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

    Registrado:
    2 Oct 2009
    Mensajes:
    16.665
    Me Gusta recibidos:
    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

    Registrado:
    31 May 2008
    Mensajes:
    2.792
    Me Gusta recibidos:
    14

    afasdfasdfasdfasdf ya tenemos desvirtuado el tema xD