This is an automated email from the ASF dual-hosted git repository. tballison pushed a commit to branch TIKA-4809-stage-3 in repository https://gitbox.apache.org/repos/asf/tika.git
commit 48c49605026806258aaf3cc59836d2b29af3dbf8 Author: tallison <[email protected]> AuthorDate: Sun Aug 9 08:47:03 2026 -0400 TIKA-4809: Fix migration guide's required config disabling the fs sandbox --- .../migration-to-4x/migrating-tika-server-4x.adoc | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/docs/modules/ROOT/pages/migration-to-4x/migrating-tika-server-4x.adoc b/docs/modules/ROOT/pages/migration-to-4x/migrating-tika-server-4x.adoc index fad6b193e4..127d3508ff 100644 --- a/docs/modules/ROOT/pages/migration-to-4x/migrating-tika-server-4x.adoc +++ b/docs/modules/ROOT/pages/migration-to-4x/migrating-tika-server-4x.adoc @@ -189,7 +189,7 @@ All tika-server configurations must now include a `pipes` section and a `file-sy "fetchers": { "file-system-fetcher": { "file-system-fetcher": { - "allowAbsolutePaths": true + "basePath": "/path/to/your/input" } } }, @@ -205,6 +205,23 @@ All tika-server configurations must now include a `pipes` section and a `file-sy } ---- +[IMPORTANT] +==== +Set `basePath` to a directory that contains only the documents you intend the +server to read. It is the filesystem sandbox: the fetcher rejects any fetch key +that resolves outside it, including absolute paths and `../` traversal, and +re-checks after resolving symlinks. + +Setting `allowAbsolutePaths` instead of `basePath` turns that sandbox off +entirely — fetch keys are then used as raw absolute paths, so any caller who can +reach `/pipes` can read any file the server process can read. The matching +emitter setting is worse: it grants arbitrary file *write*. `allowAbsolutePaths` +is not a relaxation of `basePath`; it is what you get when there is no +`basePath` at all, and it is a no-op when `basePath` is set. Use it only if you +genuinely intend an unsandboxed fetcher and have restricted access to the server +by other means. +==== + [IMPORTANT] ==== `numClients` is not boilerplate to copy unchanged from this example. In 3.x,
