Page 1 of 1
[SOLUCIONADO]:Como no permitir código malicioso?
#1
Posted 12 April 2010 - 08:11 AM
Hola, lo que sucede es que en una de mis aplicaciones un usuario pudo introducir en un campo de texto código javascript que fue almacenado en la BD y cuando se muestra el dato entonces el código es ejecutado, yo por ejemplo puedo evitar que se ejecute utilizando la función CHtml::encode() pero lo que quiero realmente es que no se pueda almacenar ese código javascript, alguien tiene una idea de como hacer esto?
Muchas gracias!
Muchas gracias!
#2
Posted 12 April 2010 - 08:17 AM
Como paso eso?
Si estas usando AR, esté ya toma las precauciones necesarias!
Como lo estas usando?
Si estas usando AR, esté ya toma las precauciones necesarias!
Como lo estas usando?
Don't say what you think, think what you say
The problem is communication! Excess of communication!
The problem is communication! Excess of communication!
#5
Posted 12 April 2010 - 09:51 AM
sebas, on 12 April 2010 - 08:24 AM, said:
Hola Sebas, gracias por la información, pero tengo una pregunta... lo que pasa es que con esta solución tengo que hacer cambios en todas las partes donde imprimo datos, pero hay forma de tener alguna solución parecida en el momento de guardar?, es decir, poder purificar el contenido de una variable pero antes de almacenarla en la BD... es posible?
#6
Posted 12 April 2010 - 10:21 AM
Se puede usar un filter validator y una funcion que filtra.
Para esto en rules se pone
array('campos', 'filter', 'filter'=>array($this,'purifyHtml')),
y crear una función en el modelo por ejemplo
public function purifyHtml($value) {
$purify = new CHtmlPurifier();
return $purify->purify($value);
}
Eso deberia andar para el guadar.
Para esto en rules se pone
array('campos', 'filter', 'filter'=>array($this,'purifyHtml')),
y crear una función en el modelo por ejemplo
public function purifyHtml($value) {
$purify = new CHtmlPurifier();
return $purify->purify($value);
}
Eso deberia andar para el guadar.
#7
Posted 12 April 2010 - 11:29 AM
ngleich, on 12 April 2010 - 10:21 AM, said:
Se puede usar un filter validator y una funcion que filtra.
Para esto en rules se pone
array('campos', 'filter', 'filter'=>array($this,'purifyHtml')),
y crear una función en el modelo por ejemplo
public function purifyHtml($value) {
$purify = new CHtmlPurifier();
return $purify->purify($value);
}
Eso deberia andar para el guadar.
Para esto en rules se pone
array('campos', 'filter', 'filter'=>array($this,'purifyHtml')),
y crear una función en el modelo por ejemplo
public function purifyHtml($value) {
$purify = new CHtmlPurifier();
return $purify->purify($value);
}
Eso deberia andar para el guadar.
Genial ngleich, muchas gracias.... funcionó!
Solo como por aprender más.... a alguien se le ocurre alguna otra idea para hacer este tipo de validaciones?
#8
Posted 14 April 2010 - 08:48 AM
juanmjimenezs, on 12 April 2010 - 11:29 AM, said:
Genial ngleich, muchas gracias.... funcionó!
Solo como por aprender más.... a alguien se le ocurre alguna otra idea para hacer este tipo de validaciones?
Solo como por aprender más.... a alguien se le ocurre alguna otra idea para hacer este tipo de validaciones?
Si, podés hacerlo utilizando un behavior dentro de tu modelo. En el behavior creas la función beforeSave y ahí lo modificás.
Saludos,
Share this topic:
Page 1 of 1

Help














