ColdFusion 9: int and type = "desagradable" error desagradable?

Acabo de experimentar un comportamiento que desafía cualquier lógica y podría conducir a problemas graves y me preguntaba sifue un error o si el comportamiento se corrigió y cuáles son las mejores prácticas para evitar el problema? Si es un error, ¿hay un parche?

Aquí están los dos comportamientos extraños que cuando se juntan son una amenaza para la integridad de los datos de cualquier sistema.

int('1 2') ->41276isValid('numeric', '1 2') ->true

¿Por qué? Bien, veamos...

<cffunction name="deleteSomething" access="public" returntype="void">
    <cfargument name="somethingId" type="numeric" required="yes">

    <cfquery datasource="#dsn()#">
        DELETE
        FROM Something
        WHERE id = <cfqueryparam cfsqltype="cf_sql_integer" value="#arguments.somethingId#">;   
    </cfquery>

</cffunction>


<cfset deleteSomething('1 2')>

Aquí eltype="numeric" validación de argumentos (que tal vez se basa en el mismo algoritmo queisValid?) no tira con'1 2'. Peor aún,cfqueryparam cfsqltype="cf_sql_integer" parece estar usandoint Para convertir el valor que acabará siendo.41276.

En otras palabras,deleteSomething('1 2') borrará la entidad con id41276 En lugar de lanzar una excepción ya que el valor1 2 Obviamente no es numérico.

Ahora, la única solución en la que pensé es realizar la validación de argumentos adicionales usandoisValid('integer', ... o una expresión regular, pero eso es un verdadero dolor y, además, nunca entendí por qué no se han implementadotype="integer"?

Obviamente, también siempre hice la falsa suposición de quecfqueryparam type="cf_sql_integer" validaría que el valor pasado es un entero válido.

EDITAR:

Parece que inclusoisvalid('integer', ... Tampoco es confiable como podemos ver en
¿Por qué isvalid ("integer", "1,5") = YES?

EDIT2:

Sé que podría agregar validación de argumentos adicionales para cada argumento de entero esperado en cada función, sin embargo, eso requeriría arreglar una base de código enorme en mi caso y también es muy propenso a errores. También hace que la validación de argumentos incorporada sea completamente inútil en este caso.

Preferiría una solución donde pudieracrear y aplicar un parche no oficial. ¿Es esa una opción realista? Si es así, me gustaría ser señalado en la dirección correcta.

EDIT3: no resuelve todos los problemas, pero CF11 agregó soporte para unstrictNumberValidation Configuración de nivel de aplicación.

"A partir de ColdFusion 11, esta función se evalúa de manera más estricta. Al establecer este valor en falso, la función isValid se comporta de la manera más antigua. Este ajuste afecta a las etiquetas cfargument, cfparam y cfform donde se utiliza la validación numérica y de enteros. esta configuración, la validación se refleja en esas etiquetas también ".

Respuestas a la pregunta(2)

Su respuesta a la pregunta