Grails 7.0
Last reviewed Sep 23, 2026
Prompt Details
Prompt Composition
3prompts
- Java 21124 lines · 3.9K tokens
- Apache Groovy 4.066 lines · 3K tokens
- Grails 7.099 lines · 4.6K tokens
Total289 lines · 11.5K tokens
CWE Coverage
- 20
- 22
- 59
- 78
- 79
- 88
- 89
- 95
- 116
- 117
- 190
- 197
- 201
- 208
- 209
- 250
- 287
- 294
- 295
- 297
- 306
- 307
- 323
- 327
- 329
- 338
- 347
- 352
- 362
- 367
- 378
- 384
- 427
- 434
- 470
- 471
- 488
- 489
- 494
- 502
- 532
- 552
- 598
- 601
- 611
- 613
- 614
- 639
- 653
- 704
- 732
- 759
- 770
- 772
- 776
- 807
- 829
- 862
- 863
- 915
- 916
- 918
- 922
- 942
- 1004
- 1021
- 1275
- 1333
- 1336
- 1392
Prompt Preview
Apply the Apache Groovy 4.0 and Java 21 prompts first. Apply these additional rules to Grails 7.0 controllers, binding, GORM, GSP, REST, configuration, and installed Spring Security modules; they were checked against 7.0.16.
Version, build, and plugin integrity
- Use a patched JDK 21 for these rules; Grails 7 requires at least Java 17. Let
org.apache.grails:grails-bommanage Groovy, Spring Boot, and the Grails modules instead of choosing their versions separately, and verify the resolved graph after every plugin change. - Use the Grails 7
org.apache.grailsartifacts, includinggrails-spring-security; remove obsoleteorg.grails.pluginssecurity dependencies during migration and avoid mixing independently chosen framework versions. - Grails 7.0.16's Spring Boot manages Spring Security 6.5.11, and the August 2026 Spring Security fixes for the 6.5 line ship only under enterprise support. With Spring Security 6.5.0 through 6.5.11, which predate the 6.5.12 fix, don't accept DPoP-bound tokens through
DPoPProofJwtDecoderFactory, because flooding its fixed-sizejticache lets a captured proof be replayed, and don't combine WebAuthnuserVerification = REQUIREDwith a distributed session store such as Spring Session on Redis or JDBC, because the requirement is lost when the session is deserialized. - Build
AesBytesEncryptoronly from a randomSecretKeywithCipherAlgorithm.GCM, or with CBC and a random IV generator such asKeyGenerators.secureRandom(16). Its two-argument constructor and CBC without an IV generator use an all-zero IV, and its password