ColdFusion 通过 Java 执行 OWASP esapi

ColdFusion doing OWASP esapi via Java

我有一些旧的 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 向 cfoutput 标签添加了一个 encodeFor 参数,用于输出类似的内容。还有 canonicalize() 函数会抛出一个您可以捕获的错误。这对于查看是否有人试图在您的表单或网站上进行恶意输入非常有用。我想不出对输入进行双重或多重编码的合法理由,我会解释为攻击。 encodeForX() 函数中的参数会将其归结为其基本评估,但它不会抛出错误,只是 returns 结果输出。就个人而言,我不确定是否有很多偶然的方式来传递一个值,而这个值会被规范化获取,我宁愿抓住这种尝试并将该用户踢出我的网站。

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