Any time!

Keep in mind that anyone can call your method with Ajax so you still need to
verify the request (localhost or otherwise)

On Fri, Aug 13, 2010 at 1:17 PM, Andy Matthews <li...@commadelimited.com>wrote:

>
> Oooh. That's a good idea. Since we're using it for AJAX, then make it so
> that it can ONLY be used as AJAX, which would prevent other sites from
> using
> it because of the cross site scripting.
>
> Great idea Tony, thanks!
>
> -----Original Message-----
> From: Tony Bentley [mailto:cascadefreehee...@gmail.com]
> Sent: Friday, August 13, 2010 2:55 PM
> To: cf-talk
> Subject: Re: Preventing use of remote method by other sites
>
>
> I use a cfc that checks to see if the method being called is from within
> the
> domain, is indeed ajax and that the method is indeed is accessed remotely,
> otherwise abort the request. If you are doing cross site requests, pass a
> unique key in your form.
>
> Is it ajax?
>
>    <cffunction name="isAjax" access="private" returntype="boolean"
> output="false">
>        <!---
>        all of the user management requests are going to come via ajax
> within the domain.
>        if a request is not from this site and not ajax, abort the request
>        run this check on any of the remote methods
>        --->
>        <cfscript>
>            requestHeaders = getHTTPRequestData().headers;
>            if(not StructKeyExists(requestHeaders, "X-Requested-With")){
>                 return false;
>            }
>            else if(StructFind(requestHeaders,"X-Requested-With") neq
> "XMLHttpRequest"){
>                return false;
>            }
>            else{
>                return true;
>            }
>        </cfscript>
>    </cffunction>
>
>
> Called on init:
>
>        <cfparam name="url.method" default="">
>        <cfscript>
>            accessRemote = false;
>            cfcname = getmetadata(this);
>            for(i=1;i lte arrayLen(cfcname.FUNCTIONS);i++){
>                fname = cfcname.FUNCTIONS[i];
>                if(fname.name eq url.method && fname.access eq "remote"){
>                    accessRemote = true;
>                    break;
>                }
>            }
>            if(not isAjax() and not accessRemote){
>                abort();//this is a simple cfabort function for MX
>            }
>        </cfscript>
>
>
>
> On Fri, Aug 13, 2010 at 11:17 AM, Andy Matthews
> <li...@commadelimited.com>wrote:
>
> >
> > I have a method that I'm exposing remotely. We'll be using AJAX calls
> > to insert usability stats about a new application. I'm working through
> > the code when I realize that since it's remote access, anyone from any
> > site could post to it and skew our results.
> >
> > I'm wondering what's the best way to prevent access to this URL from
> > any other site, or code. My first thought was to compare the current
> > URL, dev1 for example, to the URL the request was made from, or
> > perhaps the IP address. But I'm not sure how to get that information.
> >
> > Anyone have ideas?
> >
> >
> >
> > andy matthews
> >
> >
>
>
>
> 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|
Order the Adobe Coldfusion Anthology now!
http://www.amazon.com/Adobe-Coldfusion-Anthology-Michael-Dinowitz/dp/1430272155/?tag=houseoffusion
Archive: 
http://www.houseoffusion.com/groups/cf-talk/message.cfm/messageid:336274
Subscription: http://www.houseoffusion.com/groups/cf-talk/subscribe.cfm
Unsubscribe: http://www.houseoffusion.com/groups/cf-talk/unsubscribe.cfm

Reply via email to