nextcloud / nextcloud/server

[Bug]: UX/Security - Password managers incorrectly autofill External Storage config fields (eg., S3)

Open
#59,149 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

0. Needs triage 32-feedback bug feature: external storage papercut
Dominant language
PHP
Stars
36.9k
Forks
5.2k
Avg merge
2d 3h
Merged PRs (30d)
713

Description

⚠️ This issue respects the following points: ⚠️
Bug description

Hi everyone! This is the first issue I’m reporting to the Nextcloud community. I’ve done my best to provide a clear technical breakdown, but if there’s anything I missed or if I should provide more logs/details, please let me know!

In the External Storage administration UI, modern password managers (Bitwarden, 1Password, Dashlane, etc.) incorrectly identify configuration fields as a login form.

This happens because the UI often presents a text input (e.g., Storage Class) followed by a password input (e.g., SSE-C encryption key). Browsers and extensions use heuristics to find "username/password" pairs; when they see this pattern, they trigger an autofill overlay that obstructs the configuration process.

Image
Steps to reproduce
  1. Log in to Nextcloud as an administrator.
  2. Navigate to Administration settings > External storages.
  3. Choose a backend that requires a secret, such as Amazon S3.
  4. Observe that password managers immediately attempt to autofill the "Storage Class" and "SSE-C encryption key" fields with the administrator's Nextcloud credentials.
Expected behavior
Expected Behavior

The configuration fields should be recognized as infrastructure settings, not user credentials. Password managers should not offer to autofill or save these fields as site passwords.

Actual Behavior
  • UI Obstruction: Autofill popups block the input fields and "Save" buttons.
  • Data Pollution: Users may accidentally save S3/Infrastructure keys into their password vault as their primary Nextcloud login, creating a security and credential management mess.
Nextcloud Server version

32

Operating system

None

PHP engine version

None

Web server

None

Database engine version

None

Is this bug present after an update or on a fresh install?

None

Are you using the Nextcloud Server Encryption module?

None

What user-backends are you using?
  • Default user-backend (database)
  • LDAP/ Active Directory
  • SSO - SAML
  • Other
Configuration report

List of activated Apps

Nextcloud Signing status

Nextcloud Logs

Additional info
Technical Analysis

The issue is located in the dynamic rendering of configuration fields within:
apps/files_external/src/components/ConfigurationEntry.vue (and related components).

The NcTextField and NcPasswordField components are rendered without explicit autocomplete attributes. Adding these attributes provides the necessary signal to the browser to ignore these fields for credential management.

Suggested Fix

Update the dynamic component in ConfigurationEntry.vue to bind the autocomplete attribute based on the configuration type:

<component
    :is="configOption.type === ConfigurationType.Password ? NcPasswordField : NcTextField"
    v-if="configOption.type !== ConfigurationType.Boolean"
    v-model="value"
    :name="configKey"
    :label="configOption.value"
    :autocomplete="configOption.type === ConfigurationType.Password ? 'new-password' : 'off'" />

This fix is "backend-agnostic" and will improve the experience for all external storage types (SFTP, SMB, WebDAV, etc.) that utilize the standard configuration entry components.

As this is my first time reporting an issue here, I’m happy to provide more information or clarify any points if needed. Thanks for the help and for all the work on Nextcloud!

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with apps/files_external/src/components/ConfigurationEntry.vue and its related components, then inspect how NcTextField and NcPasswordField receive attributes. Verify that the S3 configuration fields no longer trigger password-manager autofill and that the behavior applies to other external-storage backends.

Written by the indexing model from the issue text.

Assessment

Tech stack
javascript
Domain
frontend, security
Issue type
Bug
Difficulty
2/5
Estimated time
1-3 hours
Activity status
Stale
Clarity
Clearly specified
Newbie friendliness
50/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.