【问题标题】:ColdFusion doing OWASP esapi via JavaColdFusion 通过 Java 做 OWASP esapi
【发布时间】:2023-06-22 11:31:01
【问题描述】:

我有一些旧的 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);

这些功能一样吗?

【问题讨论】:

  • 是的,encodeForX() 函数在后台使用 OWASP 的 ESAPI。 encodeForHTML() 是 CF10+ 并且有一个 canonicalize 参数,它将输入降低到其最低因子。 CF2016 将encodeFor 参数添加到cfoutput 标记用于输出。还有canonicalize() 函数会抛出一个你可以捕捉到的错误。这对于查看是否有人试图在您的表单上进行恶意输入很有用。对输入进行双重或多重编码没有正当理由。 encodeForX() 函数中的参数不会抛出错误,只是返回结果输出。
  • 你应该把它写下来作为答案。

标签: coldfusion owasp esapi coldfusion-2016


【解决方案1】:

是的,encodeForX() 函数在后台使用 OWASP 的 ESAPI。 encodeForHTML() 是 CF10+ 并且有一个 canonicalize 参数,它将输入降低到其最低因子。 CF2016 向 cfoutput 标签添加了 encodeFor 参数,用于输出类似的内容。还有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

【讨论】: