[cosmo-dev] options to fix security hole
Randy Letness
randy at osafoundation.org
Thu Feb 7 07:33:43 PST 2008
Jeffrey Harris wrote:
>
>
> Does that match up with what you're suggesting?
After talking with Jeffrey on #cosmo yesterday it seems this does match
up with what I was suggesting. So basically think of a collection as a
set of items and a set of permissions to those items. In order to
modify an item, you need a read-write ticket to the collection and the
item in that collection must be editable. This would be a new concept
to the server, which doesn't consider individual items in determining
permissions, but would allow the workflows that are currently supported
by desktop and will be supported by web widgets. I like this idea much
better than storing copies, and its about the same amount of work
considering we wouldn't have to worry about creating copies of all those
existing items out there.
>
> One possible option C would be to not bother with read-only item
> tickets. If I know a UUID, I can always add it to a collection, I
> just don't get edit access to it. This seems like a reasonable
> approach to me. I think it might give a smoother transition for the
> desktop and morse code: everything would continue to work, but behind
> the scenes when morse code added items to multiple collections, those
> items wouldn't be editable.
>
> I think that might actually work reasonably well with existing Desktop
> code (although not perfectly) immediately if we made the server
> silently (or at least non-fatally) fail to process changes to
> read-only items. Existing desktop users would still change the item in
> question when they synced the read-write version, and they could still
> add items to new collections.
>
> There'd definitely be problems; user's who didn't have read-write
> access through some collection wouldn't know they didn't have
> edit-access but think they did. Still, this seems better than
> requiring all desktop clients to upgrade immediately.
This is a good idea and would make existing clients mostly backwards
compatible with the existing protocol, allowing all the work to be done
on the server. We could always add support in the protocol for
determining permissions and tighten things up later. One concern I have
is that both the desktop and webui may need some tweaking to handle a
read-write collection containing read-only items. If we fail silently
then the clients will assume these items were changed, and if all the
clients have access to is the read-only version then we end up with
inconsistent data. The bare-minimum we could do would be to add an
exception handler for both clients when this happens, letting the user
know they can't edit that particular item.
-Randy
More information about the cosmo-dev
mailing list