Class RepositoryVariableSecurityValidatorImpl
java.lang.Object
com.atlassian.bamboo.security.validation.RepositoryVariableSecurityValidatorImpl
- All Implemented Interfaces:
RepositoryVariableSecurityValidator
@Component
public class RepositoryVariableSecurityValidatorImpl
extends Object
implements RepositoryVariableSecurityValidator
Validates repository-sourced variable values for shell injection risks.
The first character must be alphanumeric or underscore. Leading dashes are blocked to prevent CLI flag injection; leading dots are blocked to avoid hidden-file path confusion. Subsequent characters may also include dash, forward slash, and dot. All other characters (shell metacharacters, spaces, quotes, etc.) are rejected.
-
Constructor Summary
ConstructorsConstructorDescriptionRepositoryVariableSecurityValidatorImpl(AdministrationConfigurationAccessor administrationConfigurationAccessor, RepositoryVariableSecurityViolationPublisher violationPublisher) -
Method Summary
Modifier and TypeMethodDescription@NotNull SecurityValidationResultvalidateBranchName(@NotNull String branchName, @NotNull PartialVcsRepositoryData repositoryData, @Nullable ImmutableChain plan) Validates a branch name received from a VCS repository.@NotNull SecurityValidationResultvalidateBranchNameForUI(@Nullable String branchName) Validates a branch name received from a VCS repository.@NotNull SecurityValidationResultvalidatePullRequestMetadata(@Nullable String sourceBranch, @Nullable String targetBranch, @Nullable String prKey, @Nullable VcsRepositoryData sourceRepositoryData, @Nullable VcsRepositoryData targetRepositoryData) Validates the branch names and key associated with a pull request.
-
Constructor Details
-
RepositoryVariableSecurityValidatorImpl
public RepositoryVariableSecurityValidatorImpl(AdministrationConfigurationAccessor administrationConfigurationAccessor, RepositoryVariableSecurityViolationPublisher violationPublisher)
-
-
Method Details
-
validateBranchName
@NotNull public @NotNull SecurityValidationResult validateBranchName(@NotNull @NotNull String branchName, @NotNull @NotNull PartialVcsRepositoryData repositoryData, @Nullable @Nullable ImmutableChain plan) Description copied from interface:RepositoryVariableSecurityValidatorValidates a branch name received from a VCS repository.- Specified by:
validateBranchNamein interfaceRepositoryVariableSecurityValidator- Parameters:
branchName- the branch name to validate; null or empty is allowed- Returns:
- allowed result if the name is safe, blocked result otherwise
-
validateBranchNameForUI
@NotNull public @NotNull SecurityValidationResult validateBranchNameForUI(@Nullable @Nullable String branchName) Description copied from interface:RepositoryVariableSecurityValidatorValidates a branch name received from a VCS repository.- Specified by:
validateBranchNameForUIin interfaceRepositoryVariableSecurityValidator- Parameters:
branchName- the branch name to validate; null or empty is allowed- Returns:
- allowed result if the name is safe, blocked result otherwise Doesn't emit the security violation notification
-
validatePullRequestMetadata
@NotNull public @NotNull SecurityValidationResult validatePullRequestMetadata(@Nullable @Nullable String sourceBranch, @Nullable @Nullable String targetBranch, @Nullable @Nullable String prKey, @Nullable @Nullable VcsRepositoryData sourceRepositoryData, @Nullable @Nullable VcsRepositoryData targetRepositoryData) Description copied from interface:RepositoryVariableSecurityValidatorValidates the branch names and key associated with a pull request.- Specified by:
validatePullRequestMetadatain interfaceRepositoryVariableSecurityValidator- Parameters:
sourceBranch- PR source branch; null or empty is allowedtargetBranch- PR target branch; null or empty is allowedprKey- PR key/identifier; null or empty is allowedsourceRepositoryData- source repository metadata for security auditing/logging context; may be nulltargetRepositoryData- target repository metadata for security auditing/logging context; may be null- Returns:
- allowed result if all fields are safe, blocked result otherwise
-