Лучший подход для удаления специальных символов с использованием ColdFusion и Microsoft SQL?
Я хочу удалить все специальные символы (",/{} и т.д.) из поля ввода, которое будет сохранено в виде строки в БД.
Каков наилучший подход?
Если эта проверка будет решена с помощью JS, ColdFusion или Microsoft SQL - возможно, все три?
Как я буду кодировать это с помощью ColdFusion или Microsoft SQL?
Ответы
Ответ 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>