Le recomiendo encarecidamente que se mantenga alejado de CodeIgniter. Te daré una razón y esta es la única razón que necesitarás: CodeIgniter no tiene idea de cómo hacer la seguridad correctamente . O simplemente no es una prioridad para ellos. Estos son algunos de los dolores de cabeza con los que tengo que lidiar:
- La mayoría de las funciones de utilidad HTML no escapan a sus argumentos . Por ejemplo, lo siguiente es un posible agujero XSS:
Si el usuario puede suministrar
">...<a href="
como la cadena$bar
. Es completamente ridículo, en mi opinión, no escapar de una discusión que va a terminar dentro de un atributo, ya que no hay forma de que pueda poner marcas dentro de él de todos modos. Otro buen ejemplo esform_dropdown
, que no escapa a las opciones. ¿Por qué demonios usaría sus funciones de utilidad si me obligan a seguir escribiendohtml_escape
todas partes? - La función
set_value
olvida escapar del parámetro si accidentalmente lo llama dos veces para el mismo parámetro en una página determinada. Además, si está utilizando la clase Validación de formulario y la validación falla, “se olvida de no escapar” del valor del parámetro, lo que significa que pensará que el valor del parámetro era en realidad<
lugar de<
(por ejemplo). - Las secuencias porcentuales correspondientes a caracteres invisibles se eliminan durante el procesamiento de entrada. Esto significa, por ejemplo, que si alguien ingresa la cadena
foo%10bar
como contraseña en un formulario al registrarse, su contraseña se recibirá comofoobar
. Por supuesto, el usuario no tiene forma de saber que esto ha sucedido … (Archivé un error contra CI por esto, y no parecían entender lo que estaba diciendo o lo obvio que es que esto debe solucionarse). - El motor de plantillas (sí, en realidad hay uno) no es compatible con cadenas de escape. (Entonces, ¿por qué demonios se molestaron en escribir uno?)