]> sipb.mit.edu Git - ikiwiki.git/blobdiff - doc/todo/Zoned_ikiwiki.mdwn
How signinview handles the goto leak
[ikiwiki.git] / doc / todo / Zoned_ikiwiki.mdwn
index 24fe22133009223d3ef70832391a3a02dfbbb4e5..76b2b69c74353de3080691780de497cbceefd9ee 100644 (file)
@@ -107,6 +107,12 @@ that header might not be needed in the request, and care may be needed to config
 the server to emit other necessary response headers to discourage caching of
 content from a private zone.
 
+*Drawbacks:* Not yet implemented, someone would have to do it.
+It's not clear [[what code changes fastcgi|todo/fastcgi or modperl installation instructions]]
+would require in ikiwiki. An Authorizer seems like a good place to start because of its
+limited, simple functionality--but as it could make use of any ikiwiki-supported auth method,
+evaluate `PageSpec`s, and the like, it could still run a non-trivial amount of the code.
+
 ## Obstacles
 
 A number of ikiwiki features aren't (yet) designed with zoning in mind,
@@ -117,6 +123,18 @@ but I'll begin it here.
 
 Note that not all of these issues will be problems for all **zoned ikiwiki use cases**.
 
+### Leakage of page existence by `do=goto`
+
+An unauthorized client can use a `do=goto` request to find out whether a
+page exists (will be forbidden to view it) or not (will be forbidden to create it).
+
+In [[plugins/contrib/signinview]] this is handled by hooking
+`cgi` first and checking for `goto` and a non-public page. If the requested page
+(existing or not) matches the `public_pages` PageSpec, it is handed off for the `goto`
+plugin to handle normally. Otherwise, the `do` parameter is changed to `signingoto`
+so the `goto` plugin's `cgi` hook will _not_ handle it, and the `sessioncgi` hook
+takes care of it when the user's identity is available.
+
 ### Backlinks
 
 What is problematic is when you link a public page in a private page :