Page MenuHomePhabricator

Scramble file secrets when related objects change policies
ClosedPublic

Authored by epriestley on Apr 6 2016, 7:28 PM.
Tags
None
Referenced Files
Unknown Object (File)
Sat, Mar 16, 5:11 PM
Unknown Object (File)
Sat, Mar 16, 5:08 PM
Unknown Object (File)
Sat, Mar 16, 4:28 PM
Unknown Object (File)
Sat, Mar 16, 2:43 PM
Unknown Object (File)
Fri, Mar 15, 4:54 PM
Unknown Object (File)
Wed, Mar 13, 5:26 PM
Unknown Object (File)
Sun, Mar 10, 9:00 PM
Unknown Object (File)
Thu, Feb 29, 10:43 PM
Subscribers
None

Details

Summary

Ref T10262. Files have an internal secret key which is partially used to control access to them, and determines part of the URL you need to access them. Scramble (regenerate) the secret when:

  • the view policy for the file itself changes (and the new policy is not "public" or "all users"); or
  • the view policy or space for an object the file is attached to changes (and the file policy is not "public" or "all users").

This basically means that when you change the visibility of a task, any old URLs for attached files stop working and new ones are implicitly generated.

Test Plan
  • Attached a file to a task, used SELECT * FROM file WHERE id = ... to inspect the secret.
  • Set view policy to public, same secret.
  • Set view policy to me, new secret.
  • Changed task view policy, new secret.
  • Changed task space, new secret.
  • Changed task title, same old secret.
  • Added and ran unit tests which cover this behavior.

Diff Detail

Repository
rP Phabricator
Lint
Lint Not Applicable
Unit
Tests Not Applicable

Event Timeline

epriestley retitled this revision from to Scramble file secrets when related objects change policies.
epriestley updated this object.
epriestley edited the test plan for this revision. (Show Details)
epriestley added a reviewer: chad.
chad edited edge metadata.

should we have some unit tests for this?

This revision is now accepted and ready to land.Apr 6 2016, 7:33 PM
src/applications/files/storage/__tests__/PhabricatorFileTestCase.php
11–135

^^^

well obviously I read everything,

。゚・(>﹏<)・゚。

This revision was automatically updated to reflect the committed changes.