IndieWebCamp September 12-19, 2014

This is an automatically-generated summary of the IndieWebCamp wiki edits from September 12-19, 2014

Table of Contents

New Pages

Changed Pages

New Pages

DDOS

Created by Waterpigs.co.uk on September 16

  • Tue, September 16 waterpigs.co.uk Stubbed page with definition, webmention example, potential solutions, example code, myself as indieweb example
  • Tue, September 16 waterpigs.co.uk Added additional possible preventative measure, using expiring webmention endpoints
  • Tue, September 16 bret.io /* Webmention */
  • Tue, September 16 jonnybarnes.uk /* Webmention */ comment that cURL requests should still be possible
  • Tue, September 16 www.flutterby.net user:danlyke /* Webmention */ added suggestion to spread load out temporally
  • Tue, September 16 waterpigs.co.uk
  • Wed, September 17 aaronparecki.com /* Indieweb Examples */
  • Thu, September 18 tantek.com add subheads, for each how to method, cluster code/downside of IP checking with that suggestion
  • Thu, September 18 tantek.com resources related to the WordPress pingback vulnerability
  • Thu, September 18 waterpigs.co.uk Copy edits, moved most commonly implemented fix to the top of the list



DDOS stands for Distributed Denial of Service, and refers to an attack involving a large quantity of computers making many simultaneous requests to a single site.

Contents

Webmention

As webmention uses the exact same notification/fetch/verify flow as Pingback (but without the unnecessary XMLRPC) it is vulnerable to the known pingback DDOS attack.

Resources related to the WordPress pingback vulnerability:

Specifically, the attack involves an attacker creating a list of many (potentially hundreds of thousands) of websites which support webmention, and sending them all fake webmentions pointing towards the same source URL. All of the servers fetch the same URL simultaneously, and the victim’s servers are overloaded. The attack is unblockable because the attacks come from many different IP addresses.

How to avoid

There are several possible measures which could be taken to prevent unwitting participation in this attack.

Expiring token in endpoint

Add an expiring, random or encrypted token to webmention endpoints, preventing the accumulation of lists of endpoints and forcing attackers to look up the webmention endpoint of each of the sites they want to use to DDOS a victim.

Check client IP

Check the client IP of the incoming webmention POST request against the possible IPs of the source URL hostname — if they don’t match, ignore the webmention without ever fetching the source URL.

Example PHP webmention endpoint source code:

// Anti-webmention DDOS measures
$sourceIps = gethostbynamel(parse_url($source, PHP_URL_HOST));
if ($sourceIps === false) {
  // The source host cannot be resolved. Accept only if whitelisted IPs match.
  $sourceIps = [];
}

$sourceIps = array_merge($sourceIps, $whitelistedIPs);

if (!in_array($request->getClientIp(), $sourceIps)) {
  // Error!
  return new MentionException('x_request_not_from_source_ip', 'The webmention request didn’t come from an IP address which matched the source hostname.');
}
  • This method requires web mentions to be sent by the web server only which isn't necessarily practical all the time. Things like web mention endpoints separate from the web server don't seem possible with this method. This also breaks the use of curl from any IP. This seems overly restrictive. --Bret Comnes 10:38, 16 September 2014 (PDT)
    • As Barnaby notes, the endpoint could accept a hashcash with the request, this should in theory allow one to make requests from cURL --Jonnybarnes.uk 10:50, 16 September 2014 (PDT)

Hashcash

Require a hashcash “payment” parameter or header on incoming webmentions, accepting them if they’ve put enough processing power into the request to slow down a DDOS.

HEAD request source first

(Amplification mitigation) do a HEAD request to the source URL and check for text/html content type. This doesn’t prevent excess requests but it might reduce server load if the attacker is trying to DDOS a large, expensive-to-serve file e.g. video.

Queue and delay GET source

(Immediate load mitigation) queue and randomly delay actually performing the GET request for the source URL.

Indieweb Examples

  • Barnaby Walters implemented expiring webmention endpoint tokens as of 2014-09-16; previously had implemented client IP checking on waterpigs.co.uk but ran into problems
  • Aaron Parecki implemented expiring webmention endpoints on 2014-09-16. Each request to discover the webmention endpoint for a post results in a unique endpoint that is valid for 5 minutes.
  • …add yourself here!

See Also

User:Pmortensen.eu

Created by Pmortensen.eu on September 13


Contents

Discovery of IndieWeb

I discovered IndieWeb through the podcast TWiG, episode 266, 2014-09 (Kevin Marks, Ben Werdmüller, and Erin Jo Richey were on the podcast episode).

The real meat starts at 23 mins 02 secs and ends at 01 h 07 mins 18 secs (the part from 50 mins 50 secs - 56 mins 43 secs can safely be ignored...).

Profile

Profile: see my Wikipedia user page.

Credentials: more than 5000 edits on the English Wikipedia.

Reading list

Shortcuts

indie-stats

Created by Bear.im on September 17

  • Wed, September 17 bear.im Created page with "'''<dfn>[https://github.com/bear/indie-stats indie-stats]</dfn>''' is a Python open source [[project]] that will gather mf2 data for IndieWeb domains and generate stats. Generat..."
  • Wed, September 17 bear.im fix link
  • Wed, September 17 bear.im fix link
  • Wed, September 17 bear.im updated with latest design notes

indie-stats is a Python open source project that will gather mf2 data for IndieWeb domains and generate stats.

Generates a domains.json file for each domain with metadata for the site and it's status - this is needed because quite a few of them are 404 or timeouts.

Contents

Features

  • Crawl IndieWeb domains and store
    • mf2 data
    • html content
    • request and response headers
  • Maintain metadata for domains showing their current status
  • Domain list was seeded from IRC-people

Working On

Generate stats

For each domain crawled the domain, timestamp and data will be passed to a master "cruncher" that will then loop thru a list of stat generating apps. The resulting json blob from this generating app will be added along with namespace and timestamp to the stat history for the domain.

Domain opt-in and opt-out

Add an endpoint to allow for both opt-in and out for a domain owner - needs to be backed by IndieAuth.

Stat retrieval

Add an endpoint to allow for a call to be made for a domain and a date range and the response will be the json blob of stats.

Talk:h-card

Created by Pmortensen.eu on September 14


Talk:why

Created by Pmortensen.eu on September 13


User:Selfstarter.pt

Created by Selfstarter.pt on September 14


Contents

selfstarter.pt

Paul Tibbetts is a web developer from Birmingham, UK.

Setup

WordPress with the following plugins:

Projects

Thoughts and Ideas

I do want to make my own thing but can't start on it just yet. Hoping I can help onboard non-IndieWebbers and then with the weaning process from WordPress to other projects for now.

I would love to set up an IndieWebCamp / meet-up in Birmingham, I'll try and get in touch soon to find out as much info as I can.

static site generator

Created by Bret.io on September 19




Static site generators are programs that take a set of flat text files on disk and transforms them into a set of static html files ready to be served by a standard web server, or some variation of this example.

Advantages

  • Long term maintenance advantages
  • Archival ready html output
  • Can be hosted on any webserver
  • No "moving parts"; nothing to break
  • Easy to get started
  • Source files can be edited on an operating system. Usually its just text files!
  • Generators are typically fairly simple programs to write and modify
  • Lots of existing options; Few are better than most
  • ...

Disadvantages

  • Most SSGs are written as CLI programs and are difficult for non-technical people to learn
  • Can be difficult to install due to the use of programming language package managers
  • Most SSGs don't scale well with large data sets
  • ...



Popular and Documented SSGs

  • Jekyll
  • Wintersmith
  • Docpad
  • Hakyll
  • Harp

registerProtocolHandler

Created by Kodfabrik.se on September 15

  • Mon, September 15 kodfabrik.se Created page with "{{stub}} '''<dfn>registerProtocolHandler</dfn>''' is a method on the <code>window.navigator</code> object usable from JavaScript in the browser. With it one can register custom ..."



registerProtocolHandler is a method on the window.navigator object usable from JavaScript in the browser. With it one can register custom protocols, like the web+action protocol that's used by indie-config.

Supported in at least Firefox and Chrome.

See Also

Template:user

Created by Ben.thatmustbe.me on September 19

  • Fri, September 19 ben.thatmustbe.me Created page with "<span class="h-card"><a href= "http://{{{1}}}" class="u-url">{{#if: {{{3|}}} | {{sparkline|{{{3}}}}} | }}</a> <span class="p-name p-nickname">[[User:{{{1}}}|{{{2}}}]]</span></span>"

[[User:{{{1}}}|{{{2}}}]]

manifesto

Created by Tantek.com on September 19




A manifesto is "a published verbal declaration of the intentions, motives, or views of the issuer, be it an individual, group, political party or government" according to Wikipedia[1].

There is no "indieweb manifesto" nor "indiewebcamp manifesto".

IndieWebCamp does have

but to call either of them a manifesto would be an exaggeration and inaccurate.

Separately from indieweb/indiewebcamp, there is the ind.ie manifesto - https://ind.ie/manifesto/ which was developed independently from the indiewebcamp community (e.g. no discussion of it on IRC, nor on this wiki).

See Also

object-oriented-programming-antipattern

Created by Tantek.com on September 19

  • Fri, September 19 tantek.com stub with dfn and reference to existing article with even more detail and depth.



The object-oriented-programming antipattern is the excessive / unnecessary use of object-oriented-programming (OOP) and OOP techniques when simple procedural functions would have sufficed, with less overhead, fewer files to navigate around, fewer indirections to follow while debugging, etc.

Articles and references

See Also

JWT

Created by Aaronparecki.com on September 16




JWT (JSON Web Token) is a method of encoding and signing JSON data in a URL-safe string.

While JWT is actually designed to represent auth "claims," it can also serve as a general-purpose signing method ignoring all well-defined property names in the spec.

Resources

See Also

Retrieved from "http://indiewebcamp.com/JWT"

Changed Pages

database-antipattern

15 edits by tantek.com, tommorris.org, waterpigs.co.uk, t37.net

HTTPS

7 edits by waterpigs.co.uk, tantek.com, tommorris.org

PubSubHubbub

6 edits by tantek.com, waterpigs.co.uk
  • Mon, September 15 tantek.com add Why section, put "How to" immediately after IndieWeb examples
  • Mon, September 15 tantek.com /* Why */ you
  • Mon, September 15 tantek.com write up a How to PuSH 0.3 off the top of my head with roughly the info I used to get mine working, move notes about 0.4 into a how-to sections, likely needs more "how-to"-ness
  • Mon, September 15 tantek.com /* Why */ promptness more than efficiency for point 1
  • Mon, September 15 waterpigs.co.uk /* Publish PuSH 0.4 */ updated hub list
  • Mon, September 15 waterpigs.co.uk /* IndieWeb Examples */ superfeedr -> google’s hub

IRC People

5 edits by www.flutterby.net user:danlyke, ben.thatmustbe.me, www.davethewebguy.com

User:ShaneHudson.net

4 edits by shanehudson.net

web hosting

4 edits by kylewm.com

longevity

4 edits by tantek.com, ben.thatmustbe.me

WordPress

4 edits by boffosocko.com, kylewm.com, selfstarter.pt
  • Fri, September 12 boffosocko.com Added notes about potential conflict if using IndieWeb plugin in combination with both webmention plugin and semantic-linkbacks plugin
  • Fri, September 12 kylewm.com /* IndieAuth */ not confusion between rel-me links and IndieAuth plugin
  • Fri, September 12 boffosocko.com Recommended using either indieweb plugin OR (webmention plugin and semantic-linkbacks plugins)
  • Sun, September 14 selfstarter.pt /* Other independents using it on their primary site */ add Paul Tibbetts - https://selfstarter.pt

Known

3 edits by tantek.com, kylewm.com, bear.im

Dropbox

3 edits by kylewm.com

User:Bear.im

2 edits by bear.im

User:Ben.thatmustbe.me

2 edits by ben.thatmustbe.me

webmention

2 edits by ben.thatmustbe.me, kylewm.com

Python

2 edits by tantek.com

code-of-conduct

2 edits by kevinmarks.com, petermolnar.eu

Red Wind

2 edits by kylewm.com

events/2014-09-24-homebrew-website-club

2 edits by kevinmarks.com

Google

1 edits by tantek.com

App Engine

1 edits by tantek.com

2014/UK/Schedule

1 edits by tantek.com

2014/UK/Demos

1 edits by tantek.com

User:Colintedford.com

1 edits by colintedford.com
  • Tue, September 16 colintedford.com /* For now */ Finished migrating images & applying taxonomy. Disabled Webcomic plugin & switched themes.

Facebook

1 edits by tommorris.org
  • Sat, September 13 tommorris.org /* Criticism */ First they came for the drag queens...

User:David.shanske.com

1 edits by david.shanske.com

Events

1 edits by tantek.com

indieweb

1 edits by tantek.com
  • Sat, September 13 tantek.com expand definition to include key indieweb essentials, more See Also

How to set up web sign-in on your own domain

1 edits by tantek.com
  • Sat, September 13 tantek.com change intro text to be more welcoming, contextually relevant

Micropub

1 edits by ben.thatmustbe.me

mute

1 edits by kylewm.com

Taproot

1 edits by waterpigs.co.uk

POSSE

1 edits by shanehudson.net

pgp

1 edits by aaronparecki.com
  • Fri, September 19 aaronparecki.com /* Authentication */ add brief explanation of using pgp with indieauth

principles

1 edits by tantek.com

antipatterns

1 edits by tantek.com

Tumblr

1 edits by maymay.net
  • Thu, September 18 maymay.net /* Example Tumblrs with microformats */ days.maybemaimed.com uses a free IndieWeb-ified Tumblr theme

pingback

1 edits by tantek.com

XFN

1 edits by kylewm.com

why

1 edits by tantek.com

Posts about the IndieWeb

1 edits by techlifeweb.com

spam

1 edits by waterpigs.co.uk

Getting Started

1 edits by tantek.com

php-mf2

1 edits by tantek.com

h-card

1 edits by tantek.com