Yes, i know what HMAC is as I used it to create the initial cookie
session store in Camping, which is now in _why's repo (yay!) but I
simply don't understand how HMAC helps at all in this situation.
Everyone who is able to comment (and let me be clear, that is everyone
with a copy of shoes) would need their own secret which is shared with
the shoes server. How is authenticating everyone as an anonymous
someone any different from assuming everyone is someone and doing no
auth at all? And since when is eavsdropping an issue on the topic of
ruby manual comments? What is the auth for? Is it just to proove to
the server that this is indeed shoes talking to it? If so, that's a
dodgy enough tactic in closed source, but this is open source! Nothing
could possibly stop someone from simply copying the hmac auth script
from the shoes manual in to their own spam bot, or more simply
modifing the manual itself to send comments some insane amount of
times instead of just once.
Insanity I say!
On 03/10/2008, at 10:33 PM, Hugh Sasse wrote:
On Fri, 3 Oct 2008, Bluebie, Jenna wrote:
How is spam a problem in a shoes-only interface? Don't spammers
only operate
on the web?
They're hardly going to code up a special adaptor for the spam bots
just to
spam poor _why, and I doubt many spammers would install shoes just
to spam the
manual. We don't need to even make the comments visible on the web
interface.
I feel like the web interface is a nice thing to have, but should
act as a
lowest common denominator for what we can do in the manual.
Ok, I think you're right. After what happened to Ruby Garden (who
would want
to bother attacking a web site about Ruby in the days before Rails
got big?
But they did. <sigh/>) I'm a bit cautious, especially about
inflicting it
on someone else.
Another option would be to force comments through the web UI to be
confirmed
through an email link, though overall I feel it's a good thing to
require
people to use shoes for this task, because at least then we know
that the
commentator actually has and uses shoes. I don't see what benifit
HMAC gives
when the key is embedded in to open source.
You get the key sent back to you on your initial mailing. HMac takes
your message, adds the key to it, and then computes the SHA-1 or MD5
hash. It then doesn't send the key, only the message and the hash.
Both parties know the key, but the eavesdropper doesn't. The reciever
gets the message, adds their copy of the key to it, and computes the
hash again. So messages without the correct Hash are clearly rubbish,
and can be safely ignored.
The real trouble would probably come from prankster shoobies
looking to cause
some havoc with their newfound skills. One way to work around that
would be to
store a unique identifier, perhaps generated by the uuid gem, the
first time
I'll have to look into uuid to see if both ends can know it.
they run shoes. It could be sent with their comments, or for extra
awesome
bonus points, we could even force the sending of this ID via an X-
Shoes-ID
header on outgoing http requests that use the ajaxy functionality
within
shoes, so anyone simply wrapping the code that sends comments in
the manual in
an 500.times { ... } loop would have all the requests identified to
the
server. In this way, if rebel shoobies ever did become a problem,
be simple
enough to rate limit on the server side off this ID. If they're
persistent
enough to recode the spambot using net/http, well, sucks to be us
then. :P
Yes. Trying to think as an evil nuisance, we need to be able to stop
them
circumventing this by grabbing a new copy of shoes.
One fun side effect of always using the ID in requests is that the
subsequent
spammy comments could be totally hidden from everyone else, while
when their
shoes requests the list of comments, it appears they successfully
spammed the
place. Mmmmm, nice warm trickery.
Yes.
The HMACy response challengey thing has me thinking now though...
We could
write a block of really heavily compressed & obfusicated code
(camping style!)
which no newbie would have a chance in heck of being able to read
and modify,
which could act as a kind of secret cypher for challenging the
client. Not
sure what use it would be, but sure could be fun to code. :)
Hmmm, I wrote some HMAC code a while back, but it is way too clear.
Hugh