#coldfusion #coldfusion-9 #coldfusion-10
#coldfusion #coldfusion-9 #coldfusion-10
Вопрос:
В моих CFC, которые обрабатывают отправленные формы, я выполняю проверку в начале функции, объявляя, какие аргументы требуются и какого типа они должны быть. Как таковой:
<cfarugment name="forename" type="string" required="true"/>
В настоящее время я также проверяю значение при вставке в базу данных. Как таковой:
INSERT INTO Person (Forename)
VALUES
(
<cfif structKeyExists(ARGUMENTS, 'Forename') AND Len(Trim(ARGUMENTS.Forename)) GT 0>
<cfqueryparam value="#ARGUMENTS.Forename#" cfsqltype="cf_sql_nvarchar">
<cfelse>
NULL
</cfif>
);
Есть ли необходимость проверять, существует ли значение аргумента и его длина, когда уже было объявлено, что это требуемое значение?
Комментарии:
1. Требуется не требует принудительной длины. Вы можете передать пустое значение.
Ответ №1:
Вам также необходимо
- запустите данные через фильтр защиты от Samy, который удалит любые недопустимые объекты HTML и защитит от межсайтовых скриптовых атак
- убедитесь, что запрос формы поступает с вашего сервера, используя токен подделки межсайтового запроса
и это просто не укладывается у меня в голове.
Комментарии:
1. Кроме того, я не думаю, что оценка входных данных относится к той же функции start, которая выполняет запись в базу данных. Разделите эту партию на два отдельных процесса.
2. @AdamCameron как еще я мог бы вставить нулевое значение в базу данных?
3. cfqueryparam имеет атрибут null .
4. @volumeone Я имел в виду все другие меры, упомянутые в этом ответе: у вас есть куча дополнительных проверок, которые вы должны выполнять сверх проверки длины. После проверки и готовности к хранению данных вызовите метод для их сохранения. В рамках этого все равно можно проверить значение на существование или проверить длину, чтобы определить, нужно ли его включать в ваш оператор SQL.