You don't want to execute code from URLs. (Yes, you can use cryptography to "sign" URLs you create. Don't try that at home unless you know the difference between MACs and hashes, and how to avoid timing attacks.)
And if you don't care you might as well not add authentication because without signing it's just a fancy CRC - ie, totally replicable by an attacker. As cookies and links are sent over TCP there should be vanishingly few errors in transmission - you're far more likely to introduce false positives with buggy code, and ...
You need to sanity check your inputs anyways. Just do it. This is also how you avoid bugs normally.
Yes if you want to trust it you have to sign it and make sure you implement all the crypto correctly. But I don't see a need for that here.
Also TCP's checksum sucks.
How many corrupted web pages do you see because of CRC failure in TCP?
In a scary way