Security Considerations

IP access rules

Posit Workbench can be configured to deny access to specific IP addresses or ranges of addresses. Access rules are defined in the configuration file /etc/rstudio/ip-rules

Access rules are established using the allow and deny directives and are processed in order, with the first matching rule governing whether a given address is allowed or denied. For example, to allow only clients within the 192.168.1.0/24 subnet but also deny access to 192.168.1.10 you would use these rules:

/etc/rstudio/ip-rules
deny    192.168.1.10
allow   192.168.1.0/24
deny    all

All clients outside of the specified subset are denied access because of the deny all rule at the end of the configuration.

Note that changes to the configuration will not take effect until the server is restarted.

Frame origin

For security reasons, Workbench will not load inside a browser frame (such as a frameset or iframe) by default. You can modify this behavior by using the www-frame-origin option. For example, if you would like to host Workbench inside a browser frame at example.com, you can tell Workbench to allow this as follows:

/etc/rstudio/rserver.conf
www-frame-origin=example.com

There are several special values available for the www-frame-origin option:

Value Meaning
none The default; do not allow Workbench to load in any frame.
same Allow Workbench to load in a frame if it has the same origin (host and port) as Workbench.
any Allow Workbench to load in a frame from any origin (not recommended)
my-domain.com Allow Workbench to load in a frame at my-domain.com

To interact programmatically with Workbench in an iframe, see the Tutorial API.

CSRF attack mitigation

To help mitigate against CSRF attacks, Workbench can automatically reject any request originating from an Origin or Referer that does not match the Host, X-Forwarded-Host, Forwarded: host or X-RStudio-Request headers. To enable this check, add the following configuration:

/etc/rstudio/rserver.conf
www-enable-origin-check=1

In some cases, such as if running behind a proxy that you cannot modify, this check may be too strict, and can prevent access to Workbench, causing requests to return a 400 status. In such cases, it is recommended that you disable the check. Origin checking is currently disabled by default, but will likely be enabled by default in a future version of Workbench.

You may wish to consider some origins to be safe in all cases, causing Workbench to consider such Origin or Referer values to be allowed instead of being rejected, even if they do not match a Host header. To specify such origins, add each of them as a www-allow-origin setting in rserver.conf. For example:

/etc/rstudio/rserver.conf
www-allow-origin=mysubdomain.mydomain.com
www-allow-origin=*.mydomain2.com

Note that wildcards (*) are accepted and will match any character, including hostname separators. For instance, the previous example of *.mydomain2.com will match both foo.bar.mydomain2.com and foo.mydomain2.com.

Additional headers

In some cases, you may need to have Workbench set additional headers on client responses. To do this, simply specify server-add-header for each header that you need to add, in the form Header Name:Header Value. For example, to have the server set a few extra custom headers:

/etc/rstudio/rserver.conf
server-add-header=X-Header-1:Value 1
server-add-header=X-Header-2:Value 2