Beefy Boxes and Bandwidth Generously Provided by pair Networks
Come for the quick hacks, stay for the epiphanies.
 
PerlMonks  

comment on

( [id://3333]=superdoc: print w/replies, xml ) Need Help??

I think if you're using Cloudflare for (D)DoS protection, handling anything non-Cloudflare in your web application will still enable an adversary to DoS your application by talking to it directly. Rejecting IP (or DNS) packets should be done at the lowest level possible, that is, preferrably upstream or in the kernel or in your web server. Not in the application.

The easiest way within the application is to check for specific headers that Cloudflare will set and other accesses will not set. Maybe you can also look at the Host: header - this should show http://www.quillmeantten.com and not a raw IP. Both of these checks are easily circumvented by configuring your browser/ access tool to send the headers.

You could add a special secret header or cookie to Cloudflare maybe and check for the presence of that.

Personally, I would consider that a task to be performed by the webserver and not by the application though. Whitelisting Cloudflare and your local network seems a prudent approach and allows you to change hosting/network boundary providers without any change to your code should Cloudflare not meet your criteria anymore.

Update: Cloudflare publishes its outbound IP addresses, so you could even dynamically generate your HTTP server configuration or make these checks in your web application.


In reply to Re: Catalyst and Cloudflare by Corion
in thread Catalyst and Cloudflare by QuillMeantTen

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post; it's "PerlMonks-approved HTML":



  • Are you posting in the right place? Check out Where do I post X? to know for sure.
  • Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
    <code> <a> <b> <big> <blockquote> <br /> <dd> <dl> <dt> <em> <font> <h1> <h2> <h3> <h4> <h5> <h6> <hr /> <i> <li> <nbsp> <ol> <p> <small> <strike> <strong> <sub> <sup> <table> <td> <th> <tr> <tt> <u> <ul>
  • Snippets of code should be wrapped in <code> tags not <pre> tags. In fact, <pre> tags should generally be avoided. If they must be used, extreme care should be taken to ensure that their contents do not have long lines (<70 chars), in order to prevent horizontal scrolling (and possible janitor intervention).
  • Want more info? How to link or How to display code and escape characters are good places to start.
Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others about the Monastery: (3)
As of 2024-04-26 00:09 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found