iNews System Project [Actual version: 1.2.1][Prox. versión 1.2.1 Patch]

Iniciado por Erik#, 13 Noviembre 2008, 10:11 AM

0 Miembros y 1 Visitante están viendo este tema.

Erik#

#60
Yo como programador php, mysql, html y algo de css.
Freeze como programador html y css (todo menos algunos arreglos que voy haciendo)
Dacan ayudante en codigos de conjuncion php y mysql.
Novlucker buscando errores en el proyecto.

Y ya.

EDIT: No pasa nada sarkys.

Dacan

Bueno porque no haces un archivo funciones.php y conviertes bbcode y smilies a funciones así no tienes que ir script por script poniendo esas funciones y en ese código no es necesario  filtrar los datos con smilies ni bbcodes porque lo que quieres ver es [/b][/b] no el texto en negrita lo que si tienes que hacer es filtrar los datos con htmlentities y ya lo tienes.

Saludos, Dacan  :D

eufrasio

#62
No se si viene a cuento, pero mirando este hilo he visto que las consultas sql las lanzais a pelo sin preformatear la consulta sql.

Una forma de enviar problemas con las consultas sql, es usar cadenas preformateadas para construir las consultas dinámicas.

Me explico: Cuando usamos una cadena preformateada tenemos que indicar el tipo de dato que se va a incluir en la cadena. Esto se hace con los formatos de tipo %s, %d, %f, etc... Esto quiere decir que si la cadena formateada espera un entero y recibe una cadena, este convertirá la cadena a un número entero (cero por defecto).

Ejemplo:

$sql = "SELECT * FROM {nodos} WHERE nid=%d";
$sql = sprintf($sql,'pepitoperez'); // la salida será "SELECT * FROM {nodos} WHERE nid=0";
mysql_query($sql);

De esta forma, preformateando las consultas e indicándoles los tipos de datos, podemos asegurarnos que la consulta sql va a usar los tipos de datos correctos y evitar en gran medida problemas de seguridad debidos a parámetros dinámicos que vienen por los métodos POST y GET que se usan para hacer consultas SQL.

Si encapsulamos la consulta en una función tipo:

function my_db_query() {
  $args = func_get_args();
  $values = array_slice($args,1);
  $sql = mysql_real_escape_string(vprintf($args[0],$values));
  return mysql_query($sql);

}

Podemos conseguir que todas las consultas sql que lancemos sobre nuestra base de datos sean mas seguras.

:)

Añado más cosas que se me han ocurrido después de leer vuestros mensajes:

Existe un pecl que se llama bbcode (bulletin board code http://es2.php.net/manual/es/book.bbcode.php) que permite hacer todo eso sin necesidad de mucho más. La instalación es bastante sencilla (pecl install <paquete>). En el caso que no se pueda instalar un pecl en el servidor existe la alternativa PEAR HTML_BBCodeParser.

La clave de estas piezas de código es que ya están probadas y nos evitan en gran medida tener demasiado código en nuestra aplicación ya que no tenemos que implementar la funcionalidad de parseo, ni el mapeo de tags para los bbcodes. Al tener menos código implementado por nosotros (la mayoría de las veces codificado con prisas y sin prestar atención al conjunto de la aplicación. Esto es una constante en las aplicaciones web que he visto y vivido durante algunos años) para tareas rutinarias mejoramos el mantenimiento de la aplicación y la seguridad.

Algún día dominaremos el mundo :)

Erik#


Erik#


Erik#

Atención: Version 0.7 PATCH Actualizado!!!
www.krews.es
www.krews.es/iNews_System/iNews_System_0.7PATCH.zip

Securitykill

Error en el admin.php:

Linea 24


     if($datos['usuario'] == $_POST['usuario'] && $datos['password'] == md5($_POST['contrasena'])){


La password esta almacenada en texto plano ( o al menos cuando yo lo instale en localhost fue asi, por lo tanto no me pude loguear sin quitar lo de md5 )


$query = mysql_query("SELECT * FROM `usuarios` WHERE usuario='$_POST[usuario]'"); ;


SQL Injection?

===================================
Insecure Cookie Handling:


if($_SESSION['usuario'] and $_SESSION['contrasena']){

/* Aqui muestras el panel de admin */

}


Definiendo las sessiones obtienes acceso.

Saludos

Erik#

Cita de: Securitykill en 28 Noviembre 2008, 01:35 AM
Error en el admin.php:

Linea 24


     if($datos['usuario'] == $_POST['usuario'] && $datos['password'] == md5($_POST['contraseña'])){


La password esta almacenada en texto plano ( o al menos cuando yo lo instale en localhost fue asi, por lo tanto no me pude loguear sin quitar lo de md5 )


$query = mysql_query("SELECT * FROM `usuarios` WHERE usuario='$_POST[usuario]'"); ;


SQL Injection?

===================================
Insecure Cookie Handling:


if($_SESSION['usuario'] and $_SESSION['contraseña']){

/* Aqui muestras el panel de admin */

}


Definiendo las sessiones obtienes acceso.

Saludos

En el admin no te preocupes ,estuve haciendo cambios, y lo ultimo no lo entiendo.

Erik#

Atención: La versión BETA de iNews System 0.8 ya esta para descargar.
www.krews.es/iNews_System/iNews_System_0.8BETA.zip

Erik#

Cita de: Securitykill en 28 Noviembre 2008, 01:35 AM
Error en el admin.php:

Linea 24


     if($datos['usuario'] == $_POST['usuario'] && $datos['password'] == md5($_POST['contraseña'])){


La password esta almacenada en texto plano ( o al menos cuando yo lo instale en localhost fue asi, por lo tanto no me pude loguear sin quitar lo de md5 )


$query = mysql_query("SELECT * FROM `usuarios` WHERE usuario='$_POST[usuario]'"); ;


SQL Injection?

===================================
Insecure Cookie Handling:


if($_SESSION['usuario'] and $_SESSION['contraseña']){

/* Aqui muestras el panel de admin */

}


Definiendo las sessiones obtienes acceso.

Saludos

El insecure cookie hadling solo sirve para cookies: javascript:document.cookie="usuario=Demo; path=/";