Unfortunately not at the present time. These descriptors are very opaque and need to be saved essentially as is to IndexedDB.
However, I did come up with a proposal to the browser vendors that would allow this Allow for serializing and deserializing a handle as a string · Issue #295 · WICG/file-system-access (github.com) <https://github.com/WICG/file-system-access/issues/295>. If this were implemented, I could do that or even just save the handle to the wiki itself in a secure way. On Thu, May 13, 2021 at 12:46 PM 'Mark S.' via TiddlyWiki < [email protected]> wrote: > Could the file descriptors be encrypted before storage? Then when there's > a save the plugin could fetch the encrypted descriptor, decrypt it, and use > it for the save? > > On Tuesday, April 27, 2021 at 3:59:23 PM UTC-7 [email protected] wrote: > >> @mohammad.rahmani the security issue is actually relevant to TiddlyWiki >> even if the file itself is secured. >> >> Google decided this was a duplicate issue so I can disclose the issue in >> full. 1202597 - Security: File Access API Permission Bypass - chromium >> <https://bugs.chromium.org/p/chromium/issues/detail?id=1202597#c3> >> >> You can save file/directory handles to IndexedDB (like localStorage, but >> more confusing) so that you don't need to select the TiddlyWiki >> file from the file picker each time you refresh the tab/open it. However, >> Chromium has a bug/design which considers everything from file:// >> to be from the same origin/domain. This means if you download and double >> click on some "malicious.html" it could just scan IndexedDB >> and use the same descriptors TiddlyWiki saved for convenience. >> >> Here is a potential outline of this attack: >> >> 1. You save teaminfo.html to a shared drive which includes >> passwords/valuable docs/etc. >> 2. You are writing some Rust code and have the docs open (which the >> rustdoc tool conveniently generates for you locally). >> 3. Someone, NSA/Russia/whoever, compromised some libraries docs and >> inserted malicious JS. >> 4. This malicious code gets the file descriptor by scanning IndexedDB >> and uploads it to some remote location. >> 5. If you happen to have said wiki open in another tab (as I >> personally often do), it can also overwrite this file and then be >> ransomware. >> >> *How to avoid this:* >> >> - Do not save file descriptors to IndexedDB >> - The code I posted doesn't save to IndexedDB, so this is for >> people modifying the code. >> - I am working on a proper plugin for this and my plan is to only >> save descriptors if not served from file://. >> - Use a static server like "pythom -m http.server" >> - Firefox doesn't support this API yet, but they seem to be more >> strict with same origin than Chromium. >> - Wait for Chromium to actually fix this issue and enforce a better >> origin policy for IndexedDB. >> >> >> On Mon, Apr 26, 2021 at 8:26 PM Mohammad Rahmani <[email protected]> >> wrote: >> >>> >>> >>> On Mon, Apr 26, 2021 at 11:58 PM Dyllon Gagnier <[email protected]> >>> wrote: >>> >>>> I would caution on being too hasty with this. There are some serious >>>> security implications with opening wikis hosted on the file system (i.e. >>>> file://, not talking about local servers or TiddlyDesktop). >>>> >>>> Apparently permissions are shared pretty broadly for anything open on >>>> file://. The code I shared is probably ok, but I have reported one issue to >>>> the Chromium team that I would like to hear >>>> their feedback on since it has some potential security implications for >>>> TiddlyWiki. I know there are people who store very valuable data on their >>>> wikis which is why I want to put a big caveat >>>> on all this. >>>> >>>> Even with my current concerns, I believe that the API is very safe so >>>> long as you serve the wiki from a local server (any local server, doesn't >>>> need to be TiddlyWiki specific). For example, >>>> launching a web server in a directory with the wiki via "python3 -m >>>> http.server". There is less of a benefit over the tiddlywiki node server, >>>> but I do think there is still a benefit. Since there >>>> is almost no coupling between the server and TiddlyWiki, you can debug >>>> things entirely in the browser and synchronization of state is easier to >>>> think about. There is only the state on disk >>>> and the state of the browser tab, no hidden state/watch issues with the >>>> web server. >>>> >>>> I think expanding the code to support wiki folders would be great and >>>> would help solve some of the issues around having images embedded in >>>> portable wikis. >>>> >>>> I am planning on releasing this as an actual plugin, but in addition to >>>> security and versioning, I want the plugin to: >>>> >>>> - Support versioning/backup like TiddlyDesktop. >>>> - Have settings for the plugin to control stuff like logging from >>>> the component itself without modifying code. >>>> >>>> >>> This looks very promising! Having a simple method for saving is very >>> essential in many use cases! While I understand your concern for security >>> issues, I think still this approach of saving TW is very useful and >>> demanding! >>> >>> >>> >>>> >>>> Thanks, >>>> Dyllon >>>> >>>> On Sat, Apr 24, 2021 at 9:15 PM TW Tones <[email protected]> wrote: >>>> >>>>> Folks, >>>>> >>>>> This may be the opportunity to simplify saving and give the local >>>>> storage plugin or its equivalent safe access to the local system. Thus >>>>> users can access a read only online resource and use it as if it were a >>>>> local app, with their own data stored locally. >>>>> >>>>> Any way to reduce the complexity of using, especially saving >>>>> tiddlywiki(s) will increase adoption. If the logic and and setup can be >>>>> included in the original wiki then they become eminently deployable with >>>>> self documented setups. This could include backups, localisation or >>>>> cloning, I can quickly do this now with Timimi already in place, if such >>>>> facilities can be introduced without a two step, browser specific install, >>>>> all the better. Yes, all the appropriate authorisation is needed for >>>>> security. >>>>> >>>>> Tones >>>>> >>>>> >>>>> >>>>> >>>>> On Saturday, 24 April 2021 at 17:42:18 UTC+10 Jeremy Ruston wrote: >>>>> >>>>>> Hi Dyllon, >>>>>> >>>>>> >>>>>> I wrote a small module for saving using the Chromium file system API >>>>>> (which is in the process of being standardized). >>>>>> >>>>>> Example TiddlyWiki 5 Saver Using HTML 5 File System Access API >>>>>> (github.com) >>>>>> <https://gist.github.com/slaymaker1907/7a04a6188179bfe113b122b1f51e22b5> >>>>>> >>>>>> >>>>>> Great stuff, I’ve been following the File System API with interest, >>>>>> and would be keen to get a saver in the core once the spec settles down. >>>>>> >>>>>> Here’s a link for those unfamiliar: >>>>>> >>>>>> https://web.dev/file-system-access/ >>>>>> >>>>>> I don’t know if any other browsers are planning to implement the API. >>>>>> It seems like an obvious requirement for ChromeOS, but perhaps other >>>>>> browsers will have less incentive to implement. >>>>>> >>>>>> The first time a save action is triggered, it prompts for a save >>>>>> location but future saves should go to the same location. >>>>>> >>>>>> It's a bit dangerous because if saving fails, there is no way AFAIK >>>>>> to disable the saver after it loads. I would be interested to know if >>>>>> anyone knows a way to disable a saver after it has already loaded. >>>>>> >>>>>> >>>>>> I think you’re already following the correct approach: for the save() >>>>>> method to synchronously return false if the save cannot proceed so that >>>>>> the >>>>>> next saver in the cascade gets a chance. >>>>>> >>>>>> Another thought with respect to the File System API is that it may be >>>>>> possible to write a syncadaptor module so that we can support TiddlyWiki >>>>>> folders containing individual .tid files in the browser. >>>>>> >>>>>> Best wishes >>>>>> >>>>>> Jeremy >>>>>> >>>>>> -- >>>>> You received this message because you are subscribed to a topic in the >>>>> Google Groups "TiddlyWiki" group. >>>>> To unsubscribe from this topic, visit >>>>> https://groups.google.com/d/topic/tiddlywiki/IczqdIdC3lE/unsubscribe. >>>>> To unsubscribe from this group and all its topics, send an email to >>>>> [email protected]. >>>>> To view this discussion on the web visit >>>>> https://groups.google.com/d/msgid/tiddlywiki/6d3bc90f-54eb-4512-a56d-3a62931b75b4n%40googlegroups.com >>>>> <https://groups.google.com/d/msgid/tiddlywiki/6d3bc90f-54eb-4512-a56d-3a62931b75b4n%40googlegroups.com?utm_medium=email&utm_source=footer> >>>>> . >>>>> >>>> -- >>>> You received this message because you are subscribed to the Google >>>> Groups "TiddlyWiki" group. >>>> To unsubscribe from this group and stop receiving emails from it, send >>>> an email to [email protected]. >>>> To view this discussion on the web visit >>>> https://groups.google.com/d/msgid/tiddlywiki/CAJsXKEMU2-R3asA6jOZOB35NQca7mpaxnT%3D%3D6sZiev6XVvWG-g%40mail.gmail.com >>>> <https://groups.google.com/d/msgid/tiddlywiki/CAJsXKEMU2-R3asA6jOZOB35NQca7mpaxnT%3D%3D6sZiev6XVvWG-g%40mail.gmail.com?utm_medium=email&utm_source=footer> >>>> . >>>> >>> -- >>> You received this message because you are subscribed to a topic in the >>> Google Groups "TiddlyWiki" group. >>> To unsubscribe from this topic, visit >>> https://groups.google.com/d/topic/tiddlywiki/IczqdIdC3lE/unsubscribe. >>> To unsubscribe from this group and all its topics, send an email to >>> [email protected]. >>> >> To view this discussion on the web visit >>> https://groups.google.com/d/msgid/tiddlywiki/CAAV1gMCuej%2Bg6Aup7WXRdQco4yo5OXyiBeZqb4BMkVa%3D%2BBXOhw%40mail.gmail.com >>> <https://groups.google.com/d/msgid/tiddlywiki/CAAV1gMCuej%2Bg6Aup7WXRdQco4yo5OXyiBeZqb4BMkVa%3D%2BBXOhw%40mail.gmail.com?utm_medium=email&utm_source=footer> >>> . >>> >> -- > You received this message because you are subscribed to a topic in the > Google Groups "TiddlyWiki" group. > To unsubscribe from this topic, visit > https://groups.google.com/d/topic/tiddlywiki/IczqdIdC3lE/unsubscribe. > To unsubscribe from this group and all its topics, send an email to > [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/tiddlywiki/3a052774-a404-4759-a668-1a7576be194an%40googlegroups.com > <https://groups.google.com/d/msgid/tiddlywiki/3a052774-a404-4759-a668-1a7576be194an%40googlegroups.com?utm_medium=email&utm_source=footer> > . > -- You received this message because you are subscribed to the Google Groups "TiddlyWiki" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/tiddlywiki/CAJsXKEM7xHTP20cTb7S%3DtTYf5L6%3D0MwtdwENd3rcgEWg%2BZmw1g%40mail.gmail.com.

