@fabriziosalmi/slopless 1.10.0 → 1.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/engine/api.js +2 -2
- package/dist/index.d.ts +16 -1
- package/dist/index.js +140 -139
- package/package.json +1 -1
- package/rules/VBC-001.yaml +1 -0
- package/rules/VBC-004.yaml +1 -0
- package/rules/VBC-005.yaml +8 -1
- package/rules/VBC-007.yaml +1 -0
- package/rules/VBC-008.yaml +1 -0
- package/rules/VBC-009.yaml +1 -0
- package/rules/VBC-010.yaml +1 -0
- package/rules/VBC-011.yaml +1 -0
- package/rules/VBC-012.yaml +1 -0
- package/rules/VBC-015.yaml +1 -0
- package/rules/VBC-016.yaml +1 -0
- package/rules/VBC-017-B.yaml +1 -0
- package/rules/VBC-017.yaml +1 -0
- package/rules/VBC-018.yaml +1 -0
- package/rules/VBC-019.yaml +1 -0
- package/rules/VBC-023.yaml +1 -0
- package/rules/VBC-024.yaml +1 -0
- package/rules/VBC-027.yaml +1 -0
- package/rules/VBC-030.yaml +1 -0
- package/rules/VBC-033.yaml +1 -0
- package/rules/VBC-034.yaml +1 -0
- package/rules/VBC-035.yaml +1 -0
- package/rules/VBC-039.yaml +1 -0
- package/rules/VBC-042.yaml +1 -0
- package/rules/VBC-048.yaml +1 -0
- package/rules/VBC-049.yaml +1 -0
- package/rules/VBC-051.yaml +1 -0
- package/rules/VBC-052.yaml +1 -0
- package/rules/VBC-053.yaml +1 -0
- package/rules/VBC-054.yaml +1 -0
- package/rules/VBC-056.yaml +1 -0
- package/rules/VBC-057.yaml +1 -0
- package/rules/VBC-058.yaml +1 -0
- package/rules/VBC-063.yaml +1 -0
- package/rules/VBC-068.yaml +1 -0
- package/rules/VBC-070.yaml +1 -0
- package/rules/VBC-079.yaml +1 -0
- package/rules/VBC-080.yaml +1 -0
- package/rules/VBC-084.yaml +1 -0
- package/rules/VBC-086.yaml +1 -0
- package/rules/VBC-090.yaml +1 -0
- package/rules/VBC-096.yaml +1 -0
- package/rules/VBC-097.yaml +1 -0
- package/rules/VBC-101.yaml +1 -0
- package/rules/VBC-103.yaml +1 -0
- package/rules/VBC-104.yaml +1 -0
- package/rules/VBC-112.yaml +1 -0
- package/rules/VBC-113.yaml +1 -0
- package/rules/VBC-117.yaml +1 -0
- package/rules/VBC-123.yaml +1 -0
- package/rules/VBC-131.yaml +1 -0
- package/rules/VBC-150.yaml +1 -0
- package/rules/VBC-215.yaml +1 -0
- package/rules/VBC-334.yaml +1 -0
- package/rules/VBC-338.yaml +1 -0
- package/rules/VBC-385.yaml +1 -0
- package/rules/VBC-901.yaml +1 -0
- package/rules/VBC-902.yaml +1 -0
- package/rules/VBC-903.yaml +1 -0
- package/rules/VBC-904.yaml +1 -0
- package/rules/VBC-905.yaml +1 -0
- package/rules/VBC-906.yaml +1 -0
- package/rules/VBC-907.yaml +1 -0
- package/rules/VBC-908.yaml +1 -0
- package/rules/VBC-910.yaml +1 -0
- package/rules/VBC-911.yaml +1 -0
- package/rules/VBC-916.yaml +1 -0
- package/rules/VBC-917.yaml +1 -0
- package/rules/VBC-927.yaml +1 -0
- package/rules/VBC-928.yaml +1 -0
- package/rules/VBC-937.yaml +1 -0
- package/rules/VBC-938.yaml +1 -0
- package/rules/VBC-939.yaml +1 -0
- package/rules/VBC-940.yaml +1 -0
- package/rules/VBC-941.yaml +1 -0
- package/rules/VBC-942.yaml +1 -0
- package/rules/VBC-943.yaml +1 -0
- package/rules/VBC-944.yaml +10 -1
- package/rules/VBC-945.yaml +1 -0
- package/rules/VBC-946.yaml +1 -0
- package/rules/VBC-947.yaml +1 -0
package/rules/VBC-927.yaml
CHANGED
package/rules/VBC-928.yaml
CHANGED
package/rules/VBC-937.yaml
CHANGED
package/rules/VBC-938.yaml
CHANGED
package/rules/VBC-939.yaml
CHANGED
package/rules/VBC-940.yaml
CHANGED
package/rules/VBC-941.yaml
CHANGED
package/rules/VBC-942.yaml
CHANGED
package/rules/VBC-943.yaml
CHANGED
package/rules/VBC-944.yaml
CHANGED
|
@@ -6,8 +6,12 @@ tags:
|
|
|
6
6
|
- security
|
|
7
7
|
- ai-error
|
|
8
8
|
match:
|
|
9
|
+
# The hazard is an interpolation that decides the scheme. A literal prefix
|
|
10
|
+
# settles it first: `mailto:${addr}` and `/blog/${slug}` cannot become
|
|
11
|
+
# `javascript:` whatever the value is, and that is how a template builds
|
|
12
|
+
# every ordinary link.
|
|
9
13
|
regex: >-
|
|
10
|
-
href\s*=\s*\{[^}]*\+|href\s*=\s*[`'"]
|
|
14
|
+
href\s*=\s*\{[^}]*\+|href\s*=\s*[`'"]\s*\$\{|href\s*=\s*\{\s*[`'"]\s*\$\{
|
|
11
15
|
scan: all
|
|
12
16
|
file_types:
|
|
13
17
|
- js
|
|
@@ -15,6 +19,7 @@ match:
|
|
|
15
19
|
- jsx
|
|
16
20
|
- tsx
|
|
17
21
|
- html
|
|
22
|
+
- astro
|
|
18
23
|
message: >-
|
|
19
24
|
Dynamic href constructed with string interpolation at line {line}. If the value originates
|
|
20
25
|
from user input or an untrusted source, this is a javascript: URL injection vector. Validate
|
|
@@ -23,4 +28,8 @@ tests:
|
|
|
23
28
|
fire:
|
|
24
29
|
- const link = `href="${untrusted}"`;
|
|
25
30
|
quiet:
|
|
31
|
+
# A literal prefix settles the scheme before the value arrives.
|
|
32
|
+
- '<a href={`mailto:${contact.email}`}>write to us</a>'
|
|
33
|
+
- '<a href={`/blog/${slug}`}>read on</a>'
|
|
34
|
+
- '<a href={`https://example.org/u/${user}`}>profile</a>'
|
|
26
35
|
- <a href="/static/page">page</a>
|
package/rules/VBC-945.yaml
CHANGED
package/rules/VBC-946.yaml
CHANGED
package/rules/VBC-947.yaml
CHANGED