Laurens Holst wrote:
I don’t really see how POST is less harmful than DELETE. POST (if used in a REST-y way) can be used to wreak serious havoc (e.g. spam messages, overload server data capacity, post viruses, adding new super user accounts for the hacker, change settings such as passwords, influence poll results).

Additionally, there are a great number of sites that are using the HTTP POST method for operations that would be more suitable for PUT and DELETE. The reason that this happens is probably HTML’s fault, because it only supports GET and POST, crippling the functionality that HTTP provides. Non-REST webservices protocols such as XML-RPC and SOAP also exclusively use POST.

If XDR only supports GET and POST, it encourages sites to use POST to implement delete functionality and abuse the HTTP protocol because that is the only way they can get the functionality they desire to work. Basically, you’re boycotting REST in favour of SOAP.

So, I do not see much benefit in the decision to disallow DELETE but allowing POST.

As a matter of fact, it would be harmful.

I don’t think you’re really keeping users very safe that way. To quote an example, PHP is by default configured to send session credentials entirely through sessionID link parameters when cookies are not available, and thus don’t need cookies or authentication headers. And on many sites (e.g. phpBB-based forums), communication with the server (including deletion) happens exclusively through GET and POST requests. XDR’s restrictions on methods and credentials will not do these sites any good. Rather, they encourage even more sites to work around the restrictions.

Additionally, if you really want to keep sites safe in this manner, you should disallow cross-site POST requests for both XDR and HTML forms. Otherwise, there is already a breach in the safety, POST is equally suitable for ‘public’ data as DELETE and PUT are. You should allow those methods, so that developers can at least provide a proper REST API and are not forced to overload POST like XML-RPC and SOAP and friends do.

Absolutely.

Then create a whitelist, with at least the Accept-* headers on it. They are clearly defined, and it is doubtful that they are used in a different manner than described. The use cases are clear and plenty.

Correct.

I don’t think it is up to Microsoft to decide that content negotiation is useless and that part of HTTP should not be supported even though it poses no security risk. Part of the reason that content type negotiation is reasonably uncommon in the wild is partially because of mediocre support by user agents. By the way, content language and content encoding negotiation is pretty common, actually.

Content type negotiation is very useful and I think a very nice feature of HTTP, offering different ‘views’ (e.g. RSS or RDF, SVG or PNG) of the same content. With XHR it was finally possible to use content type negotiation in a good way in browsers, please don’t break it again in XDR.

Yes.

Not that it really matters -- even if Conneg wasn't useful, it's always bad if specs start profiling the base protocol without very good reasons.

...

BR, Julian

Reply via email to