@Marcel, Thanks for the post. Here are my suggestions: - Please make 'concrete' API examples(few POSTs and few GETs) with actual requests. - Make a list common-mistakes that a developer might make while he develops twitter appln(you know.. encoding, not-double-encoding, use additional-params-for-signature-generation-if-any etc) - A oauth sandbox where it throws "precise errors/feedbacks" for developers to debug and test their apps would be very helpful as well.
On Jul 28, 10:57 am, Marcel Molina <mar...@twitter.com> wrote: > As many of you have since learned, we deployed an unannounced security fix > that has resulted in unexpected failures for quite a few developers using > OAuth. A developer reported to us that OAuth signatures were not being > verified on our side. The fix was implemented and pushed on Sunday then > deployed yesterday. Once the fix was in the wild many applications started > returning Invalid Signature errors. Our various successful tests seem to > indicate that the signature verification is implemented correctly and yet > many people are experiencing errors. So what's going on? > > One of the main problems seems to be that many OAuth libraries appear to not > be generating correctly signed requests. It's likely that Twitter's > implementation was used to test out many of these libraries when they were > being implemented. Without the correct signature check, it appeared to these > developers that their libraries were implementing the spec correctly. For > this confusion we must take at least partial blame. > > The following email from Simon in the UK seems to indicate absent url > encoding and decoding is a likely culprit in many of these libraries: > > "I don't myself think that twitter are doing anything more than > enforcing the standard. I spent 3 hours 'fixing' my code for our > application (uses Shannon Whitley's c# library as a base); I only > found two bugs in thelibrary that caused any problem... the use of > httputility.urlencode in place of the modified urlencode already > implemented for use with Oauth, as required by the spec... the library > just wasn't using it in two places. > Following that, I found I was passing some bad strings to the > library... so the methods in it were not urldecoding and re- > urlencoding the postdata as required to get it to meet the spec. Once > I fixed that also, all seems good. > > So if our app now posts all data fine over Oauth, it suggests that > twitter's interface is OK?" > > There are at least several things we could have done better in dealing with > this: > > * We should have, it goes without saying, had more extensive test coverage > of our implementation ensuring that we were fully implementing the spec so > that the whole situation would have been avoided in the first place. > > * We should have had an email prepared to send out immediately following the > deploy explaining the vulnerability and the change that was deployed, > encouraging developers to double check that their signatures were in fact > being generated correctly. > > We left a lot of people guessing for half a day, in many cases probably > frantically trying to fix mysterious failures in their apps. For that we > must admit guilt. We hadn't anticipated that so many libraries might have > not been generating signatures correctly. As a result it didn't occur to us > to urgently send out details, assuming fully implemented libraries would > continue to work transparently and malicious requests would start to fail. > We had been focusing our efforts first and foremost on getting the fix > implemented and deployed to protect everyone. Lesson learned. We'll take > this experience with us and bring it to bear next time such a situation > arises. > > We're going to do a post-mortem on our side to identify all the things we > should have done better. We've read all of your feedback about how this > could have been done better. To everyone who has chimed into this thread > offering details and help, we extend our thanks. > > On Tue, Jul 28, 2009 at 10:28 AM, Abraham Williams <4bra...@gmail.com>wrote: > > > > > If you are encoding properly according to: > >http://oauth.net/core/1.0a#encoding_parametersand it still fails to > > update post and update to > >http://code.google.com/p/twitter-api/issues/entryand make Twitter fix it. > > > I've not double checked to verify but "!" should encode to "%21" and then > > it should work. > > > Abraham > > > On Tue, Jul 28, 2009 at 10:06, Duane Roelands > > <duane.roela...@gmail.com>wrote: > > >> Yeah, that's what I'm doing as well. > > >> I wish Twitter would give us some answers. > > >> I can post a tweet is the text is "test" > >> If I try to post "test!", it fails. Something about the encoding of > >> non-alphanumeric characters is part of the problem. But, because > >> Twitter isn't talking, all we can do is guess. > > >> On Jul 28, 12:52 pm, Cristovão Morgado <cristovao.morg...@gmail.com> > >> wrote: > >> > I use this implementation: > >>http://www.codingthewheel.com/archives/codingthetweet > > >> > works flawlessly! > > >> > On Tue, Jul 28, 2009 at 5:47 PM, Duane Roelands < > >> duane.roela...@gmail.com>wrote: > > >> > > My stuff is based on Shannon Whitley's as well. Do you mind sharing > >> > > where specifically you had to make the changes? > > >> > > On Jul 28, 11:40 am, Zaudio <si...@z-audio.co.uk> wrote: > >> > > > I don't myself think that twitter are doing anything more than > >> > > > enforcing the standard. I spent 3 hours 'fixing' my code for our > >> > > > application (uses Shannon Whitley's c# library as a base); I only > >> > > > found two bugs in thelibrary that caused any problem... the use of > >> > > > httputility.urlencode in place of the modified urlencode already > >> > > > implemented for use with Oauth, as required by the spec... the > >> library > >> > > > just wasn't using it in two places. > > >> > -- > >> > Cristovao Morgado > >> > aka Saintrhttp://www.oMeuJogoUsado.comhttp://www.TweetaPorSMS.comhttp:// > >> twitter.com/TheSaintr > > > -- > > Abraham Williams | Community Evangelist |http://web608.org > > Hacker |http://abrah.am|http://twitter.com/abraham > > Project |http://fireeagle.labs.poseurtech.com > > This email is: [ ] blogable [x] ask first [ ] private. > > -- > Marcel Molina > Twitter Platform Teamhttp://twitter.com/noradio