ColdFusion делает OWASP esapi через Java - PullRequest
0 голосов
/ 08 ноября 2018

У меня есть старый код ColdFusion. Первоначально он был написан для CF9, но теперь работает на CF 2016.

Application.cfc

  local.esapi = createObject("java", "org.owasp.esapi.ESAPI");
  application.esapiEncoder = local.esapi.encoder()

намного позже

Обычная страница

  form.Reason = application.esapiEncoder.encodeForHtml(form.Reason);

Я подумываю заменить это на

  form.Reason = encodeForHTML(form.Reason);

Эти функции одинаковы?

1 Ответ

0 голосов
/ 08 ноября 2018

Да, функции encodeForX() используют ESAPI OWASP за кулисами. encodeForHTML() - это CF10 + и имеет аргумент canonicalize, который понижает ввод до самого низкого коэффициента. CF2016 добавил аргумент encodeFor к тегу cfoutput для вывода, который выполняет аналогичные действия. Также есть функция canonicalize(), которая выдаст ошибку, которую вы можете поймать. Это полезно для того, чтобы узнать, не пытается ли кто-нибудь добавить к вашей форме или сайту гнусные материалы. Я не могу придумать разумную причину для двойного или многократного кодирования ввода, и я бы интерпретировал, например, атаку. Аргумент в функции encodeForX() возвращает его к базовой оценке, но не выдает ошибку, а просто возвращает полученный результат. Лично я не уверен, что есть много случайного способа передать значение, которое будет получено при канонизации, и я просто предпочел бы поймать эту попытку и выгнать этого пользователя с моего сайта.

https://helpx.adobe.com/coldfusion/cfml-reference/coldfusion-functions/functions-e-g/encodeforhtml.html

https://helpx.adobe.com/coldfusion/cfml-reference/coldfusion-functions/functions-c-d/Canonicalize.html

https://www.owasp.org/index.php/Category:Encoding

...