转义数据URI的最佳实践是什么?

时间:2016-11-08 作者:Tim Malone

通常,您会使用esc_url() 在显示URL之前对其进行转义。如果该“URL”是数据URI(例如。\'data:image/svg+xml;base64,...\'), 它将被修剪为空白esc_url().

关于数据验证的Codex页面has this to say 关于转义URL:

清理url(在文本节点、属性节点或其他任何位置)时,始终使用esc\\u url。拒绝没有提供的白名单协议之一的URL(默认为http、https、ftp、ftps、mailto、news、irc、gopher、nntp、feed和telnet),消除无效字符,并删除危险字符。替换3.0中不推荐使用的clean\\u url()。

此函数不包含数据URI,并且似乎不包含在任何其他标准WP转义函数中。

WordPress中是否有转义数据URI的既定最佳实践?

2 个回复
最合适的回答,由SO网友:JHoffmann 整理而成

可以将具有允许协议的阵列传递给esc_url() 作用对于数据URL,必须包含data 方案,因为该方案未被列入白名单wp_allowed_protocols() 默认情况下。

esc_url( $data_url, array( \'data\' ) );

SO网友:Tom J Nowell

数据URI 不是很好的url, 但是它is 属性。使用esc_attr 在属性中转义,以及esc_html 在别处关键是转义表明了您的期望。如果需要url,请使用esc_url, 如果是属性,请使用esc_attr, 如果是没有html的文本,请使用esc_html, etc等

esc_url 将执行相同的操作,但需要一些附加规则,例如在开始时强制执行协议等