Yes you are right. I just wasn't sure if you were building an API or
something that would require public access.

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

>
> But crossdomain policies would prevent it from being accessed via AJAX
> right?
>
>
>
> andy
>
> -----Original Message-----
> From: Tony Bentley [mailto:cascadefreehee...@gmail.com]
> Sent: Friday, August 13, 2010 3:33 PM
> To: cf-talk
> Subject: Re: Preventing use of remote method by other sites
>
>
> 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:336279
Subscription: http://www.houseoffusion.com/groups/cf-talk/subscribe.cfm
Unsubscribe: http://www.houseoffusion.com/groups/cf-talk/unsubscribe.cfm

Reply via email to