Warning: this question does not represent a security concern and really isn't all that serious.
The problem lies with this badge:
Which is awarded for: Visited every section of the FAQ.
However, instantly earn this badge by opening up the JavaScript console in your browser and entering:
$.ajax({ url: '/faq/read', type: 'POST',
data: { fkey: StackExchange.options.user.fkey } });
Congratulations! You just earned a badge.
Now for the technical explanation:
The way this badge appears to be implemented, when you expand each section of the FAQ, an AJAX request is made to /faq/read
, granting you the badge. The code that checks whether each section has been expanded is completely client-side and the server trusts completely that the user actually did expand each of those sections (note that it doesn't trust that the user has read the sections - there's no way of ever being able to do that).
The solution? Well... there really isn't one that I can come up with. Even visiting multiple pages to earn the badge can be scripted.
Any suggestions for ways to make this more difficult are welcome.