Dave Pawson wrote:
2009/2/6 Caldarale, Charles R <chuck.caldar...@unisys.com>:
From: Dave Pawson [mailto:dave.paw...@gmail.com]
Subject: Re: TC6 ${CATALINA_HOME}/conf/web.xml Is this the
place to constrain the mime type?

Unless the client specifies that one single mime
type (and no other), I want to reject it
Unless you have an extremely specialized client in mind, you will be rejecting 
all requests.  No browser will ever limit itself to a single mime type.


That's it. Again, my code, hence very specialised.
No browsers, IE or FF! Just my java end point.

I believe that what Chuck is trying to tell you - and in many more words than his - is this :

Your service, whatever it is, will have a listening TCP port, waiting for requests from your clients. Thus, any of many available programs out there (not talking only about browsers), can connect to that TCP port, and basically send anything they want to it. Including things resembling the requests you are expecting, with whatever HTTP headers they want to specify, including those which you would maybe use to attempt to distinguish your genuine clients from the others.

Thus, rejecting requests on the base of something they include or not, unless the something is some secret encrypted key available only to your server and its genuine clients, will not be a good enough measure if your goal is to avoid someone downloading something from your server that they shouldn't.

I (or anyone else on this list) can fake any such HTTP request, at any time, within 1 minute of you giving us the hostname and port, and download one of your xml templates.
And we would not even have to write any new program to do it.

If there is a secret key, and if it is fixed, then anyone once capturing a packet between your clients and your server, would be able to re-use that key and fake one of your clients forever. If the key is variable, but based on some simple algorithm, then 1) you would still have to develop the algorithm and 2) unless you are a cryptographic expert, someone will break it if there is enough interest to justify it, and even only for the fun of it.

If security is one of your purposes thus, do not try to use things like content-type headers or the like, use a secure form of communication developed by experts and available for free, such as HTTPS. You would just have to plug-in the pieces, and then develop your application as if the security layer wasn't even there.

And if security is not in the picture, then forgive me the above lecture, I got lost somewhere along about what your purpose really is.

But if you're still interested, I have a similar lecture about the difference between Valves and servlets (or servlet filters), and why one may be more adapted than the other to any particular purpose.
Not at any deep Tomcat/Java level though.



---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org

Reply via email to