Очищающая строка / ввод в Coldfusion 9 - PullRequest
4 голосов
/ 10 января 2011

В последнее время я работаю с Coldfusion 9 (в основном с PHP), и я ломаю голову, пытаясь понять, как «очистить / дезинфицировать» ввод / строку, отправленную пользователем.*

Я хочу сделать его HTMLSAFE, исключить любой javascript или SQL-запрос, как обычно.Я надеюсь, что упустил какую-то функцию, которая уже поставляется с CF9.

Может ли кто-нибудь указать мне правильное направление?

Ответы [ 4 ]

7 голосов
/ 10 января 2011

Ну, для SQL-инъекции вы хотите использовать CFQUERYPARAM .

Что касается санации ввода для XSS и т. П., Вы можете использовать атрибут ScriptProtect в CFAPPLICATION , хотя я слышал, что это не работает безупречно. Если хотите, вы можете посмотреть Portcullis или подобные сторонние CFC для лучшей защиты скриптов.

6 голосов
/ 10 января 2011

Это дополнение к предложениям Кайла, а не альтернативный ответ, но панель комментариев - немного мусор для ссылок.

Взгляните на строковые функции ColdFusion . У вас есть HTMLCodeFormat, HTMLEditFormat, JSStringFormat и URLEncodedFormat. Все это может помочь вам в работе с контентом, размещенным в форме.

Вы также можете попытаться использовать функции регулярных выражений для удаления тегов HTML, но это никогда не является точной наукой. Этот вопрос на основе регулярных выражений / html на основе ColdFusion должен немного помочь.

Вы также можете попытаться защитить себя от ботов и известных спамеров, используя что-то вроде cfformprotect , в которое интегрированы Project Honeypot и Akismet защита среди других инструментов в вашем формы.

1 голос
/ 10 января 2011

У вас есть несколько вариантов:

  1. Параметр администратора «Глобальная защита сценариев» , который применяет регулярное выражение к переменным post и get (т. Е. FORM и URL) для удаления <script/>, <img/> и некоторых других тегов
  2. Используйте isValid () для проверки типов данных переменных ( см. Подробный ответ на этот вопрос ).
  3. <<a href="http://help.adobe.com/en_US/ColdFusion/9.0/CFMLRef/WSc3ff6d0ea77859461172e0811cbec22c24-7f6f.html" rel="nofollow noreferrer"> cfqueryparam />, который служит для создания параметров связывания SQL и , проверяющих тип данных, передаваемый ему.

Тем не менее, если вы действительно пытаетесь дезинфицировать HTML, используйте Java, к которому ColdFusion может иметь естественный доступ. В частности, используйте OWASP AntiSamy Project , который принимает фрагмент HTML и белый список , какие значения могут быть частью этого. Это тот же подход, который используют такие сайты, как SO и slashdot.org, для защиты представлений. Это более безопасный подход для приема содержимого разметки.

0 голосов
/ 13 марта 2018

Санация струн в Coldfusion и на любом языке очень важна и зависит от того, что вы хотите сделать со строкой.большинство мер смягчения для

  • сохранения контента в базе данных (например, <cfqueryparam ...>)
  • с использованием контента для отображения на следующей странице (например, вставьте параметр url в ссылку или покажите параметр url втекст)
  • сохранение файлов и использование загружаемых файлов и содержимого

Всегда существует риск, если вы будете следовать идее предотвращения и сокращения строки, разрешив в основном все на первом этапе изатем очистить вредоносный код «прочь», удалив или заменив символы (подход черного списка).Лучшее решение - заменить строки регулярными выражениями rereplace(...), которые явно разрешают использовать только символы, необходимые для сценария, в котором вы используете его, в качестве простого решения, когда это возможно.варианты использования - это ввод чисел, списков, адресов электронной почты, URL-адресов, имен, почтовых индексов, городов и т. д.

Например, если вы хотите запросить адрес электронной почты, вы можете использовать

<cfif reFindNoCase("^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.(?:[A-Z]{5})$", stringtosanitize)>...ok, clean...<cfelse>...not ok...</cfif>

(или собственное регулярное выражение).Для HTML-Imput или CSS-Imput я бы также рекомендовал OWASP Java HTML Sanitizer Project .

...