为什么 getSafeHTML() 会抛出错误?

Why is getSafeHTML() throwing an error?

我似乎收到内容太长的错误,但我从未指定限制为 5000。反正 5000 太低了

Error validating html input.
Invalid HTML input. Error=The input was too large. The specified input was 6,989 bytes and the maximum is 5,000 bytes.

The error occurred in /Applications/ColdFusion11/cfusion/wwwroot/BS-4-CF/bootstrap/row.cfm: line 39

...

Called from /Applications/ColdFusion11/cfusion/wwwroot/BS-4-CF/views/theme.cfm: line 32
Called from /Applications/ColdFusion11/cfusion/wwwroot/BS-4-CF/index.cfm: line 27

 37 :                               variables.result &= '>';
 38 :                               
 39 :                               variables.result &= getSafeHTML(thisTag.GeneratedContent); // pass through of content
 40 :                               
 41 :                               variables.result &= variables.crlf & '</div><!-- /.row -->';

org.owasp.validator.html.ScanException: The input was too large. The specified input was 6,989 bytes and the maximum is 5,000 bytes. at org.owasp.validator.html.scan.AntiSamyDOMScanner.scan(AntiSamyDOMScanner.java:101) at org.owasp.validator.html.AntiSamy.scan(AntiSamy.java:107) at coldfusion.security.ESAPIUtils.getSafeHTML(ESAPIUtils.java:670) at coldfusion.runtime.CFPage.GetSafeHTML(CFPage.java:10785) at cfrow2ecfm1904818855.runPage(/Applications/ColdFusion11/cfusion/wwwroot/BS-4-CF/bootstrap/row.cfm:39)

Antisamy 设置存储在 cfusion/lib/antisamy-basic.xml 中,很明显其中设置了 5000 个字符的阈值:

<directive name="maxInputSize" value="5000"/>

更改该值会影响 getSafeHtml() 的运作方式。

我怎么知道的?我没有。但是当我读到你的问题时,我镇定地 去看看 。我花了大约 30 秒找到它,又花了 10 秒来更改我的测试以证明更改该值按预期工作。我不禁认为您本可以在这里更好地投入时间:自己解决问题,而不是在 Stack Overflow 上发帖。

仍然:你现在有了答案。

第二部分是为什么门槛这么低?主观上,我会说这是因为 Adob​​e ColdFusion 团队不是很能干,而且他们没有想到现在 HTML 的 5000 个字符不是很多。他们不会知道这一点,因为他们不是 Web 开发人员,因此对他们提供的软件的日常使用不是特别熟悉。这反复出现,以牺牲他们的用户群为代价。

我为此提出了一个错误:https://bugbase.adobe.com/index.cfm?event=bug&id=4064602。好好利用你的时间可能是去投票吧。