May
22
Last year I showed how to use pecl/oauth to write a
Twitter OAuth Consumer. But what about writing the other end of that? What if you need to provide OAuth access to an API for your site? How do you do it?
Luckily John Jawed and Tjerk have put quite a bit of work into pecl/oauth lately and we now have full provider support in the extension. It's not documented yet at php.net/oauth, but there are some examples in
svn. My particular project was to hook an OAuth provider service into a large existing Kohana-based codebase. After a couple of iterations this should now be trivial for others to do with the current pecl/oauth extension.
Continue reading "Writing an OAuth Provider Service"
Posted by Rasmus
Last modified on 2010-05-25 15:12
Jan
10
Not sure why it took me so long to figure out what I am sure is obvious to most other people who have thought about this, but it never clicked for me how to get anywhere near useful SQL Injection detection. The injection itself is trivial, of course, but determining whether it actually worked and weeding out false positives in an automated manner was something that seemed too hard.
During my run on Friday I had a Duh! moment on it. Annoyingly simple. Do it in 3 requests. Request #1 is a normal request. For example, "
?id=1" in the URL. If the id is being passed to an SQL request it will return a single record or perhaps no record, it doesn't really matter. Now on request #2 do "
?id=1 or 3=4", that is, inject a false 'OR' condition. If the output changes, we are done. Nothing to see here. However, if the output does not change we send request #3 with "
?id=1 or 3=3" and if that output differs from request #2 then we have a potential SQLi situation. There are of course still chances of false positives (and negatives) with page stamps and such, but filtering out the response headers and html comments cuts down on that a bit. Add different combinations of single and double-quotes, like "
?id=1'or'3'='3" (without the double-quotes, of course) and it might be able to catch something.
The best thing about it is that it can slide into an existing scanner framework quite easily. If you have a base reference request, then it just adds a single request to the common case where the false 'OR' condition output does not match the base reference. You only need to do the true 'OR' condition request in case it does match.
Anybody have any other approaches?
Posted by Rasmus
Last modified on 2010-01-13 08:41
Apr
27
I have seen a lot of questions about
OAuth and specifically how to do OAuth from PHP. We have a new
pecl oauth extension written by
John Jawed which does a really good job simplifying OAuth.
I added Twitter support to
Slowgeek.com the other day and it was extremely painless. The goal was to let users have a way to have Slowgeek send a tweet on their behalf when they have completed a
Nike+ run. Here is a simplified description of what I did.
First, I needed to get the user to authorize Slowgeek to tweet on their behalf. This is done by asking Twitter for an access token and secret which will be stored on Slowgeek. This access token and secret will allow us to act on behalf of the user. This is made a bit easier by the fact that
Twitter does not expire access tokens at this point, so I didn't need to worry about an access token refresh workflow.
Continue reading "Using pecl/oauth to post to Twitter"
Posted by Rasmus
Not modified