This is more of a high-level summary of this post:
http://www.google.com/support/webmasters/bin/answer.py?answer=139394
But, I think it's a very important and often overlooked aspect of specifying canonical pages. That is, simply stripping any query string parameters from the URL, i.e.
Page: http://www.example.com/products/?id=320
<link rel="canonical" href="http://www.example.com/products/" />
What you are telling search engines with this tiny but dangerous tag is that all "versions" of the /products page are essentially duplicates of each other. Very bad!
A more appropriate use of canonicals is to "strip" query strings which don't actually affect page content. For instance:
http://www.example.com/products/?id=13&message=Out%20%of%20Stock
<link rel="canonical" href="http://www.example.com/products/?id=13" />
This prevents the SE's from assuming that the page with the message query string parameter is actually a different page.