KSES: Accept port number in PDF upload paths.
Improves the URL validation in `_wp_kses_allow_pdf_objects()` to account for sites using an upload path that contains a port, for example wp.org:8080. Follow up to [51963], [52304]. Props ocean90, ramonopoly, talldanwp. See #54261. Built from https://develop.svn.wordpress.org/trunk@52309 git-svn-id: http://core.svn.wordpress.org/trunk@51901 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
parent
ddfe23a9aa
commit
37180741b4
|
@ -2591,21 +2591,23 @@ function _wp_add_global_attributes( $value ) {
|
||||||
* @param string $url The URL to check.
|
* @param string $url The URL to check.
|
||||||
* @return bool True if the URL is safe, false otherwise.
|
* @return bool True if the URL is safe, false otherwise.
|
||||||
*/
|
*/
|
||||||
function _wp_kses_allow_pdf_objects( $value ) {
|
function _wp_kses_allow_pdf_objects( $url ) {
|
||||||
// We're not interested in URLs that contain query strings or fragments.
|
// We're not interested in URLs that contain query strings or fragments.
|
||||||
if ( strpos( $value, '?' ) !== false || strpos( $value, '#' ) !== false ) {
|
if ( strpos( $url, '?' ) !== false || strpos( $url, '#' ) !== false ) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// If it doesn't have a PDF extension, it's not safe.
|
// If it doesn't have a PDF extension, it's not safe.
|
||||||
if ( 0 !== substr_compare( $value, '.pdf', -4, 4, true ) ) {
|
if ( 0 !== substr_compare( $url, '.pdf', -4, 4, true ) ) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// If the URL host matches the current site's media URL, it's safe.
|
// If the URL host matches the current site's media URL, it's safe.
|
||||||
$upload_info = wp_upload_dir( null, false );
|
$upload_info = wp_upload_dir( null, false );
|
||||||
$upload_host = wp_parse_url( $upload_info['url'], PHP_URL_HOST );
|
$parsed_url = wp_parse_url( $upload_info['url'] );
|
||||||
if ( 0 === strpos( $value, "http://$upload_host/" ) || 0 === strpos( $value, "https://$upload_host/" ) ) {
|
$upload_host = isset( $parsed_url['host'] ) ? $parsed_url['host'] : '';
|
||||||
|
$upload_port = isset( $parsed_url['port'] ) ? ':' . $parsed_url['port'] : '';
|
||||||
|
if ( 0 === strpos( $url, "http://$upload_host$upload_port/" ) || 0 === strpos( $url, "https://$upload_host$upload_port/" ) ) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
*
|
*
|
||||||
* @global string $wp_version
|
* @global string $wp_version
|
||||||
*/
|
*/
|
||||||
$wp_version = '5.9-beta1-52308';
|
$wp_version = '5.9-beta1-52309';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.
|
* Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.
|
||||||
|
|
Loading…
Reference in New Issue