Categorieën
Techtalk

Twitterrank en het pasword anti-pattern

Sinds een dag of wat is er een leuk nieuw speeltje: Twitterrank, ontwikkeld op een paar uur tijd door een onafhankelijke ontwikkelaar die iets leuks wou doen met Twitter. Het idee is simpel: meten hoeveel mensen er @replies naar jou sturen en die data aggregeren in een percentiel. Wat de man niet verwacht had, was het gigantische succes dat volgde: nog geen paar uur na release hadden een goede 2,000 twitteraars hun twitterrank via de website opgevraagd.

Het verhaal kent echter een aangebrand kantje. Twitterrank vraagt, net als de meeste andere Twitter apps, immers om je Twitter login en paswoord. Die heeft het nodig om op basis van je persoonlijke data je rank te kunnen berekenen. Enkele mensen begonnen het gerucht te verspreiden dat Twitterrank niet meer was dan een goedkope phising poging om Twitter logingegevens te verzamelen en, erger nog, te misbruiken. Al snel maakte de orginele ontwikkelaar zich bekend via o.a. ZDNet en maakte duidelijk dat hij zeker geen malafide bedoelingen had.

Het verhaal legt één van de achillespezen van het Web opnieuw bloot: De combinatie van menselijke nieuwsgierigheid en impulsiviteit leiden ertoe dat we probleemloos zeer persoonlijke informatie aan gelijk wie willen toevertrouwen. Ook als de beloning die er tegenover staat eerder mager is. Phising, het misleiden van mensen om hun credentials te kunnen stelen, is dan ook een ware plaag.

Erger is dat bonafide ontwikkelaars en de grotere spelers binnen de Web 2.0 ontwikkelingsgolf steeds meer van een gelijkaardig antipatroon gebruik beginnen te maken. In plaats van via protocollen zoals OAuth op elegante en veilige wijze data van elders op te vragen, wordt gratuit gevraagd naar paswoorden en logins. Facebook is hier een typisch voorbeeld: de meeste applicaties vragen toestemming om ‘persoonlijke informatie’ te lezen die ze nodig hebben. Ten eerste weet je niet welke informatie wordt verstuurd. Ten tweede weet je vaak niet wie er achter de applicatie in kwestie zit. Nu betwijfel ik de veiligheid van Facebook niet, maar gebruikers krijgen een slechte gewoonte aangeleerd: dat het oké, makkelijk en, ja, zelfs noodzakelijk is om anderen zomaar toe te laten tot je persoonlijke informatie.

Ook Twitter maakt zich schuldig aan dit anti-patroon: in plaats van in de API een beveiligde communicatiewijze te voorzien, moet je aan applicaties van derde partijen je Twitter paswoord/login geven om van hun diensten gebruik te kunnen maken. Ook ili.st van 10to1heeft je Twitter credentials nodig om te kunnen werken.

Dat we zelf als ontwikkelaar van gebruikers verwachten dat ze zomaar hun credentials in blind vertrouwen zullen afstaan, en dat die laatsten dat ook nog eens massaal doen, staat in schril contrast met het feit dat we er juist op hammeren om nooit of te nimmer je paswoord/username aan gelijk wie af te staan wil je niet het slachtoffer worden van identiteitsroof of erger.

Ikzelf ga alvast proberen om het standpunt van Jeremy Keith te volgen…

Categorieën
Internet Techtalk

Twitter API: babysteps

** techneutenwaarschuwing **

Gisteren ben ik wat met de Twitter API beginnen spelen. De whatnow? De Twitter API, dus. Samengevat: wanneer je zelf een programma schrijft, laat de API van toepassing x of service y toe om (beperkt) gebruik te maken van diens functionaliteit. Als je, bijvoorbeeld, met Twitter Stats werkt, dan zal die via de API van Twitter al je gebruikersgegevens opvragen, ontvangen en verwerken in mooie grafiekjes.

Op zich schrijft een API enkel voor welke regels je moet volgen om te kunnen communiceren. De programmeertaal, het platform of weet-ik-veel waar je zelf mee aan de slag bent, spelen een stuk minder een rol. Buiten dan dat ze je in staat moeten stellen om gebruik te kunnen maken van die functionaliteit.

Afin, dat was de theorie. De praktijk dan maar. Stel dat je de Twitter website beu bent of geen browser bij de hand, maar je wil wel twitteren, hoe doe je dat? Wel, men neme de API. Die zegt dat je een HTTP POST verzoekje moet sturen naar een bepaalde URL met je paswoord, username en het berichtje dat je wil versturen. je berichtje mag uiteraard niet langer dan 140 tekens zijn. Twitter zal je berichtje dan oppikken.

Eerste probleem: hoe stuur je een HTTP POST request zonder browser? Wel, dat kan je met cURL. Dit is een tooltje waarmee je direct met webservers en nog veel meer kan spreken. Deze versie (windows! Linux e.a. beschikbaar. Kies de no-ssl versie.) heb je nodig. In je commando prompt (dosbox, whatever) voer je het commando ‘curl’ uit. Je moet natuurlijk een aantal parameters zoals een URL en watnog meegeven om iets zinnigs te doen met cURL. In casu geef je volgende URL mee:

http://twitter.com/statuses/update.xml

Daarmee zijn we er nog niet. Je moet eerst inloggen bij Twitter vooraleer je een tweet kan sturen. Dat doe je door aan het curl commando volgende parameter mee te geven:

-u username:paswoord

Uiteraard vervangen door je eigen logingegevens. Tenslotte, moet je nog het berichtje mee geven als een HTTP POST request. Daarvoor dient de -d parameter van cURL. Daarbij moet je nog specificiëren dat het berichtje een status is. Dat doe je met ‘status=’ Het resultaat is dit:

-d status="Twittering from cURL"

Dat alles moeten we nu in één commando doorgeven aan Twitter. Dat doe je zo:

curl -u username:paswoord -d status="Twittering from cURL" http://twitter.com/statuses/update.xml

Als je als goed hebt ingevoerd, dan zou je een heleboel tekst in XML formaat teruggespuugd moeten krijgen. Die zal o.a. je profielgegevens bevatten en de nieuw aangepaste status met het tijdstip. Doe je het verkeerd krijg je ofwel geen output, ofwel een foutmelding in een XML berichtje.

Zo. Je hebt net voor het eerst rechtstreeks gebruik gemaakt van de Twitter API om los van de Twitter website toch te kunnen twitteren. Bravo! Als je PHP programmeur bent, dan zou je op een gelijkaardige manier met curl voor PHP aan de slag kunnen om van de Twitter API gebruik te maken.