Let's say Bob sent this HTTP request to an API to update his email:
/user/update?email=bob@example.com&userid=1234&sig=x1zz645
Now a sniffer named Zerocool recorded this request for later use.
After a few days later, Bob updated his email again to email=newbob@example.com
.
Few hours later Zerocool now decides to use what he sniffed a few days ago and runs the request:
/user/update?email=bob@example.com&userid=1234&sig=x1zz645
The server accepts it and Bob is now confused why is the old email back.
How can we prevent this from happening without using SSL?