eslint-plugin-secure-coding 1.0.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.
Files changed (155) hide show
  1. package/AGENTS.md +196 -0
  2. package/CHANGELOG.md +105 -0
  3. package/LICENSE +23 -0
  4. package/README.md +377 -0
  5. package/package.json +80 -0
  6. package/src/index.d.ts +32 -0
  7. package/src/index.js +345 -0
  8. package/src/index.js.map +1 -0
  9. package/src/rules/security/database-injection.d.ts +13 -0
  10. package/src/rules/security/database-injection.js +407 -0
  11. package/src/rules/security/database-injection.js.map +1 -0
  12. package/src/rules/security/detect-child-process.d.ts +11 -0
  13. package/src/rules/security/detect-child-process.js +460 -0
  14. package/src/rules/security/detect-child-process.js.map +1 -0
  15. package/src/rules/security/detect-eval-with-expression.d.ts +9 -0
  16. package/src/rules/security/detect-eval-with-expression.js +393 -0
  17. package/src/rules/security/detect-eval-with-expression.js.map +1 -0
  18. package/src/rules/security/detect-non-literal-fs-filename.d.ts +7 -0
  19. package/src/rules/security/detect-non-literal-fs-filename.js +322 -0
  20. package/src/rules/security/detect-non-literal-fs-filename.js.map +1 -0
  21. package/src/rules/security/detect-non-literal-regexp.d.ts +9 -0
  22. package/src/rules/security/detect-non-literal-regexp.js +387 -0
  23. package/src/rules/security/detect-non-literal-regexp.js.map +1 -0
  24. package/src/rules/security/detect-object-injection.d.ts +11 -0
  25. package/src/rules/security/detect-object-injection.js +411 -0
  26. package/src/rules/security/detect-object-injection.js.map +1 -0
  27. package/src/rules/security/no-buffer-overread.d.ts +14 -0
  28. package/src/rules/security/no-buffer-overread.js +519 -0
  29. package/src/rules/security/no-buffer-overread.js.map +1 -0
  30. package/src/rules/security/no-clickjacking.d.ts +10 -0
  31. package/src/rules/security/no-clickjacking.js +381 -0
  32. package/src/rules/security/no-clickjacking.js.map +1 -0
  33. package/src/rules/security/no-directive-injection.d.ts +12 -0
  34. package/src/rules/security/no-directive-injection.js +446 -0
  35. package/src/rules/security/no-directive-injection.js.map +1 -0
  36. package/src/rules/security/no-document-cookie.d.ts +5 -0
  37. package/src/rules/security/no-document-cookie.js +90 -0
  38. package/src/rules/security/no-document-cookie.js.map +1 -0
  39. package/src/rules/security/no-electron-security-issues.d.ts +10 -0
  40. package/src/rules/security/no-electron-security-issues.js +421 -0
  41. package/src/rules/security/no-electron-security-issues.js.map +1 -0
  42. package/src/rules/security/no-exposed-sensitive-data.d.ts +11 -0
  43. package/src/rules/security/no-exposed-sensitive-data.js +341 -0
  44. package/src/rules/security/no-exposed-sensitive-data.js.map +1 -0
  45. package/src/rules/security/no-format-string-injection.d.ts +17 -0
  46. package/src/rules/security/no-format-string-injection.js +653 -0
  47. package/src/rules/security/no-format-string-injection.js.map +1 -0
  48. package/src/rules/security/no-graphql-injection.d.ts +12 -0
  49. package/src/rules/security/no-graphql-injection.js +410 -0
  50. package/src/rules/security/no-graphql-injection.js.map +1 -0
  51. package/src/rules/security/no-hardcoded-credentials.d.ts +26 -0
  52. package/src/rules/security/no-hardcoded-credentials.js +377 -0
  53. package/src/rules/security/no-hardcoded-credentials.js.map +1 -0
  54. package/src/rules/security/no-improper-sanitization.d.ts +12 -0
  55. package/src/rules/security/no-improper-sanitization.js +408 -0
  56. package/src/rules/security/no-improper-sanitization.js.map +1 -0
  57. package/src/rules/security/no-improper-type-validation.d.ts +10 -0
  58. package/src/rules/security/no-improper-type-validation.js +420 -0
  59. package/src/rules/security/no-improper-type-validation.js.map +1 -0
  60. package/src/rules/security/no-insecure-comparison.d.ts +7 -0
  61. package/src/rules/security/no-insecure-comparison.js +125 -0
  62. package/src/rules/security/no-insecure-comparison.js.map +1 -0
  63. package/src/rules/security/no-insecure-cookie-settings.d.ts +9 -0
  64. package/src/rules/security/no-insecure-cookie-settings.js +305 -0
  65. package/src/rules/security/no-insecure-cookie-settings.js.map +1 -0
  66. package/src/rules/security/no-insecure-jwt.d.ts +10 -0
  67. package/src/rules/security/no-insecure-jwt.js +338 -0
  68. package/src/rules/security/no-insecure-jwt.js.map +1 -0
  69. package/src/rules/security/no-insecure-redirects.d.ts +7 -0
  70. package/src/rules/security/no-insecure-redirects.js +215 -0
  71. package/src/rules/security/no-insecure-redirects.js.map +1 -0
  72. package/src/rules/security/no-insufficient-postmessage-validation.d.ts +14 -0
  73. package/src/rules/security/no-insufficient-postmessage-validation.js +390 -0
  74. package/src/rules/security/no-insufficient-postmessage-validation.js.map +1 -0
  75. package/src/rules/security/no-insufficient-random.d.ts +9 -0
  76. package/src/rules/security/no-insufficient-random.js +207 -0
  77. package/src/rules/security/no-insufficient-random.js.map +1 -0
  78. package/src/rules/security/no-ldap-injection.d.ts +10 -0
  79. package/src/rules/security/no-ldap-injection.js +449 -0
  80. package/src/rules/security/no-ldap-injection.js.map +1 -0
  81. package/src/rules/security/no-missing-authentication.d.ts +13 -0
  82. package/src/rules/security/no-missing-authentication.js +322 -0
  83. package/src/rules/security/no-missing-authentication.js.map +1 -0
  84. package/src/rules/security/no-missing-cors-check.d.ts +9 -0
  85. package/src/rules/security/no-missing-cors-check.js +449 -0
  86. package/src/rules/security/no-missing-cors-check.js.map +1 -0
  87. package/src/rules/security/no-missing-csrf-protection.d.ts +11 -0
  88. package/src/rules/security/no-missing-csrf-protection.js +183 -0
  89. package/src/rules/security/no-missing-csrf-protection.js.map +1 -0
  90. package/src/rules/security/no-missing-security-headers.d.ts +7 -0
  91. package/src/rules/security/no-missing-security-headers.js +217 -0
  92. package/src/rules/security/no-missing-security-headers.js.map +1 -0
  93. package/src/rules/security/no-privilege-escalation.d.ts +13 -0
  94. package/src/rules/security/no-privilege-escalation.js +321 -0
  95. package/src/rules/security/no-privilege-escalation.js.map +1 -0
  96. package/src/rules/security/no-redos-vulnerable-regex.d.ts +7 -0
  97. package/src/rules/security/no-redos-vulnerable-regex.js +307 -0
  98. package/src/rules/security/no-redos-vulnerable-regex.js.map +1 -0
  99. package/src/rules/security/no-sensitive-data-exposure.d.ts +11 -0
  100. package/src/rules/security/no-sensitive-data-exposure.js +251 -0
  101. package/src/rules/security/no-sensitive-data-exposure.js.map +1 -0
  102. package/src/rules/security/no-sql-injection.d.ts +10 -0
  103. package/src/rules/security/no-sql-injection.js +332 -0
  104. package/src/rules/security/no-sql-injection.js.map +1 -0
  105. package/src/rules/security/no-timing-attack.d.ts +10 -0
  106. package/src/rules/security/no-timing-attack.js +358 -0
  107. package/src/rules/security/no-timing-attack.js.map +1 -0
  108. package/src/rules/security/no-toctou-vulnerability.d.ts +7 -0
  109. package/src/rules/security/no-toctou-vulnerability.js +165 -0
  110. package/src/rules/security/no-toctou-vulnerability.js.map +1 -0
  111. package/src/rules/security/no-unchecked-loop-condition.d.ts +12 -0
  112. package/src/rules/security/no-unchecked-loop-condition.js +635 -0
  113. package/src/rules/security/no-unchecked-loop-condition.js.map +1 -0
  114. package/src/rules/security/no-unencrypted-transmission.d.ts +11 -0
  115. package/src/rules/security/no-unencrypted-transmission.js +237 -0
  116. package/src/rules/security/no-unencrypted-transmission.js.map +1 -0
  117. package/src/rules/security/no-unescaped-url-parameter.d.ts +9 -0
  118. package/src/rules/security/no-unescaped-url-parameter.js +266 -0
  119. package/src/rules/security/no-unescaped-url-parameter.js.map +1 -0
  120. package/src/rules/security/no-unlimited-resource-allocation.d.ts +12 -0
  121. package/src/rules/security/no-unlimited-resource-allocation.js +659 -0
  122. package/src/rules/security/no-unlimited-resource-allocation.js.map +1 -0
  123. package/src/rules/security/no-unsafe-deserialization.d.ts +10 -0
  124. package/src/rules/security/no-unsafe-deserialization.js +501 -0
  125. package/src/rules/security/no-unsafe-deserialization.js.map +1 -0
  126. package/src/rules/security/no-unsafe-dynamic-require.d.ts +5 -0
  127. package/src/rules/security/no-unsafe-dynamic-require.js +107 -0
  128. package/src/rules/security/no-unsafe-dynamic-require.js.map +1 -0
  129. package/src/rules/security/no-unsafe-regex-construction.d.ts +9 -0
  130. package/src/rules/security/no-unsafe-regex-construction.js +292 -0
  131. package/src/rules/security/no-unsafe-regex-construction.js.map +1 -0
  132. package/src/rules/security/no-unsanitized-html.d.ts +9 -0
  133. package/src/rules/security/no-unsanitized-html.js +347 -0
  134. package/src/rules/security/no-unsanitized-html.js.map +1 -0
  135. package/src/rules/security/no-unvalidated-user-input.d.ts +9 -0
  136. package/src/rules/security/no-unvalidated-user-input.js +418 -0
  137. package/src/rules/security/no-unvalidated-user-input.js.map +1 -0
  138. package/src/rules/security/no-weak-crypto.d.ts +11 -0
  139. package/src/rules/security/no-weak-crypto.js +350 -0
  140. package/src/rules/security/no-weak-crypto.js.map +1 -0
  141. package/src/rules/security/no-weak-password-recovery.d.ts +12 -0
  142. package/src/rules/security/no-weak-password-recovery.js +401 -0
  143. package/src/rules/security/no-weak-password-recovery.js.map +1 -0
  144. package/src/rules/security/no-xpath-injection.d.ts +10 -0
  145. package/src/rules/security/no-xpath-injection.js +487 -0
  146. package/src/rules/security/no-xpath-injection.js.map +1 -0
  147. package/src/rules/security/no-xxe-injection.d.ts +7 -0
  148. package/src/rules/security/no-xxe-injection.js +270 -0
  149. package/src/rules/security/no-xxe-injection.js.map +1 -0
  150. package/src/rules/security/no-zip-slip.d.ts +9 -0
  151. package/src/rules/security/no-zip-slip.js +446 -0
  152. package/src/rules/security/no-zip-slip.js.map +1 -0
  153. package/src/types/index.d.ts +131 -0
  154. package/src/types/index.js +18 -0
  155. package/src/types/index.js.map +1 -0
package/AGENTS.md ADDED
@@ -0,0 +1,196 @@
1
+ # eslint-plugin-secure-coding - AI Agent Guide
2
+
3
+ ## Package Overview
4
+
5
+ | Field | Value |
6
+ | --------------- | ---------------------------------------------------------------------------------------- |
7
+ | **Name** | eslint-plugin-secure-coding |
8
+ | **Version** | 1.0.0 |
9
+ | **Description** | Security-focused ESLint plugin with 48 LLM-optimized rules for detecting vulnerabilities |
10
+ | **Type** | ESLint Plugin |
11
+ | **Language** | TypeScript |
12
+ | **Node.js** | >=18.0.0 |
13
+ | **ESLint** | ^8.0.0 \|\| ^9.0.0 |
14
+ | **License** | MIT |
15
+ | **Homepage** | https://github.com/ofri-peretz/eslint#readme |
16
+ | **Repository** | https://github.com/ofri-peretz/eslint.git |
17
+ | **Directory** | packages/eslint-plugin-secure-coding |
18
+
19
+ ## Installation
20
+
21
+ ```bash
22
+ npm install --save-dev eslint-plugin-secure-coding
23
+ # or
24
+ pnpm add -D eslint-plugin-secure-coding
25
+ # or
26
+ yarn add -D eslint-plugin-secure-coding
27
+ ```
28
+
29
+ ## Quick Start
30
+
31
+ ```javascript
32
+ // eslint.config.js
33
+ import secureCoding from 'eslint-plugin-secure-coding';
34
+
35
+ export default [secureCoding.configs.recommended];
36
+ ```
37
+
38
+ ## Available Presets
39
+
40
+ | Preset | Rules | Description |
41
+ | ---------------- | --------------------------- | ----------------------------------- |
42
+ | **recommended** | 48 rules (mixed error/warn) | Balanced security for most projects |
43
+ | **strict** | 48 rules (all errors) | Maximum security enforcement |
44
+ | **owasp-top-10** | 32 rules | OWASP Top 10 2021 compliance |
45
+
46
+ ## Rule Categories
47
+
48
+ ### Injection Prevention (11 rules)
49
+
50
+ - `no-sql-injection` - CWE-89 - SQL injection via string concatenation
51
+ - `database-injection` - CWE-89 - Comprehensive SQL/NoSQL/ORM injection
52
+ - `detect-eval-with-expression` - CWE-95 - eval() with dynamic expressions
53
+ - `detect-child-process` - CWE-78 - Command injection in child_process
54
+ - `no-unsafe-dynamic-require` - CWE-95 - Dynamic require() calls
55
+ - `no-graphql-injection` - CWE-943 - GraphQL injection attacks
56
+ - `no-xxe-injection` - CWE-611 - XML External Entity injection
57
+ - `no-xpath-injection` - CWE-643 - XPath injection attacks
58
+ - `no-ldap-injection` - CWE-90 - LDAP injection attacks
59
+ - `no-directive-injection` - CWE-94 - Template directive injection
60
+ - `no-format-string-injection` - CWE-134 - Format string vulnerabilities
61
+
62
+ ### Path & File Security (3 rules)
63
+
64
+ - `detect-non-literal-fs-filename` - CWE-22 - Path traversal in fs operations
65
+ - `no-zip-slip` - CWE-22 - Zip slip vulnerabilities
66
+ - `no-toctou-vulnerability` - CWE-367 - TOCTOU race conditions
67
+
68
+ ### Regex Security (3 rules)
69
+
70
+ - `detect-non-literal-regexp` - CWE-400 - ReDoS in RegExp construction
71
+ - `no-redos-vulnerable-regex` - CWE-1333 - ReDoS-vulnerable patterns
72
+ - `no-unsafe-regex-construction` - CWE-400 - Unsafe regex from user input
73
+
74
+ ### Object & Prototype (2 rules)
75
+
76
+ - `detect-object-injection` - CWE-915 - Prototype pollution
77
+ - `no-unsafe-deserialization` - CWE-502 - Unsafe deserialization
78
+
79
+ ### Cryptography (6 rules)
80
+
81
+ - `no-hardcoded-credentials` - CWE-798 - Hardcoded passwords/keys
82
+ - `no-weak-crypto` - CWE-327 - Weak algorithms (MD5, SHA1)
83
+ - `no-insufficient-random` - CWE-330 - Math.random() for security
84
+ - `no-timing-attack` - CWE-208 - Timing attack vulnerabilities
85
+ - `no-insecure-comparison` - CWE-697 - Insecure string comparison
86
+ - `no-insecure-jwt` - CWE-347 - JWT security issues
87
+
88
+ ### Input Validation & XSS (5 rules)
89
+
90
+ - `no-unvalidated-user-input` - CWE-20 - Unvalidated user input
91
+ - `no-unsanitized-html` - CWE-79 - XSS via innerHTML
92
+ - `no-unescaped-url-parameter` - CWE-79 - XSS via URL parameters
93
+ - `no-improper-sanitization` - CWE-116 - Improper output encoding
94
+ - `no-improper-type-validation` - CWE-20 - Type confusion vulnerabilities
95
+
96
+ ### Authentication & Authorization (3 rules)
97
+
98
+ - `no-missing-authentication` - CWE-306 - Missing auth checks
99
+ - `no-privilege-escalation` - CWE-269 - Privilege escalation
100
+ - `no-weak-password-recovery` - CWE-640 - Insecure password reset
101
+
102
+ ### Session & Cookies (3 rules)
103
+
104
+ - `no-insecure-cookie-settings` - CWE-614 - Missing Secure/HttpOnly
105
+ - `no-missing-csrf-protection` - CWE-352 - Missing CSRF tokens
106
+ - `no-document-cookie` - CWE-565 - Direct cookie manipulation
107
+
108
+ ### Network & Headers (5 rules)
109
+
110
+ - `no-missing-cors-check` - CWE-942 - Missing CORS validation
111
+ - `no-missing-security-headers` - CWE-693 - Missing security headers
112
+ - `no-insecure-redirects` - CWE-601 - Open redirect vulnerabilities
113
+ - `no-unencrypted-transmission` - CWE-319 - HTTP instead of HTTPS
114
+ - `no-clickjacking` - CWE-1021 - Clickjacking vulnerabilities
115
+
116
+ ### Data Exposure (2 rules)
117
+
118
+ - `no-exposed-sensitive-data` - CWE-200 - Sensitive data in responses
119
+ - `no-sensitive-data-exposure` - CWE-532 - Sensitive data in logs
120
+
121
+ ### Buffer & Memory (1 rule)
122
+
123
+ - `no-buffer-overread` - CWE-126 - Buffer over-read
124
+
125
+ ### DoS & Resource (2 rules)
126
+
127
+ - `no-unlimited-resource-allocation` - CWE-770 - Unbounded allocations
128
+ - `no-unchecked-loop-condition` - CWE-835 - Infinite loop conditions
129
+
130
+ ### Platform-Specific (2 rules)
131
+
132
+ - `no-electron-security-issues` - CWE-693 - Electron security misconfig
133
+ - `no-insufficient-postmessage-validation` - CWE-346 - postMessage origin issues
134
+
135
+ ## Error Message Format
136
+
137
+ All rules produce LLM-optimized 2-line structured messages:
138
+
139
+ ```
140
+ Line 1: [Icon] [CWE] [OWASP] [CVSS] | [Description] | [SEVERITY] [Compliance]
141
+ Line 2: Fix: [instruction] | [doc-link]
142
+ ```
143
+
144
+ **Example:**
145
+
146
+ ```
147
+ 🔒 CWE-89 OWASP:A03-Injection CVSS:9.8 | SQL Injection detected | CRITICAL [SOC2,PCI-DSS,HIPAA]
148
+ Fix: Use parameterized query: db.query("SELECT * FROM users WHERE id = ?", [userId]) | https://owasp.org/...
149
+ ```
150
+
151
+ ## ESLint MCP Integration
152
+
153
+ Configure in `.cursor/mcp.json`:
154
+
155
+ ```json
156
+ {
157
+ "mcpServers": {
158
+ "eslint": {
159
+ "command": "npx",
160
+ "args": ["@eslint/mcp@latest"]
161
+ }
162
+ }
163
+ }
164
+ ```
165
+
166
+ ## Key Features
167
+
168
+ | Feature | Value |
169
+ | -------------------- | -------------------------------- |
170
+ | **Total Rules** | 48 |
171
+ | **CWE Coverage** | 100% (all rules include CWE IDs) |
172
+ | **OWASP Top 10** | Full 2021 coverage |
173
+ | **AI Auto-Fix Rate** | 60-80% |
174
+ | **Performance** | <10ms overhead per file |
175
+ | **Privacy** | 100% local, no cloud calls |
176
+
177
+ ## FAQ
178
+
179
+ **Q: How do I enable all security rules?**
180
+ A: Use `secureCoding.configs.strict`
181
+
182
+ **Q: How do I configure a specific rule?**
183
+ A: `'secure-coding/no-sql-injection': ['error', { strategy: 'parameterize' }]`
184
+
185
+ **Q: How do I disable a rule inline?**
186
+ A: `// eslint-disable-next-line secure-coding/no-sql-injection`
187
+
188
+ **Q: Is it compatible with TypeScript?**
189
+ A: Yes, native TypeScript support.
190
+
191
+ **Q: Does it work with ESLint 9 flat config?**
192
+ A: Yes, fully compatible.
193
+
194
+ ## License
195
+
196
+ MIT © Ofri Peretz
package/CHANGELOG.md ADDED
@@ -0,0 +1,105 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [1.0.0] - 2025-01-01
9
+
10
+ ### Added
11
+
12
+ - Initial release with 48 security-focused ESLint rules
13
+ - LLM-optimized error messages with [CWE](https://cwe.mitre.org/) references and [OWASP](https://owasp.org/Top10/) mapping
14
+ - Three preset configurations: `recommended`, `strict`, `owasp-top-10`
15
+ - Full ESLint 9 flat config support
16
+ - TypeScript support
17
+
18
+ ### Security Rules
19
+
20
+ #### Injection Prevention (11 rules)
21
+
22
+ - `no-sql-injection` - SQL injection prevention
23
+ - `database-injection` - Comprehensive SQL/NoSQL/ORM injection
24
+ - `detect-eval-with-expression` - Dynamic eval() detection
25
+ - `detect-child-process` - Command injection detection
26
+ - `no-unsafe-dynamic-require` - Dynamic require() prevention
27
+ - `no-graphql-injection` - GraphQL injection prevention
28
+ - `no-xxe-injection` - XXE injection prevention
29
+ - `no-xpath-injection` - XPath injection prevention
30
+ - `no-ldap-injection` - LDAP injection prevention
31
+ - `no-directive-injection` - Template injection prevention
32
+ - `no-format-string-injection` - Format string injection prevention
33
+
34
+ #### Path & File Security (3 rules)
35
+
36
+ - `detect-non-literal-fs-filename` - Path traversal detection
37
+ - `no-zip-slip` - Zip slip vulnerability prevention
38
+ - `no-toctou-vulnerability` - TOCTOU race condition detection
39
+
40
+ #### Regex Security (3 rules)
41
+
42
+ - `detect-non-literal-regexp` - ReDoS detection in RegExp
43
+ - `no-redos-vulnerable-regex` - ReDoS pattern detection
44
+ - `no-unsafe-regex-construction` - Unsafe regex prevention
45
+
46
+ #### Object & Prototype (2 rules)
47
+
48
+ - `detect-object-injection` - Prototype pollution detection
49
+ - `no-unsafe-deserialization` - Unsafe deserialization prevention
50
+
51
+ #### Cryptography (6 rules)
52
+
53
+ - `no-hardcoded-credentials` - Hardcoded secrets detection
54
+ - `no-weak-crypto` - Weak algorithm detection
55
+ - `no-insufficient-random` - Weak randomness detection
56
+ - `no-timing-attack` - Timing attack prevention
57
+ - `no-insecure-comparison` - Insecure comparison detection
58
+ - `no-insecure-jwt` - JWT security issues detection
59
+
60
+ #### Input Validation & XSS (5 rules)
61
+
62
+ - `no-unvalidated-user-input` - Input validation enforcement
63
+ - `no-unsanitized-html` - XSS via innerHTML prevention
64
+ - `no-unescaped-url-parameter` - URL parameter XSS prevention
65
+ - `no-improper-sanitization` - Output encoding enforcement
66
+ - `no-improper-type-validation` - Type confusion prevention
67
+
68
+ #### Authentication & Authorization (3 rules)
69
+
70
+ - `no-missing-authentication` - Auth check enforcement
71
+ - `no-privilege-escalation` - Privilege escalation detection
72
+ - `no-weak-password-recovery` - Secure password reset enforcement
73
+
74
+ #### Session & Cookies (3 rules)
75
+
76
+ - `no-insecure-cookie-settings` - Cookie security enforcement
77
+ - `no-missing-csrf-protection` - CSRF protection enforcement
78
+ - `no-document-cookie` - Direct cookie access detection
79
+
80
+ #### Network & Headers (5 rules)
81
+
82
+ - `no-missing-cors-check` - CORS validation enforcement
83
+ - `no-missing-security-headers` - Security header enforcement
84
+ - `no-insecure-redirects` - Open redirect prevention
85
+ - `no-unencrypted-transmission` - HTTPS enforcement
86
+ - `no-clickjacking` - Clickjacking prevention
87
+
88
+ #### Data Exposure (2 rules)
89
+
90
+ - `no-exposed-sensitive-data` - Data exposure prevention
91
+ - `no-sensitive-data-exposure` - Log sanitization enforcement
92
+
93
+ #### Buffer & Memory (1 rule)
94
+
95
+ - `no-buffer-overread` - Buffer safety enforcement
96
+
97
+ #### DoS & Resource (2 rules)
98
+
99
+ - `no-unlimited-resource-allocation` - Resource limit enforcement
100
+ - `no-unchecked-loop-condition` - Infinite loop prevention
101
+
102
+ #### Platform-Specific (2 rules)
103
+
104
+ - `no-electron-security-issues` - Electron security enforcement
105
+ - `no-insufficient-postmessage-validation` - postMessage validation
package/LICENSE ADDED
@@ -0,0 +1,23 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Ofri Peretz
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
22
+
23
+