in reply to Re^2: Client IP question
in thread Client IP question

It's impossible to prevent your javascript from being copied to some other site and being used from there. In fact, it's also trivial to spoof everything so as to make your service think that the actual customer is making the request.

If this is a problem, find a way to restructure your service such that the APIs are private - not for being called by your customers' customers. For an example, look at Google's OAuth flow. Perhaps this will work, perhaps not - you haven't told us much about what exactly it is you're trying to accomplish.

-Thomas
"Excuse me for butting in, but I'm interrupt-driven..."

Replies are listed 'Best First'.
Re^4: Client IP question
by kepler (Scribe) on Dec 23, 2015 at 11:33 UTC
    Hi, I'm sorry for the late reply... Indeed you are right. The php variable doesn't work, and the javascript can be copied - but not altered. My doubt is if the javascript hostname variable can be tampered. Still, I'm thinking in the following: before my app script is called from my client's website, a file must be written in their website with the current date and id which is also stored in my website. When the main app script is called, I catch the referer and get from my client website the file. The values must check. The hacker can't - I think - write or modify this file in my client space - he also can't fake it because I'm getting my real customer pass text file... What do you guys think...? Regards, Kepler

      The "hacker" you're concerned about doesn't need to modify your files, your customers' files, or even their browser's variables. They need only set the Referer header, which is trivial to do.
      In order for the file you're talking about to be written, the customer's customer (or the "hacker") must interact somehow with your customer's website before using your API. The file will be written, and to your server, it will look like the request was valid.

      I hate to be a killjoy, but it's impossible to completely restrict the web. The only way to prevent your API from being called by someone you didn't intend for is to let only your customers directly access it, and to not do things in the browser.

      This is not a Perl problem. It's the same for any web application environment.

      -Thomas
      "Excuse me for butting in, but I'm interrupt-driven..."