Skip to content

Commit 030c137

Browse files
authored
Prepare OWASP Java Encoder 1.5.0 release (#229)
1 parent df219a5 commit 030c137

14 files changed

Lines changed: 191 additions & 56 deletions

File tree

‎CHANGELOG.md‎

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,16 @@ UTC where a release record exists; older announcement/tag dates are labeled.
66
An open proposal is not a release. Historical tags, assets and signatures remain
77
unchanged. [1.4.1 is also available from Central](releases/1.4.1-central-publication.md).
88

9-
## Unreleased — 1.5.0
9+
## Unreleased
1010

11-
Development builds use `1.5.0-SNAPSHOT`; this is not a published release.
11+
No changes are recorded after 1.5.0 yet.
12+
13+
## 1.5.0 — 2026-09-28 UTC
14+
15+
This is a security release for
16+
[GHSA-g8p6-7r8f-qrpv](https://github.com/OWASP/owasp-java-encoder/security/advisories/GHSA-g8p6-7r8f-qrpv).
17+
Signed artifact availability and independent verification are tracked in the
18+
[1.5.0 release record](releases/1.5.0.md).
1219

1320
* build: stop Dependabot from recreating already-reviewed incompatible API,
1421
servlet-engine and build-tool version proposals. The ignores are limited to

‎README.md‎

Lines changed: 12 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -9,21 +9,16 @@ has no runtime dependencies; optional JSP and Jakarta adapters provide view-laye
99
bindings. Encoding is one part of [XSS prevention][xss], alongside
1010
safe templates, URL validation and other application controls.
1111

12-
**Upgrade all Java Encoder artifacts to 1.4.1. Versions through 1.4.0 are affected
13-
by the [security issues fixed in 1.4.1](releases/1.4.1.md#security-fixes).**
14-
Version 1.4.1 is available from [Maven Central](https://repo.maven.apache.org/maven2/org/owasp/encoder/)
15-
and the signed [GitHub release][release]. All published artifacts and signatures
16-
[match the retained release](releases/1.4.1-central-publication.md). See
17-
[VERIFYING.md](VERIFYING.md) for verification instructions.
18-
19-
`main` is **unreleased 1.5.0-SNAPSHOT**. Its JSON API, JavaScript template support,
20-
XML 1.1 tag bindings, and parser-boundary fixes are described below with version
21-
labels; they are not features of the signed 1.4.1 release. See
22-
[CHANGELOG.md](CHANGELOG.md).
12+
**Release preparation:** version 1.5.0 fixes parser-boundary vulnerabilities in
13+
JavaScript-in-HTML, CDATA, and XML-comment fragment composition. Versions through
14+
1.4.1 do not contain those fixes. The signed 1.5.0 artifacts are not available
15+
until the maintainers complete the release gates and update this notice with the
16+
verified GitHub and Maven Central links. See the [1.5.0 release notes](releases/1.5.0.md)
17+
and [VERIFYING.md](VERIFYING.md).
2318

2419
## Start using the OWASP Java Encoders
2520

26-
Select the dependency you need; Maven resolves version 1.4.1 from Central.
21+
After 1.5.0 publication is independently verified, select the dependency you need.
2722
The three supported artifacts use group ID `org.owasp.encoder`:
2823

2924
| Artifact ID | Purpose and runtime dependencies |
@@ -36,16 +31,16 @@ The three supported artifacts use group ID `org.owasp.encoder`:
3631
<dependency>
3732
<groupId>org.owasp.encoder</groupId>
3833
<artifactId>encoder</artifactId>
39-
<version>1.4.1</version>
34+
<version>1.5.0</version>
4035
</dependency>
4136
```
4237

4338
Replace `encoder` with one tag adapter artifact ID when needed; each adapter brings
4439
in core. Keep separately managed core/adapter versions aligned. Use **one** of the
4540
javax or Jakarta taglib JARs: they share `org.owasp.encoder.tag` and must not coexist
4641
on the same classpath or module path. See the [runtime matrix](compatibility/README.md) and
47-
[dependency/license inventory](docs/dependencies.md). Development snapshots are
48-
not security releases or a substitute for the signed 1.4.1 artifacts.
42+
[dependency/license inventory](docs/dependencies.md). Do not use the example version
43+
until its signed artifacts and Central availability have been verified.
4944

5045
`encoder-esapi` was retired after 1.4.1 and will not be published or supported in
5146
1.5.0. Applications using it must [migrate away from the adapter](docs/encoder-esapi-retirement.md).
@@ -111,7 +106,7 @@ Java source generation is not a JSP context. XML 1.1 bindings are new in 1.5.
111106

112107
## Migrating from forUri
113108

114-
`Encode.forUri` is deprecated in the released API. **Unreleased 1.5** extends
109+
`Encode.forUri` is deprecated in the released API. Version 1.5.0 extends
115110
that deprecation to `Encoders.URI`, both `ForUriTag` classes and the `forUri`
116111
tag/function documentation. All of these entry points are retained through 1.x. Encoding a whole URI does not validate it:
117112
`forUri("javascript:alert(1)")` returns it unchanged. Existing `%` signs are encoded
@@ -173,4 +168,4 @@ links distinguish maintainer support from OWASP Foundation donations.
173168
[xss]: https://cheatsheetseries.owasp.org/cheatsheets/Cross_Site_Scripting_Prevention_Cheat_Sheet.html
174169
[java-libraries]: https://devguide.owasp.org/en/05-implementation/03-secure-libraries/04-java-secure-libs/
175170
[project]: https://owasp.org/projects/java-encoder
176-
[release]: https://github.com/OWASP/owasp-java-encoder/releases/tag/v1.4.1
171+
[release]: https://github.com/OWASP/owasp-java-encoder/releases/tag/v1.5.0

‎RELEASING.md‎

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,9 @@ Do not tag, publish, or announce a 1.5 release until **all open issues and all
66
open pull requests have been handled**. Before considering release approval,
77
inventory the full open backlog and record the outcome and supporting review
88
or verification for every item. Completing a maintenance batch does not satisfy
9-
this gate on its own. Keep 1.5 development at `1.5.0-SNAPSHOT`; snapshot version
10-
changes and reviewed maintenance merges are not release approval.
9+
this gate on its own. Keep 1.5 development at `1.5.0-SNAPSHOT` until maintainers
10+
deliberately create the exact release commit after the technical gates pass.
11+
Changing that commit to `1.5.0` is release preparation, not release approval.
1112

1213
The [2026-09-26 maintenance closeout](releases/maintenance-closeout.md) records
1314
the final backlog inventory and dispositions for #110 and #169. A closed tracker

‎SECURITY.md‎

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,26 +2,29 @@
22

33
## Supported Versions
44

5-
Version **1.4.1** is available from [Maven Central](https://repo.maven.apache.org/maven2/org/owasp/encoder/)
6-
and as signed artifacts from the [GitHub security release](https://github.com/OWASP/owasp-java-encoder/releases/tag/v1.4.1).
7-
The Central artifacts and signatures [match the retained release](releases/1.4.1-central-publication.md).
5+
Version **1.5.0** is the prepared security release. Do not treat it as available
6+
until the signed GitHub artifacts and Maven Central publication have been
7+
independently verified and this paragraph is updated with the exact links and date.
88

99
Only the latest 1.x release receives security fixes. Fixes ship in a new release;
1010
older release lines are not patched.
1111

1212
| Maven coordinate | Supported | Not supported |
1313
| --------------------------------------- | --------- | ------------- |
14-
| `org.owasp.encoder:encoder` | 1.4.1 | < 1.4.1 |
15-
| `org.owasp.encoder:encoder-jsp` | 1.4.1 | < 1.4.1 |
16-
| `org.owasp.encoder:encoder-jakarta-jsp` | 1.4.1 | < 1.4.1 |
14+
| `org.owasp.encoder:encoder` | 1.5.0 | < 1.5.0 |
15+
| `org.owasp.encoder:encoder-jsp` | 1.5.0 | < 1.5.0 |
16+
| `org.owasp.encoder:encoder-jakarta-jsp` | 1.5.0 | < 1.5.0 |
1717

1818
The optional `org.owasp.encoder:encoder-esapi` artifact is retired. Version
1919
1.4.1 is its final published release, no version is currently supported, and no
2020
1.5.0 artifact will be published. See the [retirement and migration notice](docs/encoder-esapi-retirement.md).
2121

22-
Upgrading the core `encoder` artifact to the latest 1.x release needs no code changes:
23-
no public API was removed between 1.2.3 and 1.4.1. It does need Java 8 or later;
24-
1.2.3 and earlier also ran on Java 5 through 7.
22+
The three retained artifacts (`encoder`, `encoder-jsp`, and
23+
`encoder-jakarta-jsp`) remove no public API in 1.5.0. The separately published
24+
`encoder-esapi` API ends at 1.4.1 as described above. Security corrections also
25+
intentionally change encoded output in several contexts. Read the [compatibility
26+
and migration record](docs/compatibility-decisions.md) before upgrading. Version
27+
1.5.0 needs Java 8 or later; 1.2.3 and earlier also ran on Java 5 through 7.
2528

2629
## Reporting a Vulnerability
2730

@@ -81,7 +84,7 @@ release tag, then verify:
8184

8285
```sh
8386
gpg --import KEYS
84-
gpg --verify encoder-1.4.1.jar.asc encoder-1.4.1.jar
87+
gpg --verify encoder-1.5.0.jar.asc encoder-1.5.0.jar
8588
shasum -a 256 -c SHA256SUMS
8689
shasum -a 512 -c SHA512SUMS
8790
```

‎compatibility/README.md‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -135,9 +135,9 @@ multi-release layout remain unchanged.
135135

136136
## Published identities and development import ranges
137137

138-
The tables below describe the current **1.5 development** artifacts. The names
139-
are historical identities preserved in 1.x; the OSGi import floors reflect the
140-
new 1.5 calls and must not be projected onto older published JARs.
138+
The tables below describe the prepared **1.5.0** artifacts. The names are
139+
historical identities preserved in 1.x; the OSGi import floors reflect the new
140+
1.5 calls and must not be projected onto older published JARs.
141141

142142
### Java 9+ module names
143143

‎core/pom.xml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@
4242
<parent>
4343
<groupId>org.owasp.encoder</groupId>
4444
<artifactId>encoder-parent</artifactId>
45-
<version>1.5.0-SNAPSHOT</version>
45+
<version>1.5.0</version>
4646
</parent>
4747

4848
<artifactId>encoder</artifactId>

‎docs/contexts.md‎

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
# Output contexts and boundaries
22

3-
This guide describes current `main` (unreleased **1.5**); feature introductions
4-
are marked below. For production use, follow the [1.4.1 distribution and security
5-
notice](../README.md). The [Encode Javadoc source](../core/src/main/java/org/owasp/encoder/Encode.java)
6-
is the detailed per-method contract; each method has a String-returning and a
7-
`(Writer out, String input)` overload. `Encoders` exposes shared stateless
8-
encoders; `EncodedWriter` supports chunked input and must be closed to finish
9-
pending input. Use the facade Writer overload when encoding one String directly.
3+
This guide describes version **1.5.0**; feature introductions are marked below.
4+
Do not treat that version as available until the [release-preparation notice](../README.md)
5+
is updated with independently verified signed artifacts and Maven Central links.
6+
The [Encode Javadoc source](../core/src/main/java/org/owasp/encoder/Encode.java) is
7+
the detailed per-method contract; each method has a String-returning and a
8+
`(Writer out, String input)` overload. `Encoders` exposes shared stateless encoders;
9+
`EncodedWriter` supports chunked input and must be closed to finish pending input.
10+
Use the facade Writer overload when encoding one String directly.
1011

1112
## Encode for the parser that receives the value
1213

@@ -60,8 +61,8 @@ continue to support single- and double-quoted strings in their documented contex
6061
This does **not** support tagged templates such as `String.raw`, or insertion
6162
inside a `${...}` expression. Tagged templates can observe raw escape text.
6263
Do not use a 1.4.1 JavaScript encoder for template-literal text: this support is
63-
unreleased 1.5 behavior. The old IE grave-accent/`innerHTML` workaround is a
64-
separate historical browser issue, not a substitute for this contract. The
64+
introduced in 1.5.0. The old IE grave-accent/`innerHTML` workaround is a separate
65+
historical browser issue, not a substitute for this contract. The
6566
[wiki archive](archive/wiki-2019/README.md) records why that advice was retired.
6667

6768
In 1.5, DEL/C1 controls use hex escapes and unpaired UTF-16 surrogates use Unicode

‎docs/dependencies.md‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,8 @@ unsupported; see the [retirement and migration notice](encoder-esapi-retirement.
1717
## Consumer dependency inventory — 2026-09-27
1818

1919
Generated from dependency-plugin 3.11.0's resolved reactor `dependency:tree`
20-
JSON for current `1.5.0-SNAPSHOT`. This inventory includes the publishable
20+
JSON for the reviewed `1.5.0-SNAPSHOT` candidate. Release preparation does not
21+
change the published dependency graph. This inventory includes the publishable
2122
modules' compile/runtime and provided scopes, excludes test/plugin dependencies
2223
and this project's own BSD-3-Clause modules, and identifies the consuming module.
2324

‎docs/usage.md‎

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
# Java and JSP examples
22

3-
Use the [verified signed 1.4.1 distribution](../README.md#start-using-the-owasp-java-encoders)
4-
for production. The examples here use APIs available in that release unless
5-
explicitly marked **1.5**. New features on `main` remain unreleased.
3+
These examples target version **1.5.0**. Do not use that coordinate until the
4+
[release-preparation notice](../README.md) is updated with independently verified
5+
signed artifacts and Maven Central links. Features marked **1.5** are new in this
6+
release.
67

78
## HTML and Writer output
89

@@ -128,7 +129,7 @@ and the [packaged JSP engine checks](../compatibility/jsp-engine/README.md).
128129
## Java modules
129130

130131
The explicit module name for core is `owasp.encoder`. After verifying and obtaining
131-
`encoder-1.4.1.jar`, put that unchanged JAR in `lib/`, then create:
132+
`encoder-1.5.0.jar`, put that unchanged JAR in `lib/`, then create:
132133

133134
`src/example.app/module-info.java`:
134135

‎jakarta-test/pom.xml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
<selenium.version>4.49.0</selenium.version>
2929
<!-- Must equal the version in the root pom.xml so this app tests the
3030
encoder-jakarta-jsp built in the same reactor. CI checks this. -->
31-
<encoder.version>1.5.0-SNAPSHOT</encoder.version>
31+
<encoder.version>1.5.0</encoder.version>
3232
</properties>
3333
<dependencies>
3434
<dependency>

0 commit comments

Comments
 (0)