Подтвердить что ты не робот

Лучший подход для удаления специальных символов с использованием ColdFusion и Microsoft SQL?

Я хочу удалить все специальные символы (",/{} и т.д.) из поля ввода, которое будет сохранено в виде строки в БД.

Каков наилучший подход?

Если эта проверка будет решена с помощью JS, ColdFusion или Microsoft SQL - возможно, все три?

Как я буду кодировать это с помощью ColdFusion или Microsoft SQL?

4b9b3361

Ответ 1

Вы имеете в виду все не алфавитно-цифровые?

Я бы, вероятно, использовал REReplace в слое данных.

<cfqueryparam 
  cfsqltype="cf_sql_varchar" 
  value="#REReplace(myVar,"[^0-9A-Za-z ]","","all")#" 
/>

Обновить: изменено, чтобы включить "пробел".

Ответ 2

Используйте регулярное выражение в Coldfusion

<cfset cleanInput = rereplace(form.input,"[^A-Za-z0-9]","","all") />

Это говорит о замене любого символа, который не является от A до Z или от a до z или от 0 до 9 ни с чем, и делает это для всех, кто столкнулся.

Ответ 3

Вы уверены, что хотите занести в черный список только те персонажи? Обычно гораздо более безопасный подход заключается в белом списке только приемлемых символов.

Если вы хотите, чтобы ваши данные были чистыми, самое безопасное место для этого - источник, используя триггер INSERT/UPDATE.

Вы можете написать UDF, который делает это в T-SQL или для лучшей производительности, реализовать его как функцию CLR с помощью С# или аналогичного.

Выполнение этого только в SQL может вызвать проблемы с проверкой. Например, если пользователь вводил недопустимые символы только в обязательном поле, они по существу не дали вам никакого ввода, поэтому вашему графическому интерфейсу, вероятно, придется выбросить ошибку проверки. Поэтому лучше всего проверять проверку на удобство использования в вашем интерфейсе и запускать целостность данных на задней панели.

Ответ 4

Я использовал это как проверку, чтобы получить ложную информацию, если символы не были в белом списке.

<cfif len(testString) EQ len(rereplaceNocase(testString,"[^A-Za-z0-9-+$. _[]","","all"))>
     TRUE<br>
<cfelse>
     FALSE<br>
</cfif>