Does disabling this feature, open our site other malicious attacks? Are there alternative methods that the developer of this extension could employ to avoid using a URL as a URL parameter?
Philosophically speaking, yes, it does.
This feature blocks any URL GET parameter which looks like a URL. The idea behind it is that there are some kinds of attacks which hinge on the local inclusion, or parsing, of a remote resource passed to the script as a URL.
For example, there are some (badly designed) scripts which will include whatever random JavaScript, or SVG file you give them as a URL parameter into the generated HTML. This allows the attacker to host the actual hacking code on their server and trick you into running it with a URL on your site, making phishing trivial.
As another example, it's possible that a script needs to parse an image and there's a known but unfixed bug in PHP, usually because the site is using an end-of-life PHP version and the bug is in a third party library which has not (yet) received a fix in the Long Term Support Linux distribution the server is running. Therefore, an attacker could host a malicious, suitably crafted image on their own server and access a specially crafted URL on your site to run arbitrary code on your site's server.
You might wonder, but why are we not explicitly allowing URLs on your own site? The thing is, Joomla (and WordPress, and Drupal, and really any kind of CMS, e-commerce solution, etc) is not a sealed system. It allows user uploads. It is possible for someone to upload something malicious which, by itself, doesn't look malicious (or cannot be correctly assessed without a VERY expensive, very well trained security professional tearing it to bits) but can become malicious using a variation of the vulnerabilities I described above. Therefore, just because something is hosted on your server doesn't make it automatically safe and for this reason we can't allow it by default. Putting an option to allow that kind of behaviour is equivalent in most cases to turning off the entire feature altogether, hence the lack of such an option either.
So, there you have it.
The correct (as in: secure) way to handle use cases like yours —displaying a PDF from a known-good location— is to pass an identifier to a CMS extension (Joomla component, Joomla module, WordPress plugin, etc). The CMS extension will look it up in the database and correlate it with a known-good resource. It will then construct the HTML with the URL to the safe resource and serve it to the browser. Of course, this requires the developer to not be lazy, understand what they are doing, and above everything else write their code defensively. Unfortunately, 90% of the Joomla extensions and 99.9% of the WordPress plugins I have seen are a far cry from being anywhere near the same universe as defensive coding.
Nicholas K. Dionysopoulos
Lead Developer and Director
🇬🇷Greek: native 🇬🇧English: excellent 🇫🇷French: basic • 🕐 My time zone is Europe / Athens
Please keep in mind my timezone and cultural differences when reading my replies. Thank you!