I have an AdWords script that regularly transfers sensitive data to my server using a POST HTTP request. For security I have a predefined 32 character randomized string that is verified by my server before it accepts the data. Is this secure?
I don’t know too much about the HTTP protocol, but I know that the data is being sent unencrypted. Is it probable/possible for somebody to access the data during the request? From what I’ve understood, the HTTPS protocol is most useful when on an untrusted network where it’s easy for anybody to spy on your packets. In my case, data is being sent from Google’s servers to my host’s servers (DreamHost in this case). Would it be prudent of me to upgrade to HTTPS, or would this be pointless? Are there any other security pitfalls I should be aware of?
I will accept the first answer that clears up my situation.
1
Your packets including the secure key can be sniffed. If not encrypted by HTTPS or some other protocol your wide open to the wild wild Internet
It would indeed be prudent to upgrade to HTTPS. Once upon a time, SSL certificates needed for HTTPS were expensive, but these days I’ve seen them for ridiculously low prices like $6 per year.
Whether it is actually probable/possible for somebody to access the data during the request – look, realistically, it probably isn’t. You’re not making this communication over the free wi-fi in a coffee shop. But I honestly don’t think it is worth trying to save a few dollars a year by not using HTTPS.
Surely there is (or could be in the future) some other functionality on your web application that could benefit from HTTPS?
3
No because somebody could easily inspect your JavaScript, capture the randomized key, and spoof the input.
That is, unless your input is encrypted or hashed; and of the two, hashing is definitely the better option.
Also – Another question – Is your randomized key randomized on a per-user or per-session basis? If it’s neither, and you’re using a global key, then I’d say that you’re very vulnerable to spoofing.
EDIT: In light of the fact that this code is running on Google App Engine, you aren’t as vulnerable to spoofing (unless a Google engineer could potentially inspect your code). So generally speaking, as others have already stated, eliminate man-in-the-middle attacks with HTTPS.
4