ColdFusion 9: int и type = «numeric» противная ошибка?

Я только что испытал поведение, которое не поддается какой-либо логике и потенциально может привести к серьезным проблемам.это была ошибка, или если поведение было изменено, и каковы лучшие методы, чтобы обойти проблему? Если оно'Это ошибка, есть ли патч?

Вот's два странных поведения, которые вместе взятые представляют угрозу для любой системыЦелостность данных. ->

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

Зачем? Ну, давайте'смотри ...


    

    
        DELETE
        FROM Something
        WHERE id = ;   
    





Здесьtype="numeric" проверка аргументов (возможно, основанная на том же алгоритме, что иisValid?) нет бросить с'1 2', Еще хуже,cfqueryparam cfsqltype="cf_sql_integer" кажется используетint преобразовать значение, которое в конечном итоге будет.41276

Другими словами,deleteSomething('1 2') удалит сущность с идентификатором41276 вместо того, чтобы генерировать исключение, так как значение1 2 явно не числовой.

Теперь единственное исправление, о котором я подумал, - это проверка дополнительных аргументов с помощьюisValid('integer', ... или регулярное выражение, но этоэто настоящая боль, и, кроме того, я никогда не понимал, почему они нет реализован?type="integer"

Очевидно, я также всегда делал ложное предположение, чтоcfqueryparam type="cf_sql_integer" подтвердит, что переданное значение является допустимым целым числом.

РЕДАКТИРОВАТЬ:

Кажется, что дажеisvalid('integer', ... также не является надежным, как мы можем видеть в

Почему isvalid ("целое число «»1,5") = ДА?

EDIT2:

Я знаю, что мог бы добавить проверку дополнительных аргументов для каждого ожидаемого целочисленного аргумента в каждой функции, однако это потребовало бы исправления огромной базы кода в моем случае, и это 'Также очень подвержен ошибкам. Это также делает проверку встроенного аргумента совершенно бесполезной в этом случае.

Я бы предпочел решение, где я могсоздать и применить неофициальный патч, Это реалистичный вариант? Если это так, я хотел бы указать в правильном направлении.

EDIT3: это неt решает все проблемы, но CF11 добавил поддержкуstrictNumberValidation настройка уровня приложения. "

Начиная с ColdFusion 11, эта функция оценивается более строго. Установка этого значения в false заставляет функцию isValid вести себя по-старому. Этот параметр влияет на теги cfargument, cfparam и cfform, где бы ни находилось целое число & числовая проверка используется. На основании этого параметра проверка также отражается в этих тегах. "

Ответы на вопрос(2)

Ваш ответ на вопрос