Skip to content

Restricted sheets still serve their CSV export: confirm the old IDs are actually dead #126

Description

@gaurav

Both Google Sheets have been restricted (link sharing turned off), but their CSV export URLs still return data. Until that stops being true, the rotation is not finished: the old IDs are checked into main and are in this repository's public history, so anyone who has ever cloned it holds a working key.

This is the endpoint that matters — the one the code actually fetches, not the /edit URL:

https://docs.google.com/spreadsheets/d/<ID>/gviz/tq?tqx=out:csv&sheet=Tests

Built in google_sheet_test_cases.py and blocklist.py.

Things to rule out, cheapest first

  1. Testing while signed in as the owner. The likeliest explanation by far, and it isn't caching: the browser sends your Google cookies, and the owner can always read the document whatever the sharing setting says. The real test sends no credentials at all:

    curl -sS -o /dev/null -w '%{http_code} %{size_download} bytes\n' \
      "https://docs.google.com/spreadsheets/d/<OLD_ID>/gviz/tq?tqx=out:csv&sheet=Tests"

    A restricted sheet answers 302 to a sign-in page (accounts.google.com), not 200 with CSV. Add -L and check where it lands. Run it in a container or with --no-cookie if there is any chance of ambient credentials.

  2. "Publish to web" is a separate switch from link sharing. File → Share → Publish to web. If it was ever enabled, the document stays publicly readable through its own /pub?output=csv URL after link sharing is restricted, and the gviz endpoint may serve from that publication too. It has to be stopped explicitly ("Stop publishing"). This is the failure mode most likely to look like "caching that will sort itself out" while actually being permanent.

  3. Edge caching, which is real but short. Google does serve exports through a CDN, and a previously-fetched CSV can survive a permission change for minutes. If (1) and (2) are clean, re-test after an hour before concluding anything.

  4. Copies. A copy taken while the sheet was link-shared is a separate document with its own ID and its own sharing; restricting the original does nothing to it. (Drive has been checked for copies owned by the maintainer — worth remembering that a copy taken by someone else is not visible or revocable from here at all.)

Done when

curl with no credentials returns a sign-in redirect for both old IDs, on both the gviz CSV endpoint and /pub?output=csv.

Filed from the sheet-ID rotation in #117. Do not paste the old IDs into this issue or its comments — the point of the exercise is that they stop being readable, and this issue is public.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions