Guess what will happen if you add an image like below in your html page:
It does not appear in page, but your google account in another window or another tab will get logoff. Now an external website could logout you from your gmail or orkut.
IF you coded your website to delete a photo or object from the website, like this: www.domainname.com/photos/delete?id=221, you may think , since you are checking user authentication at server side, no one else can delete your file. But what if you are logged in one tab and in the second tab, you are loading another website (of hacker or attacker), he can place lots of hidden images with src = www.domainname.com/photos/delete?id=22 ( he can try with ids from 0 to 1000 or 10,000, and anyone of them may be your object)
Here the authentication is okay , because the cookies and session is already set in another tab, and it affects (update or delete) your content.
It won’t happens if you use captcha. But for all forms it is very hard to use CAPTCHA everywhere. You can solve this attack using additional parameter (some string combination which is generated randomly) along with GET url or POST form submission.
For example, check the url to delete a mail in gmail.
There is some extra string alone with useful information as parameter. So an external application cannot predict the exact url to delete a particular mail, so img with src= url fails here.
Same thing is also needed in POST method. Add one hidden field for random string and check the string before updating into database from Server.
This problem is called CSRF – Cross Site Request Forgery