We previously announced part 1 of sandboxing for all iframes and are getting closer to implementing part 2 on June 28th, 2023! This involves limiting relevant apps’ actions and only allowing the following directives in our iframes:
allow-forms: Allows the page to submit forms. The form will be displayed as normal, but submitting it will not trigger input validation, sending data to a web server, or closing a dialog if this keyword is not used.
allow-downloads: Allows downloading files through an <a> or <area> element with the download attribute and through the navigation that leads to a file download. This works regardless of whether the user clicked on the link or JS code initiated it without user interaction.
allow-presentation: Allows embedders to have control over whether an iframe can start a presentation session.
allow-same-origin: The resource is treated as being from a special origin that always fails the same-origin policy (potentially preventing access to data storage/cookies and some JavaScript APIs) if this token is not used.
allow-scripts: Allows the page to run scripts (but not create pop-up windows). This operation is not allowed if this keyword is not used.
We recommend testing your app in the sandboxed environment with the new restrictions to ensure nothing breaks. You can do so by adding the _apps_sandbox=v2 query param to a monday URL. If something breaks and there’s no workaround, please complete a support request so we can find a resolution.
We recently added an SDK method that allows you to open links in a new tab for view apps!
This method is particularly useful for apps impacted by the upcoming sandboxing changes. Check out our SDK documentation for more information about the method, its parameters, and a code sample
We have a series of published apps that could be impacted by this change (Embedders). Some of them require the “allow-popups” directive to function properly. Unfortunately, some of the solutions suggested in this post cannot be applied in our case as we don’t have control over the underlying application. What should we do in this situation?