As mentioned in the comments, the CloudPagesURL function by default passes along a bunch of parameters:
This function provides a convenient method of linking to landing pages
(created in CloudPages) from email messages.
When an email is sent that includes a link to a landing page with this
function, a URL link is generated to the landing page and is appended
with an encrypted query string.
This encrypted query string provides a reference to the email, which
means that system personalization strings can be used on a landing
page to retrieve values related to the sent email. And as the string
is encrypted, no Subscriber information is passed in clear text.
Now if you want to redirect someone to a CloudPage from an external source, and you have a script on the CloudPage that uses any of the system personalization strings, for example, the subscriber key - you need to make sure you pass them as parameters in the URL.
For example, if you were setting a subscriber key variable in your script:
SET @subscriberkey = _subscriberkey
You will now need to pass it in the URL:
And in your script, retrieve it using the QueryParameter function:
SET @subscriberkey = QueryParameter('subscriberkey')
If possible, avoid passing sensitive data in cleartext. Take a look at the encryption/decryption AMPscript functions to see if you would be able to use any of them to obfuscate personal data: