Skip to content

Conversation

@fzipi
Copy link
Member

@fzipi fzipi commented Jan 22, 2026

what

  • add blogpost on CRSLang

Signed-off-by: Felipe Zipitria <felipe.zipitria@owasp.org>
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a new blog post announcing and explaining CRSLang as a next-generation, YAML-based rule language for OWASP CRS, including motivation, examples, and migration guidance.

Changes:

  • Introduces a new long-form blog post describing CRSLang and the rationale for moving beyond Seclang
  • Includes multiple illustrative Seclang vs CRSLang examples, plus discussion of features (templates, logical expressions, translation)
  • Adds links and calls-to-action for readers to learn more and join discussions

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines 84 to 99
id: 1
phase: 1
conditions:
- and:
- or:
- variable: ARGS:user
operator: "@streq"
pattern: "admin"
- variable: ARGS:username
operator: "@streq"
pattern: "admin"
- variable: REQUEST_LINE
operator: "@contains"
pattern: "admin"
actions:
- action: block
Copy link

Copilot AI Jan 22, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The CRSLang YAML examples use different (and currently unexplained) schemas: the first example nests metadata under rule and uses variables/operator: { rx: ... } plus actions: { disruptive, non-disruptive }, while the later examples use rule: { id, phase } and variable/operator: "@streq" plus actions as a list of { action: ... }. This internal inconsistency makes it hard for readers to understand what the actual CRSLang structure is. Consider standardizing the examples to one consistent schema (or explicitly explaining the different variants and when each applies).

Suggested change
id: 1
phase: 1
conditions:
- and:
- or:
- variable: ARGS:user
operator: "@streq"
pattern: "admin"
- variable: ARGS:username
operator: "@streq"
pattern: "admin"
- variable: REQUEST_LINE
operator: "@contains"
pattern: "admin"
actions:
- action: block
metadata:
id: 1
phase: 1
conditions:
- and:
- or:
- variables:
- name: ARGS:user
operator:
streq: "admin"
- variables:
- name: ARGS:username
operator:
streq: "admin"
- variables:
- name: REQUEST_LINE
operator:
contains: "admin"
actions:
disruptive: block

Copilot uses AI. Check for mistakes.

Join the conversation:
- GitHub: [github.com/coreruleset/crslang](https://github.com/coreruleset/crslang)
- OWASP Slack: [owasp.org/slack/](https://owasp.org/slack/) (#coreruleset channel)
Copy link

Copilot AI Jan 22, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The OWASP Slack link here differs from the convention used elsewhere in the blog (typically https://owasp.org/slack/invite, e.g. content/blog/2018-10-03-owasp-crs-slack.md:19). Consider switching to the /slack/invite URL for consistency and to point directly at the invitation flow.

Copilot uses AI. Check for mistakes.
Join the conversation:
- GitHub: [github.com/coreruleset/crslang](https://github.com/coreruleset/crslang)
- OWASP Slack: [owasp.org/slack/](https://owasp.org/slack/) (#coreruleset channel)
- Mailing list: Join our community discussions
Copy link

Copilot AI Jan 22, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This bullet is not actionable because it doesn’t specify which mailing list to join or provide a link (unlike the GitHub/Slack bullets above). Consider linking to the actual CRS mailing list / forum location (or remove this bullet if the mailing list is no longer used).

Suggested change
- Mailing list: Join our community discussions

Copilot uses AI. Check for mistakes.
@cloudflare-workers-and-pages
Copy link

cloudflare-workers-and-pages bot commented Jan 22, 2026

Deploying website with  Cloudflare Pages  Cloudflare Pages

Latest commit: 9628510
Status: ✅  Deploy successful!
Preview URL: https://01037d78.website-1u6.pages.dev
Branch Preview URL: https://feat-add-blogpost-crslang.website-1u6.pages.dev

View logs

@fzipi
Copy link
Member Author

fzipi commented Jan 23, 2026

@copilot open a new pull request to apply changes based on the comments in this thread

Copy link
Contributor

Copilot AI commented Jan 23, 2026

@fzipi I've opened a new pull request, #450, to work on those changes. Once the pull request is ready, I'll request review from you.

Copilot AI and others added 2 commits January 23, 2026 02:41
Co-authored-by: fzipi <3012076+fzipi@users.noreply.github.com>
Standardize CRSLang YAML schema and fix URLs in blog post
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants