I believe other people have mentioned it before in various rev="canonical" articles, but I'll revisit the matter. In most cases URLs are generated automatically, it would be a trivial matter to simply crc32 the URL and make a hex value (8 chars long) representing it. When generating the link this is what would be used rather then this-is-my-really-verbose-title-for-something-or-rather. You could apply the same logic around any built-in local links via a regular expression.
As far as the rev="canonical" itself, I think it would be much better implemented via an HTTP header such as "X-Rev-Canonical" you've suggested as it would mean it could be obtained via a simple HEAD request without the need to having to parse the HTML code to extract it.
I think allowing HTML is very dangerous and any "safe-HTML" is a step back, there will be ways to inject HTML/JavaScript through it. If not due to parser, but via a user of a browser supported syntax that does not meet the spec.
I think it is a matter on interpretation, I just asked a bunch of people and most "parsed" # as anchor. A few did seem to get a bit confused, however almost no one (one person did) recognized "fragment" which is what the addressing RFC calls it.
Given that the author tries to make things understandable as possible it only makes sense they'd use a more familiar name. IMHO.
Actually it is possible to fake POST requests without the use of Ajax it is just far more complex and requires greater degree of social engineering. It is limited to IE only (<=IE 6, haven't tried with IE7), but given that it still commands vast majority of user-base it is good enough.
I think when it comes to bug reporting, be it security or otherwise, you (as a developer) need to be careful not to put too many bariers to entry. Most people already fail to report bugs, by making it tough on the small percentage that does, especially tricky ones involving security, you risk alienating the few who do.
In my personal opion it is often better to have a red faced developer (or Company) rather then an unplugged security hole that is being actively abused by so called "blackhats". In my experience people often find every execuse to NOT fix security holes, until they get burnt badly, once or twice. After that they get on with the program so to speak, and if this process takes an occasional full disclosure, so be it.
In many cases people publish unfixed exploits because the vendor refuses to fix it or deploy a solution in a timely manner. So, the person who discovered the exploit publish in an attempt to accelerate fix deployment and warn users of the possible issue so that they can put intermediate workarounds.
Not to downplay the vulnerability, but it is important to note that to make the exploit possible a multibyte character set needs to be used in MySQL. This is not the default configuration setting nor a common situation for most MySQL servers. So, while this exploit clearly demonstrates the need for the use of proper escaping function or better yet prepared statements, it is not something that would affect vast majority of LAMP systems.
Actually the problem is not limited to Internet Explorer, Mozilla Firefox 1.5 exibits the exact same behaviour.
If you enable automatic character set detection either browser will trigger the XSS without the call to the header() function. The difference is that in Firefox to trigger the header-less problem the auto-detection needs to be configured to detect utf-7. If it is not, then the exploit does not happen.
Latest Comments
1
2
3
4
5
6
7
8
9
10