ColdFusion 通过 Java 执行 OWASP esapi

Jam*_*ler 3 coldfusion owasp esapi coldfusion-2016

我有一些旧的 ColdFusion 代码。它最初是为 CF9 编写的,但现在在 CF 2016 上运行。

应用程序.cfc

  local.esapi = createObject("java", "org.owasp.esapi.ESAPI");
  application.esapiEncoder = local.esapi.encoder()
Run Code Online (Sandbox Code Playgroud)

很久以后

常规页面

  form.Reason = application.esapiEncoder.encodeForHtml(form.Reason);
Run Code Online (Sandbox Code Playgroud)

我正在考虑用

  form.Reason = encodeForHTML(form.Reason);
Run Code Online (Sandbox Code Playgroud)

这些功能一样吗?

Sha*_*awn 5

是的,这些encodeForX()函数在幕后使用了 OWASP 的 ESAPI。encodeForHTML()是 CF10+ 并有一个canonicalize参数,它将输入降低到其最低因子。CF2016 向标签添加了一个encodeFor参数,cfoutput用于输出类似的功能。还有一个canonicalize()函数会抛出一个你可以捕捉到的错误。这对于查看是否有人试图在您的表单或站点中抛出恶意输入很有用。我想不出对输入进行双重或多重编码的合法理由,我会将其解释为攻击。中的论点encodeForX()函数会将其归结为基本评估,但它不会引发错误,而只会返回结果输出。就我个人而言,我不确定是否有很多偶然的方式来传递一个将通过规范化获取的值,我宁愿抓住该尝试并将该用户踢出我的网站。

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

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

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