Inloggen
Aan de slag

Easy Digital Downloads Documentatie

Documentatie, Referentiemateriaal en Tutorials voor Easy Digital Downloads 

Ongeldige downloadlinks door wijziging van de volgorde van query-strings

Easy Digital Downloads heeft een robuust systeem om uw bestanddownloadlinks veilig te houden en misbruik te voorkomen. Wanneer op een bestanddownloadlink wordt geklikt, is de volgorde van de verstrekte parameters belangrijk. Van tijd tot tijd kunnen bepaalde hostingconfiguraties, cachinglagen of CDN-providers de query string-parameters opnieuw rangschikken om een ​​basisniveau van caching mogelijk te maken. Het opnieuw rangschikken van deze items zal ervoor zorgen dat Easy Digital Downloads de tokenvalidatie voor de downloadlink van een klant mislukt.

Hoe kan ik zien of dit mijn probleem is?

Als een gebruiker bij het klikken om hun bestanden te downloaden de foutmelding "U hebt geen toestemming om dit bestand te downloaden" krijgt, controleer dan of de URL nog steeds het volgende formaat heeft, waarbij u goed let op de volgorde van de parameters. 

https://example.org/index.php?eddfile=...&ttl=...&file=...&token=...

Als de query string-parameters niet in de bovenstaande volgorde staan, dan ondervindt u het hierboven beschreven probleem. We hebben een paar oplossingen om te voorkomen dat dit gebeurt.

Als u een paginacaching systeem hebt ingesteld, zoals Cloudflare of Varnish, kunt u deze fout nog steeds zien, zelfs als uw parameters in de juiste volgorde lijken te staan. Dit komt doordat het paginacaching systeem die parameters sorteert voordat uw verzoek naar de webserver wordt gestuurd om door PHP te worden verwerkt.

Hoe kan ik dit probleem voorkomen?

Wijzigingen in de hostingconfiguratie

De ideale situatie is om uw providers de query string-parameters niet opnieuw te laten rangschikken wanneer het verzoek een bestanddownload betreft, door te voorkomen dat verzoeken die de eddfile query string-parameter bevatten, door de herordelingsregels worden gevoerd.

Als u Cloudflare gebruikt en hun Query String Sort-functie hebt ingeschakeld, kunt u deze functie uitschakelen om gebruikers hun bestanden zonder fouten te laten downloaden.

Aangepaste codefragment

We erkennen dat dit met sommige providers niet altijd mogelijk is, dus we hebben een kleine functie geschreven die elke mislukte validatie een 2e keer uitvoert om te verifiëren dat we de items in de juiste volgorde hebben ontvangen.

function ck_custom_validate_url_token( $ret, $url, $query_args ) {
	// If basic validation failed, let's make sure the URL prarms were in the right order and try again
	if ( false === $ret ) {
		$parts   = parse_url( $url );
		wp_parse_str( $parts['query'], $query_args );

		$fix_arg_order = array(
			'eddfile' => $query_args['eddfile'],
			'ttl'     => $query_args['ttl'],
			'file'    => $query_args['file'],
			'token'   => $query_args['token'],
		);

		$fixed_url   = add_query_arg( $fix_arg_order, site_url() );
		$fixed_token = edd_get_download_token( $fixed_url );

		$ret         = $query_args['token'] === $fixed_token;
	}

	return $ret;
}
add_filter( 'edd_validate_url_token', 'ck_custom_validate_url_token', 10, 3 );

De bovenstaande functie moet worden getest in een stagingomgeving voordat deze in een productieomgeving wordt gebruikt, om te verifiëren dat deze correct werkt in uw specifieke configuratie.

Was dit artikel nuttig?

Begin vandaag nog met verkopen!

Sluit u aan bij meer dan 50.000 slimme winkel eigenaren, en begin met de eenvoudigste manier om digitale producten te verkopen met WordPress.

Copyright © 2025 Sandhills Development, LLC

[universally_switcher]