eslint-plugin-secure-coding 2.3.2 → 2.3.3

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 (361) hide show
  1. package/README.md +1 -0
  2. package/package.json +3 -10
  3. package/src/index.ts +605 -0
  4. package/src/rules/__tests__/integration-demo.test.ts +290 -0
  5. package/src/rules/__tests__/integration-llm.test.ts +89 -0
  6. package/src/rules/database-injection/database-injection.test.ts +456 -0
  7. package/src/rules/database-injection/index.ts +488 -0
  8. package/src/rules/detect-child-process/detect-child-process.test.ts +207 -0
  9. package/src/rules/detect-child-process/index.ts +634 -0
  10. package/src/rules/detect-eval-with-expression/detect-eval-with-expression.test.ts +416 -0
  11. package/src/rules/detect-eval-with-expression/index.ts +463 -0
  12. package/src/rules/detect-mixed-content/detect-mixed-content.test.ts +28 -0
  13. package/src/rules/detect-mixed-content/index.ts +52 -0
  14. package/src/rules/detect-non-literal-fs-filename/detect-non-literal-fs-filename.test.ts +269 -0
  15. package/src/rules/detect-non-literal-fs-filename/index.ts +551 -0
  16. package/src/rules/detect-non-literal-regexp/detect-non-literal-regexp.test.ts +189 -0
  17. package/src/rules/detect-non-literal-regexp/index.ts +490 -0
  18. package/src/rules/detect-object-injection/detect-object-injection.test.ts +440 -0
  19. package/src/rules/detect-object-injection/index.ts +674 -0
  20. package/src/rules/detect-suspicious-dependencies/detect-suspicious-dependencies.test.ts +32 -0
  21. package/src/rules/detect-suspicious-dependencies/index.ts +84 -0
  22. package/src/rules/detect-weak-password-validation/detect-weak-password-validation.test.ts +31 -0
  23. package/src/rules/detect-weak-password-validation/index.ts +68 -0
  24. package/src/rules/no-allow-arbitrary-loads/index.ts +54 -0
  25. package/src/rules/no-allow-arbitrary-loads/no-allow-arbitrary-loads.test.ts +28 -0
  26. package/src/rules/no-arbitrary-file-access/index.ts +238 -0
  27. package/src/rules/no-arbitrary-file-access/no-arbitrary-file-access.test.ts +119 -0
  28. package/src/rules/no-buffer-overread/index.ts +724 -0
  29. package/src/rules/no-buffer-overread/no-buffer-overread.test.ts +313 -0
  30. package/src/rules/no-clickjacking/index.ts +481 -0
  31. package/src/rules/no-clickjacking/no-clickjacking.test.ts +253 -0
  32. package/src/rules/no-client-side-auth-logic/index.ts +81 -0
  33. package/src/rules/no-client-side-auth-logic/no-client-side-auth-logic.test.ts +33 -0
  34. package/src/rules/no-credentials-in-query-params/index.ts +69 -0
  35. package/src/rules/no-credentials-in-query-params/no-credentials-in-query-params.test.ts +33 -0
  36. package/src/rules/no-credentials-in-storage-api/index.ts +64 -0
  37. package/src/rules/no-credentials-in-storage-api/no-credentials-in-storage-api.test.ts +31 -0
  38. package/src/rules/no-data-in-temp-storage/index.ts +75 -0
  39. package/src/rules/no-data-in-temp-storage/no-data-in-temp-storage.test.ts +33 -0
  40. package/src/rules/no-debug-code-in-production/index.ts +59 -0
  41. package/src/rules/no-debug-code-in-production/no-debug-code-in-production.test.ts +26 -0
  42. package/src/rules/no-directive-injection/index.ts +551 -0
  43. package/src/rules/no-directive-injection/no-directive-injection.test.ts +305 -0
  44. package/src/rules/no-disabled-certificate-validation/index.ts +72 -0
  45. package/src/rules/no-disabled-certificate-validation/no-disabled-certificate-validation.test.ts +33 -0
  46. package/src/rules/no-document-cookie/index.ts +113 -0
  47. package/src/rules/no-document-cookie/no-document-cookie.test.ts +382 -0
  48. package/src/rules/no-dynamic-dependency-loading/index.ts +60 -0
  49. package/src/rules/no-dynamic-dependency-loading/no-dynamic-dependency-loading.test.ts +27 -0
  50. package/src/rules/no-electron-security-issues/index.ts +504 -0
  51. package/src/rules/no-electron-security-issues/no-electron-security-issues.test.ts +324 -0
  52. package/src/rules/no-exposed-debug-endpoints/index.ts +73 -0
  53. package/src/rules/no-exposed-debug-endpoints/no-exposed-debug-endpoints.test.ts +40 -0
  54. package/src/rules/no-exposed-sensitive-data/index.ts +428 -0
  55. package/src/rules/no-exposed-sensitive-data/no-exposed-sensitive-data.test.ts +75 -0
  56. package/src/rules/no-format-string-injection/index.ts +801 -0
  57. package/src/rules/no-format-string-injection/no-format-string-injection.test.ts +437 -0
  58. package/src/rules/no-graphql-injection/index.ts +508 -0
  59. package/src/rules/no-graphql-injection/no-graphql-injection.test.ts +371 -0
  60. package/src/rules/no-hardcoded-credentials/index.ts +478 -0
  61. package/src/rules/no-hardcoded-credentials/no-hardcoded-credentials.test.ts +639 -0
  62. package/src/rules/no-hardcoded-session-tokens/index.ts +69 -0
  63. package/src/rules/no-hardcoded-session-tokens/no-hardcoded-session-tokens.test.ts +42 -0
  64. package/src/rules/no-http-urls/index.ts +131 -0
  65. package/src/rules/no-http-urls/no-http-urls.test.ts +60 -0
  66. package/src/rules/no-improper-sanitization/index.ts +502 -0
  67. package/src/rules/no-improper-sanitization/no-improper-sanitization.test.ts +156 -0
  68. package/src/rules/no-improper-type-validation/index.ts +572 -0
  69. package/src/rules/no-improper-type-validation/no-improper-type-validation.test.ts +372 -0
  70. package/src/rules/no-insecure-comparison/index.ts +232 -0
  71. package/src/rules/no-insecure-comparison/no-insecure-comparison.test.ts +218 -0
  72. package/src/rules/no-insecure-cookie-settings/index.ts +391 -0
  73. package/src/rules/no-insecure-cookie-settings/no-insecure-cookie-settings.test.ts +409 -0
  74. package/src/rules/no-insecure-jwt/index.ts +467 -0
  75. package/src/rules/no-insecure-jwt/no-insecure-jwt.test.ts +259 -0
  76. package/src/rules/no-insecure-redirects/index.ts +267 -0
  77. package/src/rules/no-insecure-redirects/no-insecure-redirects.test.ts +108 -0
  78. package/src/rules/no-insecure-websocket/index.ts +72 -0
  79. package/src/rules/no-insecure-websocket/no-insecure-websocket.test.ts +42 -0
  80. package/src/rules/no-insufficient-postmessage-validation/index.ts +497 -0
  81. package/src/rules/no-insufficient-postmessage-validation/no-insufficient-postmessage-validation.test.ts +360 -0
  82. package/src/rules/no-insufficient-random/index.ts +288 -0
  83. package/src/rules/no-insufficient-random/no-insufficient-random.test.ts +246 -0
  84. package/src/rules/no-ldap-injection/index.ts +547 -0
  85. package/src/rules/no-ldap-injection/no-ldap-injection.test.ts +317 -0
  86. package/src/rules/no-missing-authentication/index.ts +408 -0
  87. package/src/rules/no-missing-authentication/no-missing-authentication.test.ts +350 -0
  88. package/src/rules/no-missing-cors-check/index.ts +453 -0
  89. package/src/rules/no-missing-cors-check/no-missing-cors-check.test.ts +392 -0
  90. package/src/rules/no-missing-csrf-protection/index.ts +229 -0
  91. package/src/rules/no-missing-csrf-protection/no-missing-csrf-protection.test.ts +222 -0
  92. package/src/rules/no-missing-security-headers/index.ts +266 -0
  93. package/src/rules/no-missing-security-headers/no-missing-security-headers.test.ts +98 -0
  94. package/src/rules/no-password-in-url/index.ts +64 -0
  95. package/src/rules/no-password-in-url/no-password-in-url.test.ts +27 -0
  96. package/src/rules/no-permissive-cors/index.ts +78 -0
  97. package/src/rules/no-permissive-cors/no-permissive-cors.test.ts +28 -0
  98. package/src/rules/no-pii-in-logs/index.ts +83 -0
  99. package/src/rules/no-pii-in-logs/no-pii-in-logs.test.ts +26 -0
  100. package/src/rules/no-postmessage-origin-wildcard/index.ts +67 -0
  101. package/src/rules/no-postmessage-origin-wildcard/no-postmessage-origin-wildcard.test.ts +27 -0
  102. package/src/rules/no-privilege-escalation/index.ts +403 -0
  103. package/src/rules/no-privilege-escalation/no-privilege-escalation.test.ts +306 -0
  104. package/src/rules/no-redos-vulnerable-regex/index.ts +379 -0
  105. package/src/rules/no-redos-vulnerable-regex/no-redos-vulnerable-regex.test.ts +83 -0
  106. package/src/rules/no-sensitive-data-exposure/index.ts +294 -0
  107. package/src/rules/no-sensitive-data-exposure/no-sensitive-data-exposure.test.ts +262 -0
  108. package/src/rules/no-sensitive-data-in-analytics/index.ts +73 -0
  109. package/src/rules/no-sensitive-data-in-analytics/no-sensitive-data-in-analytics.test.ts +42 -0
  110. package/src/rules/no-sensitive-data-in-cache/index.ts +59 -0
  111. package/src/rules/no-sensitive-data-in-cache/no-sensitive-data-in-cache.test.ts +32 -0
  112. package/src/rules/no-sql-injection/index.ts +424 -0
  113. package/src/rules/no-sql-injection/no-sql-injection.test.ts +303 -0
  114. package/src/rules/no-timing-attack/index.ts +552 -0
  115. package/src/rules/no-timing-attack/no-timing-attack.test.ts +348 -0
  116. package/src/rules/no-toctou-vulnerability/index.ts +250 -0
  117. package/src/rules/no-toctou-vulnerability/no-toctou-vulnerability.test.ts +60 -0
  118. package/src/rules/no-tracking-without-consent/index.ts +78 -0
  119. package/src/rules/no-tracking-without-consent/no-tracking-without-consent.test.ts +34 -0
  120. package/src/rules/no-unchecked-loop-condition/index.ts +781 -0
  121. package/src/rules/no-unchecked-loop-condition/no-unchecked-loop-condition.test.ts +459 -0
  122. package/src/rules/no-unencrypted-local-storage/index.ts +73 -0
  123. package/src/rules/no-unencrypted-local-storage/no-unencrypted-local-storage.test.ts +41 -0
  124. package/src/rules/no-unencrypted-transmission/index.ts +296 -0
  125. package/src/rules/no-unencrypted-transmission/no-unencrypted-transmission.test.ts +287 -0
  126. package/src/rules/no-unescaped-url-parameter/index.ts +424 -0
  127. package/src/rules/no-unescaped-url-parameter/no-unescaped-url-parameter.test.ts +263 -0
  128. package/src/rules/no-unlimited-resource-allocation/index.ts +767 -0
  129. package/src/rules/no-unlimited-resource-allocation/no-unlimited-resource-allocation.test.ts +544 -0
  130. package/src/rules/no-unsafe-deserialization/index.ts +593 -0
  131. package/src/rules/no-unsafe-deserialization/no-unsafe-deserialization.test.ts +310 -0
  132. package/src/rules/no-unsafe-dynamic-require/index.ts +125 -0
  133. package/src/rules/no-unsafe-dynamic-require/no-unsafe-dynamic-require.test.ts +151 -0
  134. package/src/rules/no-unsafe-regex-construction/index.ts +370 -0
  135. package/src/rules/no-unsafe-regex-construction/no-unsafe-regex-construction.test.ts +181 -0
  136. package/src/rules/no-unsanitized-html/index.ts +400 -0
  137. package/src/rules/no-unsanitized-html/no-unsanitized-html.test.ts +488 -0
  138. package/src/rules/no-unvalidated-deeplinks/index.ts +73 -0
  139. package/src/rules/no-unvalidated-deeplinks/no-unvalidated-deeplinks.test.ts +29 -0
  140. package/src/rules/no-unvalidated-user-input/index.ts +498 -0
  141. package/src/rules/no-unvalidated-user-input/no-unvalidated-user-input.test.ts +463 -0
  142. package/src/rules/no-verbose-error-messages/index.ts +83 -0
  143. package/src/rules/no-verbose-error-messages/no-verbose-error-messages.test.ts +34 -0
  144. package/src/rules/no-weak-crypto/index.ts +447 -0
  145. package/src/rules/no-weak-crypto/no-weak-crypto.test.ts +297 -0
  146. package/src/rules/no-weak-password-recovery/index.ts +509 -0
  147. package/src/rules/no-weak-password-recovery/no-weak-password-recovery.test.ts +184 -0
  148. package/src/rules/no-xpath-injection/index.ts +596 -0
  149. package/src/rules/no-xpath-injection/no-xpath-injection.test.ts +405 -0
  150. package/src/rules/no-xxe-injection/index.ts +342 -0
  151. package/src/rules/no-xxe-injection/no-xxe-injection.test.ts +122 -0
  152. package/src/rules/no-zip-slip/index.ts +526 -0
  153. package/src/rules/no-zip-slip/no-zip-slip.test.ts +305 -0
  154. package/src/rules/require-backend-authorization/index.ts +71 -0
  155. package/src/rules/require-backend-authorization/require-backend-authorization.test.ts +31 -0
  156. package/src/rules/require-code-minification/index.ts +54 -0
  157. package/src/rules/require-code-minification/require-code-minification.test.ts +30 -0
  158. package/src/rules/require-csp-headers/index.ts +74 -0
  159. package/src/rules/require-csp-headers/require-csp-headers.test.ts +34 -0
  160. package/src/rules/require-data-minimization/index.ts +65 -0
  161. package/src/rules/require-data-minimization/require-data-minimization.test.ts +31 -0
  162. package/src/rules/require-dependency-integrity/index.ts +78 -0
  163. package/src/rules/require-dependency-integrity/require-dependency-integrity.test.ts +44 -0
  164. package/src/rules/require-https-only/index.ts +75 -0
  165. package/src/rules/require-https-only/require-https-only.test.ts +26 -0
  166. package/src/rules/require-mime-type-validation/index.ts +77 -0
  167. package/src/rules/require-mime-type-validation/require-mime-type-validation.test.ts +32 -0
  168. package/src/rules/require-network-timeout/index.ts +58 -0
  169. package/src/rules/require-network-timeout/require-network-timeout.test.ts +26 -0
  170. package/src/rules/require-package-lock/index.ts +75 -0
  171. package/src/rules/require-package-lock/require-package-lock.test.ts +27 -0
  172. package/src/rules/require-secure-credential-storage/index.ts +60 -0
  173. package/src/rules/require-secure-credential-storage/require-secure-credential-storage.test.ts +26 -0
  174. package/src/rules/require-secure-defaults/index.ts +54 -0
  175. package/src/rules/require-secure-defaults/require-secure-defaults.test.ts +26 -0
  176. package/src/rules/require-secure-deletion/index.ts +52 -0
  177. package/src/rules/require-secure-deletion/require-secure-deletion.test.ts +29 -0
  178. package/src/rules/require-storage-encryption/index.ts +60 -0
  179. package/src/rules/require-storage-encryption/require-storage-encryption.test.ts +26 -0
  180. package/src/rules/require-url-validation/index.ts +85 -0
  181. package/src/rules/require-url-validation/require-url-validation.test.ts +32 -0
  182. package/src/types/{index.d.ts → index.ts} +157 -53
  183. package/src/index.d.ts +0 -32
  184. package/src/index.js +0 -465
  185. package/src/rules/database-injection/index.d.ts +0 -13
  186. package/src/rules/database-injection/index.js +0 -406
  187. package/src/rules/detect-child-process/index.d.ts +0 -11
  188. package/src/rules/detect-child-process/index.js +0 -529
  189. package/src/rules/detect-eval-with-expression/index.d.ts +0 -9
  190. package/src/rules/detect-eval-with-expression/index.js +0 -392
  191. package/src/rules/detect-mixed-content/index.d.ts +0 -8
  192. package/src/rules/detect-mixed-content/index.js +0 -44
  193. package/src/rules/detect-non-literal-fs-filename/index.d.ts +0 -7
  194. package/src/rules/detect-non-literal-fs-filename/index.js +0 -454
  195. package/src/rules/detect-non-literal-regexp/index.d.ts +0 -9
  196. package/src/rules/detect-non-literal-regexp/index.js +0 -403
  197. package/src/rules/detect-object-injection/index.d.ts +0 -11
  198. package/src/rules/detect-object-injection/index.js +0 -560
  199. package/src/rules/detect-suspicious-dependencies/index.d.ts +0 -8
  200. package/src/rules/detect-suspicious-dependencies/index.js +0 -71
  201. package/src/rules/detect-weak-password-validation/index.d.ts +0 -6
  202. package/src/rules/detect-weak-password-validation/index.js +0 -58
  203. package/src/rules/no-allow-arbitrary-loads/index.d.ts +0 -8
  204. package/src/rules/no-allow-arbitrary-loads/index.js +0 -47
  205. package/src/rules/no-arbitrary-file-access/index.d.ts +0 -13
  206. package/src/rules/no-arbitrary-file-access/index.js +0 -195
  207. package/src/rules/no-buffer-overread/index.d.ts +0 -29
  208. package/src/rules/no-buffer-overread/index.js +0 -606
  209. package/src/rules/no-clickjacking/index.d.ts +0 -10
  210. package/src/rules/no-clickjacking/index.js +0 -396
  211. package/src/rules/no-client-side-auth-logic/index.d.ts +0 -6
  212. package/src/rules/no-client-side-auth-logic/index.js +0 -69
  213. package/src/rules/no-credentials-in-query-params/index.d.ts +0 -8
  214. package/src/rules/no-credentials-in-query-params/index.js +0 -57
  215. package/src/rules/no-credentials-in-storage-api/index.d.ts +0 -6
  216. package/src/rules/no-credentials-in-storage-api/index.js +0 -54
  217. package/src/rules/no-data-in-temp-storage/index.d.ts +0 -6
  218. package/src/rules/no-data-in-temp-storage/index.js +0 -64
  219. package/src/rules/no-debug-code-in-production/index.d.ts +0 -8
  220. package/src/rules/no-debug-code-in-production/index.js +0 -51
  221. package/src/rules/no-directive-injection/index.d.ts +0 -12
  222. package/src/rules/no-directive-injection/index.js +0 -457
  223. package/src/rules/no-disabled-certificate-validation/index.d.ts +0 -6
  224. package/src/rules/no-disabled-certificate-validation/index.js +0 -61
  225. package/src/rules/no-document-cookie/index.d.ts +0 -5
  226. package/src/rules/no-document-cookie/index.js +0 -89
  227. package/src/rules/no-dynamic-dependency-loading/index.d.ts +0 -8
  228. package/src/rules/no-dynamic-dependency-loading/index.js +0 -51
  229. package/src/rules/no-electron-security-issues/index.d.ts +0 -10
  230. package/src/rules/no-electron-security-issues/index.js +0 -423
  231. package/src/rules/no-exposed-debug-endpoints/index.d.ts +0 -6
  232. package/src/rules/no-exposed-debug-endpoints/index.js +0 -62
  233. package/src/rules/no-exposed-sensitive-data/index.d.ts +0 -11
  234. package/src/rules/no-exposed-sensitive-data/index.js +0 -340
  235. package/src/rules/no-format-string-injection/index.d.ts +0 -17
  236. package/src/rules/no-format-string-injection/index.js +0 -660
  237. package/src/rules/no-graphql-injection/index.d.ts +0 -12
  238. package/src/rules/no-graphql-injection/index.js +0 -411
  239. package/src/rules/no-hardcoded-credentials/index.d.ts +0 -26
  240. package/src/rules/no-hardcoded-credentials/index.js +0 -376
  241. package/src/rules/no-hardcoded-session-tokens/index.d.ts +0 -6
  242. package/src/rules/no-hardcoded-session-tokens/index.js +0 -59
  243. package/src/rules/no-http-urls/index.d.ts +0 -12
  244. package/src/rules/no-http-urls/index.js +0 -114
  245. package/src/rules/no-improper-sanitization/index.d.ts +0 -12
  246. package/src/rules/no-improper-sanitization/index.js +0 -411
  247. package/src/rules/no-improper-type-validation/index.d.ts +0 -10
  248. package/src/rules/no-improper-type-validation/index.js +0 -475
  249. package/src/rules/no-insecure-comparison/index.d.ts +0 -7
  250. package/src/rules/no-insecure-comparison/index.js +0 -193
  251. package/src/rules/no-insecure-cookie-settings/index.d.ts +0 -9
  252. package/src/rules/no-insecure-cookie-settings/index.js +0 -306
  253. package/src/rules/no-insecure-jwt/index.d.ts +0 -10
  254. package/src/rules/no-insecure-jwt/index.js +0 -380
  255. package/src/rules/no-insecure-redirects/index.d.ts +0 -7
  256. package/src/rules/no-insecure-redirects/index.js +0 -216
  257. package/src/rules/no-insecure-websocket/index.d.ts +0 -6
  258. package/src/rules/no-insecure-websocket/index.js +0 -61
  259. package/src/rules/no-insufficient-postmessage-validation/index.d.ts +0 -14
  260. package/src/rules/no-insufficient-postmessage-validation/index.js +0 -392
  261. package/src/rules/no-insufficient-random/index.d.ts +0 -9
  262. package/src/rules/no-insufficient-random/index.js +0 -208
  263. package/src/rules/no-ldap-injection/index.d.ts +0 -10
  264. package/src/rules/no-ldap-injection/index.js +0 -455
  265. package/src/rules/no-missing-authentication/index.d.ts +0 -13
  266. package/src/rules/no-missing-authentication/index.js +0 -333
  267. package/src/rules/no-missing-cors-check/index.d.ts +0 -9
  268. package/src/rules/no-missing-cors-check/index.js +0 -399
  269. package/src/rules/no-missing-csrf-protection/index.d.ts +0 -11
  270. package/src/rules/no-missing-csrf-protection/index.js +0 -180
  271. package/src/rules/no-missing-security-headers/index.d.ts +0 -7
  272. package/src/rules/no-missing-security-headers/index.js +0 -218
  273. package/src/rules/no-password-in-url/index.d.ts +0 -8
  274. package/src/rules/no-password-in-url/index.js +0 -54
  275. package/src/rules/no-permissive-cors/index.d.ts +0 -8
  276. package/src/rules/no-permissive-cors/index.js +0 -65
  277. package/src/rules/no-pii-in-logs/index.d.ts +0 -8
  278. package/src/rules/no-pii-in-logs/index.js +0 -70
  279. package/src/rules/no-postmessage-origin-wildcard/index.d.ts +0 -8
  280. package/src/rules/no-postmessage-origin-wildcard/index.js +0 -56
  281. package/src/rules/no-privilege-escalation/index.d.ts +0 -13
  282. package/src/rules/no-privilege-escalation/index.js +0 -321
  283. package/src/rules/no-redos-vulnerable-regex/index.d.ts +0 -7
  284. package/src/rules/no-redos-vulnerable-regex/index.js +0 -306
  285. package/src/rules/no-sensitive-data-exposure/index.d.ts +0 -11
  286. package/src/rules/no-sensitive-data-exposure/index.js +0 -250
  287. package/src/rules/no-sensitive-data-in-analytics/index.d.ts +0 -8
  288. package/src/rules/no-sensitive-data-in-analytics/index.js +0 -62
  289. package/src/rules/no-sensitive-data-in-cache/index.d.ts +0 -8
  290. package/src/rules/no-sensitive-data-in-cache/index.js +0 -52
  291. package/src/rules/no-sql-injection/index.d.ts +0 -10
  292. package/src/rules/no-sql-injection/index.js +0 -335
  293. package/src/rules/no-timing-attack/index.d.ts +0 -10
  294. package/src/rules/no-timing-attack/index.js +0 -447
  295. package/src/rules/no-toctou-vulnerability/index.d.ts +0 -7
  296. package/src/rules/no-toctou-vulnerability/index.js +0 -208
  297. package/src/rules/no-tracking-without-consent/index.d.ts +0 -6
  298. package/src/rules/no-tracking-without-consent/index.js +0 -67
  299. package/src/rules/no-unchecked-loop-condition/index.d.ts +0 -12
  300. package/src/rules/no-unchecked-loop-condition/index.js +0 -646
  301. package/src/rules/no-unencrypted-local-storage/index.d.ts +0 -8
  302. package/src/rules/no-unencrypted-local-storage/index.js +0 -61
  303. package/src/rules/no-unencrypted-transmission/index.d.ts +0 -11
  304. package/src/rules/no-unencrypted-transmission/index.js +0 -236
  305. package/src/rules/no-unescaped-url-parameter/index.d.ts +0 -9
  306. package/src/rules/no-unescaped-url-parameter/index.js +0 -355
  307. package/src/rules/no-unlimited-resource-allocation/index.d.ts +0 -12
  308. package/src/rules/no-unlimited-resource-allocation/index.js +0 -643
  309. package/src/rules/no-unsafe-deserialization/index.d.ts +0 -10
  310. package/src/rules/no-unsafe-deserialization/index.js +0 -491
  311. package/src/rules/no-unsafe-dynamic-require/index.d.ts +0 -5
  312. package/src/rules/no-unsafe-dynamic-require/index.js +0 -106
  313. package/src/rules/no-unsafe-regex-construction/index.d.ts +0 -9
  314. package/src/rules/no-unsafe-regex-construction/index.js +0 -291
  315. package/src/rules/no-unsanitized-html/index.d.ts +0 -9
  316. package/src/rules/no-unsanitized-html/index.js +0 -335
  317. package/src/rules/no-unvalidated-deeplinks/index.d.ts +0 -6
  318. package/src/rules/no-unvalidated-deeplinks/index.js +0 -62
  319. package/src/rules/no-unvalidated-user-input/index.d.ts +0 -9
  320. package/src/rules/no-unvalidated-user-input/index.js +0 -420
  321. package/src/rules/no-verbose-error-messages/index.d.ts +0 -8
  322. package/src/rules/no-verbose-error-messages/index.js +0 -68
  323. package/src/rules/no-weak-crypto/index.d.ts +0 -11
  324. package/src/rules/no-weak-crypto/index.js +0 -351
  325. package/src/rules/no-weak-password-recovery/index.d.ts +0 -12
  326. package/src/rules/no-weak-password-recovery/index.js +0 -424
  327. package/src/rules/no-xpath-injection/index.d.ts +0 -10
  328. package/src/rules/no-xpath-injection/index.js +0 -487
  329. package/src/rules/no-xxe-injection/index.d.ts +0 -7
  330. package/src/rules/no-xxe-injection/index.js +0 -266
  331. package/src/rules/no-zip-slip/index.d.ts +0 -9
  332. package/src/rules/no-zip-slip/index.js +0 -445
  333. package/src/rules/require-backend-authorization/index.d.ts +0 -6
  334. package/src/rules/require-backend-authorization/index.js +0 -60
  335. package/src/rules/require-code-minification/index.d.ts +0 -8
  336. package/src/rules/require-code-minification/index.js +0 -47
  337. package/src/rules/require-csp-headers/index.d.ts +0 -6
  338. package/src/rules/require-csp-headers/index.js +0 -64
  339. package/src/rules/require-data-minimization/index.d.ts +0 -8
  340. package/src/rules/require-data-minimization/index.js +0 -53
  341. package/src/rules/require-dependency-integrity/index.d.ts +0 -6
  342. package/src/rules/require-dependency-integrity/index.js +0 -64
  343. package/src/rules/require-https-only/index.d.ts +0 -8
  344. package/src/rules/require-https-only/index.js +0 -62
  345. package/src/rules/require-mime-type-validation/index.d.ts +0 -6
  346. package/src/rules/require-mime-type-validation/index.js +0 -66
  347. package/src/rules/require-network-timeout/index.d.ts +0 -8
  348. package/src/rules/require-network-timeout/index.js +0 -50
  349. package/src/rules/require-package-lock/index.d.ts +0 -8
  350. package/src/rules/require-package-lock/index.js +0 -63
  351. package/src/rules/require-secure-credential-storage/index.d.ts +0 -8
  352. package/src/rules/require-secure-credential-storage/index.js +0 -50
  353. package/src/rules/require-secure-defaults/index.d.ts +0 -8
  354. package/src/rules/require-secure-defaults/index.js +0 -47
  355. package/src/rules/require-secure-deletion/index.d.ts +0 -8
  356. package/src/rules/require-secure-deletion/index.js +0 -44
  357. package/src/rules/require-storage-encryption/index.d.ts +0 -8
  358. package/src/rules/require-storage-encryption/index.js +0 -50
  359. package/src/rules/require-url-validation/index.d.ts +0 -6
  360. package/src/rules/require-url-validation/index.js +0 -72
  361. package/src/types/index.js +0 -17
@@ -0,0 +1,54 @@
1
+ /**
2
+ * @fileoverview Ensure secure default configurations
3
+ * @see https://owasp.org/www-project-mobile-top-10/
4
+ * @see https://cwe.mitre.org/data/definitions/453.html
5
+ */
6
+
7
+ import { createRule, formatLLMMessage, MessageIcons } from '@interlace/eslint-devkit';
8
+ import type { TSESTree } from '@interlace/eslint-devkit';
9
+
10
+ type MessageIds = 'violationDetected';
11
+
12
+ // eslint-disable-next-line @typescript-eslint/no-empty-object-type, @typescript-eslint/no-empty-interface -- Rule has no configurable options
13
+ export interface Options {}
14
+
15
+ type RuleOptions = [Options?];
16
+
17
+ export const requireSecureDefaults = createRule<RuleOptions, MessageIds>({
18
+ name: 'require-secure-defaults',
19
+ meta: {
20
+ type: 'problem',
21
+ docs: {
22
+ description: 'Ensure secure default configurations',
23
+ category: 'Security',
24
+ recommended: true,
25
+ owaspMobile: ['M8'],
26
+ cweIds: ["CWE-453"],
27
+ },
28
+ messages: {
29
+ violationDetected: formatLLMMessage({
30
+ icon: MessageIcons.SECURITY,
31
+ issueName: 'violation Detected',
32
+ cwe: 'CWE-1188',
33
+ description: 'Ensure secure default configurations detected - Insecure default values',
34
+ severity: 'MEDIUM',
35
+ fix: 'Review and apply secure practices',
36
+ documentationLink: 'https://cwe.mitre.org/data/definitions/1188.html',
37
+ })
38
+ },
39
+ schema: [],
40
+ },
41
+ defaultOptions: [],
42
+ create(context) {
43
+ return {
44
+ Property(node: TSESTree.Property) {
45
+ if (node.key.type === 'Identifier' &&
46
+ ['secure', 'strictSSL', 'verify'].includes(node.key.name) &&
47
+ node.value.type === 'Literal' &&
48
+ node.value.value === false) {
49
+ context.report({ node, messageId: 'violationDetected' });
50
+ }
51
+ },
52
+ };
53
+ },
54
+ });
@@ -0,0 +1,26 @@
1
+ /**
2
+ * @fileoverview Tests for require-secure-defaults
3
+ *
4
+ * Coverage: Comprehensive test suite with valid and invalid cases
5
+ */
6
+
7
+ import { RuleTester } from '@typescript-eslint/rule-tester';
8
+ import { requireSecureDefaults } from './index';
9
+
10
+ const ruleTester = new RuleTester({
11
+ languageOptions: {
12
+ ecmaVersion: 2022,
13
+ sourceType: 'module',
14
+ },
15
+ });
16
+
17
+ ruleTester.run('require-secure-defaults', requireSecureDefaults, {
18
+ valid: [
19
+ { code: "const config = { secure: true, httpOnly: true }" },
20
+ { code: "cookie({ secure: true })" }
21
+ ],
22
+
23
+ invalid: [
24
+ { code: "cookie({ secure: false })", errors: [{ messageId: 'violationDetected' }] }
25
+ ],
26
+ });
@@ -0,0 +1,52 @@
1
+ /**
2
+ * @fileoverview Require secure data deletion patterns
3
+ * @see https://owasp.org/www-project-mobile-top-10/
4
+ * @see https://cwe.mitre.org/data/definitions/459.html
5
+ */
6
+
7
+ import { createRule, formatLLMMessage, MessageIcons } from '@interlace/eslint-devkit';
8
+ import type { TSESTree } from '@interlace/eslint-devkit';
9
+
10
+ type MessageIds = 'violationDetected';
11
+
12
+ // eslint-disable-next-line @typescript-eslint/no-empty-object-type, @typescript-eslint/no-empty-interface -- Rule has no configurable options
13
+ export interface Options {}
14
+
15
+ type RuleOptions = [Options?];
16
+
17
+ export const requireSecureDeletion = createRule<RuleOptions, MessageIds>({
18
+ name: 'require-secure-deletion',
19
+ meta: {
20
+ type: 'problem',
21
+ docs: {
22
+ description: 'Require secure data deletion patterns',
23
+ category: 'Security',
24
+ recommended: true,
25
+ owaspMobile: ['M9'],
26
+ cweIds: ["CWE-459"],
27
+ },
28
+ messages: {
29
+ violationDetected: formatLLMMessage({
30
+ icon: MessageIcons.SECURITY,
31
+ issueName: 'violation Detected',
32
+ cwe: 'CWE-459',
33
+ description: 'Require secure data deletion patterns detected - delete without secure wipe',
34
+ severity: 'MEDIUM',
35
+ fix: 'Review and apply secure practices',
36
+ documentationLink: 'https://cwe.mitre.org/data/definitions/459.html',
37
+ })
38
+ },
39
+ schema: [],
40
+ },
41
+ defaultOptions: [],
42
+ create(context) {
43
+ return {
44
+
45
+ UnaryExpression(node: TSESTree.UnaryExpression) {
46
+ if (node.operator === 'delete') {
47
+ context.report({ node, messageId: 'violationDetected' });
48
+ }
49
+ },
50
+ };
51
+ },
52
+ });
@@ -0,0 +1,29 @@
1
+ /**
2
+ * @fileoverview Tests for require-secure-deletion
3
+ */
4
+
5
+ import { RuleTester } from '@typescript-eslint/rule-tester';
6
+ import { requireSecureDeletion } from './index';
7
+
8
+ const ruleTester = new RuleTester({
9
+ languageOptions: {
10
+ ecmaVersion: 2022,
11
+ sourceType: 'module',
12
+ },
13
+ });
14
+
15
+ ruleTester.run('require-secure-deletion', requireSecureDeletion, {
16
+ valid: [
17
+ // Secure deletion patterns
18
+ { code: "secureDelete(file)" },
19
+ { code: "data = null; gc()" },
20
+ { code: "const x = 1" },
21
+ ],
22
+
23
+ invalid: [
24
+ // Using delete operator (doesn't securely wipe)
25
+ { code: "delete user.password", errors: [{ messageId: 'violationDetected' }] },
26
+ { code: "delete sensitiveData.token", errors: [{ messageId: 'violationDetected' }] },
27
+ { code: "delete obj.secret", errors: [{ messageId: 'violationDetected' }] },
28
+ ],
29
+ });
@@ -0,0 +1,60 @@
1
+ /**
2
+ * @fileoverview Require encryption for persistent storage
3
+ * @see https://owasp.org/www-project-mobile-top-10/
4
+ * @see https://cwe.mitre.org/data/definitions/311.html
5
+ */
6
+
7
+ import { createRule, formatLLMMessage, MessageIcons } from '@interlace/eslint-devkit';
8
+ import type { TSESTree } from '@interlace/eslint-devkit';
9
+
10
+ type MessageIds = 'violationDetected';
11
+
12
+ // eslint-disable-next-line @typescript-eslint/no-empty-object-type, @typescript-eslint/no-empty-interface -- Rule has no configurable options
13
+ export interface Options {}
14
+
15
+ type RuleOptions = [Options?];
16
+
17
+ export const requireStorageEncryption = createRule<RuleOptions, MessageIds>({
18
+ name: 'require-storage-encryption',
19
+ meta: {
20
+ type: 'problem',
21
+ docs: {
22
+ description: 'Require encryption for persistent storage',
23
+ category: 'Security',
24
+ recommended: true,
25
+ owaspMobile: ['M9'],
26
+ cweIds: ["CWE-311"],
27
+ },
28
+ messages: {
29
+ violationDetected: formatLLMMessage({
30
+ icon: MessageIcons.SECURITY,
31
+ issueName: 'violation Detected',
32
+ cwe: 'CWE-312',
33
+ description: 'Require encryption for persistent storage detected - Storage without encryption',
34
+ severity: 'HIGH',
35
+ fix: 'Review and apply secure practices',
36
+ documentationLink: 'https://cwe.mitre.org/data/definitions/312.html',
37
+ })
38
+ },
39
+ schema: [],
40
+ },
41
+ defaultOptions: [],
42
+ create(context) {
43
+ return {
44
+
45
+ CallExpression(node: TSESTree.CallExpression) {
46
+ if (node.callee.type === 'MemberExpression' &&
47
+ ['setItem', 'writeFile'].includes(node.callee.property.name)) {
48
+ // Check for encryption wrapper
49
+ const hasEncryption = node.arguments.some(arg =>
50
+ arg.type === 'CallExpression' &&
51
+ arg.callee.name?.includes('encrypt')
52
+ );
53
+ if (!hasEncryption) {
54
+ context.report({ node, messageId: 'violationDetected' });
55
+ }
56
+ }
57
+ },
58
+ };
59
+ },
60
+ });
@@ -0,0 +1,26 @@
1
+ /**
2
+ * @fileoverview Tests for require-storage-encryption
3
+ *
4
+ * Coverage: Comprehensive test suite with valid and invalid cases
5
+ */
6
+
7
+ import { RuleTester } from '@typescript-eslint/rule-tester';
8
+ import { requireStorageEncryption } from './index';
9
+
10
+ const ruleTester = new RuleTester({
11
+ languageOptions: {
12
+ ecmaVersion: 2022,
13
+ sourceType: 'module',
14
+ },
15
+ });
16
+
17
+ ruleTester.run('require-storage-encryption', requireStorageEncryption, {
18
+ valid: [
19
+ { code: "await SecureStore.setItemAsync('token', token)" },
20
+ { code: "const encrypted = encrypt(data)" }
21
+ ],
22
+
23
+ invalid: [
24
+ { code: "AsyncStorage.setItem('password', pwd)", errors: [{ messageId: 'violationDetected' }] }
25
+ ],
26
+ });
@@ -0,0 +1,85 @@
1
+ /**
2
+ * @fileoverview Enforce URL validation before navigation
3
+ */
4
+
5
+ import { createRule, formatLLMMessage, MessageIcons } from '@interlace/eslint-devkit';
6
+ import type { TSESTree } from '@interlace/eslint-devkit';
7
+
8
+ type MessageIds = 'violationDetected';
9
+
10
+ // eslint-disable-next-line @typescript-eslint/no-empty-object-type, @typescript-eslint/no-empty-interface -- Rule has no configurable options
11
+ export interface Options {}
12
+
13
+ type RuleOptions = [Options?];
14
+
15
+ export const requireUrlValidation = createRule<RuleOptions, MessageIds>({
16
+ name: 'require-url-validation',
17
+ meta: {
18
+ type: 'problem',
19
+ docs: {
20
+ description: 'Enforce URL validation before navigation',
21
+ },
22
+ messages: {
23
+ violationDetected: formatLLMMessage({
24
+ icon: MessageIcons.SECURITY,
25
+ issueName: 'URL Validation Required',
26
+ cwe: 'CWE-601',
27
+ description: 'Unvalidated URL used for navigation - this is a security risk',
28
+ severity: 'HIGH',
29
+ fix: 'Validate URLs before using them for navigation',
30
+ documentationLink: 'https://cwe.mitre.org/data/definitions/601.html',
31
+ })
32
+ },
33
+ schema: [],
34
+ },
35
+ defaultOptions: [],
36
+ create(context) {
37
+ function report(node: TSESTree.Node) {
38
+ context.report({ node, messageId: 'violationDetected' });
39
+ }
40
+
41
+ return {
42
+ AssignmentExpression(node: TSESTree.AssignmentExpression) {
43
+ // Detect window.location assignment from user input
44
+ if (node.left.type === 'MemberExpression' &&
45
+ node.left.object.type === 'Identifier' &&
46
+ node.left.object.name === 'window' &&
47
+ node.left.property.type === 'Identifier' &&
48
+ node.left.property.name === 'location') {
49
+
50
+ // Flag if right side is a variable (not a literal URL)
51
+ if (node.right.type === 'Identifier') {
52
+ report(node);
53
+ }
54
+ }
55
+
56
+ // Detect location.href assignment
57
+ if (node.left.type === 'MemberExpression' &&
58
+ node.left.object.type === 'Identifier' &&
59
+ node.left.object.name === 'location' &&
60
+ node.left.property.type === 'Identifier' &&
61
+ node.left.property.name === 'href') {
62
+
63
+ if (node.right.type === 'Identifier') {
64
+ report(node);
65
+ }
66
+ }
67
+ },
68
+
69
+ CallExpression(node: TSESTree.CallExpression) {
70
+ // Detect window.open with variable URL
71
+ if (node.callee.type === 'MemberExpression' &&
72
+ node.callee.object.type === 'Identifier' &&
73
+ node.callee.object.name === 'window' &&
74
+ node.callee.property.type === 'Identifier' &&
75
+ node.callee.property.name === 'open') {
76
+
77
+ const urlArg = node.arguments[0];
78
+ if (urlArg && urlArg.type === 'Identifier') {
79
+ report(node);
80
+ }
81
+ }
82
+ },
83
+ };
84
+ },
85
+ });
@@ -0,0 +1,32 @@
1
+ /**
2
+ * @fileoverview Tests for require-url-validation
3
+ */
4
+
5
+ import { RuleTester } from '@typescript-eslint/rule-tester';
6
+ import { requireUrlValidation } from './index';
7
+
8
+ const ruleTester = new RuleTester({
9
+ languageOptions: {
10
+ ecmaVersion: 2022,
11
+ sourceType: 'module',
12
+ },
13
+ });
14
+
15
+ ruleTester.run('require-url-validation', requireUrlValidation, {
16
+ valid: [
17
+ // Safe static URLs
18
+ { code: "window.location = 'https://example.com'" },
19
+ { code: "location.href = 'https://safe.com'" },
20
+ { code: "window.open('https://example.com')" },
21
+ // Non-navigation code
22
+ { code: "const url = 'https://example.com'" },
23
+ { code: "const x = 1" },
24
+ ],
25
+
26
+ invalid: [
27
+ // Variable URLs without validation
28
+ { code: "window.location = userUrl", errors: [{ messageId: 'violationDetected' }] },
29
+ { code: "location.href = redirectUrl", errors: [{ messageId: 'violationDetected' }] },
30
+ { code: "window.open(targetUrl)", errors: [{ messageId: 'violationDetected' }] },
31
+ ],
32
+ });
@@ -1,18 +1,20 @@
1
1
  /**
2
2
  * eslint-plugin-secure-coding Type Exports
3
- *
3
+ *
4
4
  * Barrel file that exports all security rule Options types with consistent naming.
5
- *
5
+ *
6
6
  * Usage:
7
7
  * ```typescript
8
8
  * import type { NoSqlInjectionOptions } from 'eslint-plugin-secure-coding/types';
9
- *
9
+ *
10
10
  * const config: NoSqlInjectionOptions = {
11
11
  * allowDynamicTableNames: false,
12
12
  * strategy: 'parameterize',
13
13
  * };
14
14
  * ```
15
15
  */
16
+
17
+ // Injection Rules
16
18
  import type { Options as NoSqlInjectionOptions } from '../rules/no-sql-injection';
17
19
  import type { Options as DatabaseInjectionOptions } from '../rules/database-injection';
18
20
  import type { Options as DetectEvalWithExpressionOptions } from '../rules/detect-eval-with-expression';
@@ -24,48 +26,137 @@ import type { Options as NoXpathInjectionOptions } from '../rules/no-xpath-injec
24
26
  import type { Options as NoLdapInjectionOptions } from '../rules/no-ldap-injection';
25
27
  import type { Options as NoDirectiveInjectionOptions } from '../rules/no-directive-injection';
26
28
  import type { Options as NoFormatStringInjectionOptions } from '../rules/no-format-string-injection';
29
+
30
+ // Path & File Rules
27
31
  import type { Options as DetectNonLiteralFsFilenameOptions } from '../rules/detect-non-literal-fs-filename';
28
32
  import type { Options as NoZipSlipOptions } from '../rules/no-zip-slip';
29
33
  import type { Options as NoToctouVulnerabilityOptions } from '../rules/no-toctou-vulnerability';
34
+
35
+ // Regex Rules
30
36
  import type { Options as DetectNonLiteralRegexpOptions } from '../rules/detect-non-literal-regexp';
31
37
  import type { Options as NoRedosVulnerableRegexOptions } from '../rules/no-redos-vulnerable-regex';
32
38
  import type { Options as NoUnsafeRegexConstructionOptions } from '../rules/no-unsafe-regex-construction';
39
+
40
+ // Object & Prototype Rules
33
41
  import type { Options as DetectObjectInjectionOptions } from '../rules/detect-object-injection';
34
42
  import type { Options as NoUnsafeDeserializationOptions } from '../rules/no-unsafe-deserialization';
43
+
44
+ // Credentials & Crypto Rules
35
45
  import type { Options as NoHardcodedCredentialsOptions } from '../rules/no-hardcoded-credentials';
36
46
  import type { Options as NoWeakCryptoOptions } from '../rules/no-weak-crypto';
37
47
  import type { Options as NoInsufficientRandomOptions } from '../rules/no-insufficient-random';
38
48
  import type { Options as NoTimingAttackOptions } from '../rules/no-timing-attack';
39
49
  import type { Options as NoInsecureComparisonOptions } from '../rules/no-insecure-comparison';
40
50
  import type { Options as NoInsecureJwtOptions } from '../rules/no-insecure-jwt';
51
+
52
+ // Input Validation & XSS Rules
41
53
  import type { Options as NoUnvalidatedUserInputOptions } from '../rules/no-unvalidated-user-input';
42
54
  import type { Options as NoUnsanitizedHtmlOptions } from '../rules/no-unsanitized-html';
43
55
  import type { Options as NoUnescapedUrlParameterOptions } from '../rules/no-unescaped-url-parameter';
44
56
  import type { Options as NoImproperSanitizationOptions } from '../rules/no-improper-sanitization';
45
57
  import type { Options as NoImproperTypeValidationOptions } from '../rules/no-improper-type-validation';
58
+
59
+ // Authentication & Authorization Rules
46
60
  import type { Options as NoMissingAuthenticationOptions } from '../rules/no-missing-authentication';
47
61
  import type { Options as NoPrivilegeEscalationOptions } from '../rules/no-privilege-escalation';
48
62
  import type { Options as NoWeakPasswordRecoveryOptions } from '../rules/no-weak-password-recovery';
63
+
64
+ // Session & Cookies Rules
49
65
  import type { Options as NoInsecureCookieSettingsOptions } from '../rules/no-insecure-cookie-settings';
50
66
  import type { Options as NoMissingCsrfProtectionOptions } from '../rules/no-missing-csrf-protection';
51
67
  import type { Options as NoDocumentCookieOptions } from '../rules/no-document-cookie';
68
+
69
+ // Network & Headers Rules
52
70
  import type { Options as NoMissingCorsCheckOptions } from '../rules/no-missing-cors-check';
53
71
  import type { Options as NoMissingSecurityHeadersOptions } from '../rules/no-missing-security-headers';
54
72
  import type { Options as NoInsecureRedirectsOptions } from '../rules/no-insecure-redirects';
55
73
  import type { Options as NoUnencryptedTransmissionOptions } from '../rules/no-unencrypted-transmission';
56
74
  import type { Options as NoClickjackingOptions } from '../rules/no-clickjacking';
75
+
76
+ // Data Exposure Rules
57
77
  import type { Options as NoExposedSensitiveDataOptions } from '../rules/no-exposed-sensitive-data';
58
78
  import type { Options as NoSensitiveDataExposureOptions } from '../rules/no-sensitive-data-exposure';
79
+
80
+ // Buffer & Memory Rules
59
81
  import type { Options as NoBufferOverreadOptions } from '../rules/no-buffer-overread';
82
+
83
+ // Resource & DoS Rules
60
84
  import type { Options as NoUnlimitedResourceAllocationOptions } from '../rules/no-unlimited-resource-allocation';
61
85
  import type { Options as NoUncheckedLoopConditionOptions } from '../rules/no-unchecked-loop-condition';
86
+
87
+ // Platform Specific Rules
62
88
  import type { Options as NoElectronSecurityIssuesOptions } from '../rules/no-electron-security-issues';
63
89
  import type { Options as NoInsufficientPostmessageValidationOptions } from '../rules/no-insufficient-postmessage-validation';
64
- export type { NoSqlInjectionOptions, DatabaseInjectionOptions, DetectEvalWithExpressionOptions, DetectChildProcessOptions, NoUnsafeDynamicRequireOptions, NoGraphqlInjectionOptions, NoXxeInjectionOptions, NoXpathInjectionOptions, NoLdapInjectionOptions, NoDirectiveInjectionOptions, NoFormatStringInjectionOptions, DetectNonLiteralFsFilenameOptions, NoZipSlipOptions, NoToctouVulnerabilityOptions, DetectNonLiteralRegexpOptions, NoRedosVulnerableRegexOptions, NoUnsafeRegexConstructionOptions, DetectObjectInjectionOptions, NoUnsafeDeserializationOptions, NoHardcodedCredentialsOptions, NoWeakCryptoOptions, NoInsufficientRandomOptions, NoTimingAttackOptions, NoInsecureComparisonOptions, NoInsecureJwtOptions, NoUnvalidatedUserInputOptions, NoUnsanitizedHtmlOptions, NoUnescapedUrlParameterOptions, NoImproperSanitizationOptions, NoImproperTypeValidationOptions, NoMissingAuthenticationOptions, NoPrivilegeEscalationOptions, NoWeakPasswordRecoveryOptions, NoInsecureCookieSettingsOptions, NoMissingCsrfProtectionOptions, NoDocumentCookieOptions, NoMissingCorsCheckOptions, NoMissingSecurityHeadersOptions, NoInsecureRedirectsOptions, NoUnencryptedTransmissionOptions, NoClickjackingOptions, NoExposedSensitiveDataOptions, NoSensitiveDataExposureOptions, NoBufferOverreadOptions, NoUnlimitedResourceAllocationOptions, NoUncheckedLoopConditionOptions, NoElectronSecurityIssuesOptions, NoInsufficientPostmessageValidationOptions, };
90
+
91
+ // Export all types with consistent naming
92
+ export type {
93
+ // Injection
94
+ NoSqlInjectionOptions,
95
+ DatabaseInjectionOptions,
96
+ DetectEvalWithExpressionOptions,
97
+ DetectChildProcessOptions,
98
+ NoUnsafeDynamicRequireOptions,
99
+ NoGraphqlInjectionOptions,
100
+ NoXxeInjectionOptions,
101
+ NoXpathInjectionOptions,
102
+ NoLdapInjectionOptions,
103
+ NoDirectiveInjectionOptions,
104
+ NoFormatStringInjectionOptions,
105
+ // Path & File
106
+ DetectNonLiteralFsFilenameOptions,
107
+ NoZipSlipOptions,
108
+ NoToctouVulnerabilityOptions,
109
+ // Regex
110
+ DetectNonLiteralRegexpOptions,
111
+ NoRedosVulnerableRegexOptions,
112
+ NoUnsafeRegexConstructionOptions,
113
+ // Object & Prototype
114
+ DetectObjectInjectionOptions,
115
+ NoUnsafeDeserializationOptions,
116
+ // Credentials & Crypto
117
+ NoHardcodedCredentialsOptions,
118
+ NoWeakCryptoOptions,
119
+ NoInsufficientRandomOptions,
120
+ NoTimingAttackOptions,
121
+ NoInsecureComparisonOptions,
122
+ NoInsecureJwtOptions,
123
+ // Input Validation & XSS
124
+ NoUnvalidatedUserInputOptions,
125
+ NoUnsanitizedHtmlOptions,
126
+ NoUnescapedUrlParameterOptions,
127
+ NoImproperSanitizationOptions,
128
+ NoImproperTypeValidationOptions,
129
+ // Authentication & Authorization
130
+ NoMissingAuthenticationOptions,
131
+ NoPrivilegeEscalationOptions,
132
+ NoWeakPasswordRecoveryOptions,
133
+ // Session & Cookies
134
+ NoInsecureCookieSettingsOptions,
135
+ NoMissingCsrfProtectionOptions,
136
+ NoDocumentCookieOptions,
137
+ // Network & Headers
138
+ NoMissingCorsCheckOptions,
139
+ NoMissingSecurityHeadersOptions,
140
+ NoInsecureRedirectsOptions,
141
+ NoUnencryptedTransmissionOptions,
142
+ NoClickjackingOptions,
143
+ // Data Exposure
144
+ NoExposedSensitiveDataOptions,
145
+ NoSensitiveDataExposureOptions,
146
+ // Buffer & Memory
147
+ NoBufferOverreadOptions,
148
+ // Resource & DoS
149
+ NoUnlimitedResourceAllocationOptions,
150
+ NoUncheckedLoopConditionOptions,
151
+ // Platform Specific
152
+ NoElectronSecurityIssuesOptions,
153
+ NoInsufficientPostmessageValidationOptions,
154
+ };
155
+
65
156
  /**
66
157
  * Combined type for all security rule options
67
158
  * Useful for creating unified configuration objects
68
- *
159
+ *
69
160
  * @example
70
161
  * ```typescript
71
162
  * const config: AllSecurityRulesOptions = {
@@ -80,52 +171,65 @@ export type { NoSqlInjectionOptions, DatabaseInjectionOptions, DetectEvalWithExp
80
171
  * ```
81
172
  */
82
173
  export type AllSecurityRulesOptions = {
83
- 'no-sql-injection'?: NoSqlInjectionOptions;
84
- 'database-injection'?: DatabaseInjectionOptions;
85
- 'detect-eval-with-expression'?: DetectEvalWithExpressionOptions;
86
- 'detect-child-process'?: DetectChildProcessOptions;
87
- 'no-unsafe-dynamic-require'?: NoUnsafeDynamicRequireOptions;
88
- 'no-graphql-injection'?: NoGraphqlInjectionOptions;
89
- 'no-xxe-injection'?: NoXxeInjectionOptions;
90
- 'no-xpath-injection'?: NoXpathInjectionOptions;
91
- 'no-ldap-injection'?: NoLdapInjectionOptions;
92
- 'no-directive-injection'?: NoDirectiveInjectionOptions;
93
- 'no-format-string-injection'?: NoFormatStringInjectionOptions;
94
- 'detect-non-literal-fs-filename'?: DetectNonLiteralFsFilenameOptions;
95
- 'no-zip-slip'?: NoZipSlipOptions;
96
- 'no-toctou-vulnerability'?: NoToctouVulnerabilityOptions;
97
- 'detect-non-literal-regexp'?: DetectNonLiteralRegexpOptions;
98
- 'no-redos-vulnerable-regex'?: NoRedosVulnerableRegexOptions;
99
- 'no-unsafe-regex-construction'?: NoUnsafeRegexConstructionOptions;
100
- 'detect-object-injection'?: DetectObjectInjectionOptions;
101
- 'no-unsafe-deserialization'?: NoUnsafeDeserializationOptions;
102
- 'no-hardcoded-credentials'?: NoHardcodedCredentialsOptions;
103
- 'no-weak-crypto'?: NoWeakCryptoOptions;
104
- 'no-insufficient-random'?: NoInsufficientRandomOptions;
105
- 'no-timing-attack'?: NoTimingAttackOptions;
106
- 'no-insecure-comparison'?: NoInsecureComparisonOptions;
107
- 'no-insecure-jwt'?: NoInsecureJwtOptions;
108
- 'no-unvalidated-user-input'?: NoUnvalidatedUserInputOptions;
109
- 'no-unsanitized-html'?: NoUnsanitizedHtmlOptions;
110
- 'no-unescaped-url-parameter'?: NoUnescapedUrlParameterOptions;
111
- 'no-improper-sanitization'?: NoImproperSanitizationOptions;
112
- 'no-improper-type-validation'?: NoImproperTypeValidationOptions;
113
- 'no-missing-authentication'?: NoMissingAuthenticationOptions;
114
- 'no-privilege-escalation'?: NoPrivilegeEscalationOptions;
115
- 'no-weak-password-recovery'?: NoWeakPasswordRecoveryOptions;
116
- 'no-insecure-cookie-settings'?: NoInsecureCookieSettingsOptions;
117
- 'no-missing-csrf-protection'?: NoMissingCsrfProtectionOptions;
118
- 'no-document-cookie'?: NoDocumentCookieOptions;
119
- 'no-missing-cors-check'?: NoMissingCorsCheckOptions;
120
- 'no-missing-security-headers'?: NoMissingSecurityHeadersOptions;
121
- 'no-insecure-redirects'?: NoInsecureRedirectsOptions;
122
- 'no-unencrypted-transmission'?: NoUnencryptedTransmissionOptions;
123
- 'no-clickjacking'?: NoClickjackingOptions;
124
- 'no-exposed-sensitive-data'?: NoExposedSensitiveDataOptions;
125
- 'no-sensitive-data-exposure'?: NoSensitiveDataExposureOptions;
126
- 'no-buffer-overread'?: NoBufferOverreadOptions;
127
- 'no-unlimited-resource-allocation'?: NoUnlimitedResourceAllocationOptions;
128
- 'no-unchecked-loop-condition'?: NoUncheckedLoopConditionOptions;
129
- 'no-electron-security-issues'?: NoElectronSecurityIssuesOptions;
130
- 'no-insufficient-postmessage-validation'?: NoInsufficientPostmessageValidationOptions;
174
+ // Injection
175
+ 'no-sql-injection'?: NoSqlInjectionOptions;
176
+ 'database-injection'?: DatabaseInjectionOptions;
177
+ 'detect-eval-with-expression'?: DetectEvalWithExpressionOptions;
178
+ 'detect-child-process'?: DetectChildProcessOptions;
179
+ 'no-unsafe-dynamic-require'?: NoUnsafeDynamicRequireOptions;
180
+ 'no-graphql-injection'?: NoGraphqlInjectionOptions;
181
+ 'no-xxe-injection'?: NoXxeInjectionOptions;
182
+ 'no-xpath-injection'?: NoXpathInjectionOptions;
183
+ 'no-ldap-injection'?: NoLdapInjectionOptions;
184
+ 'no-directive-injection'?: NoDirectiveInjectionOptions;
185
+ 'no-format-string-injection'?: NoFormatStringInjectionOptions;
186
+ // Path & File
187
+ 'detect-non-literal-fs-filename'?: DetectNonLiteralFsFilenameOptions;
188
+ 'no-zip-slip'?: NoZipSlipOptions;
189
+ 'no-toctou-vulnerability'?: NoToctouVulnerabilityOptions;
190
+ // Regex
191
+ 'detect-non-literal-regexp'?: DetectNonLiteralRegexpOptions;
192
+ 'no-redos-vulnerable-regex'?: NoRedosVulnerableRegexOptions;
193
+ 'no-unsafe-regex-construction'?: NoUnsafeRegexConstructionOptions;
194
+ // Object & Prototype
195
+ 'detect-object-injection'?: DetectObjectInjectionOptions;
196
+ 'no-unsafe-deserialization'?: NoUnsafeDeserializationOptions;
197
+ // Credentials & Crypto
198
+ 'no-hardcoded-credentials'?: NoHardcodedCredentialsOptions;
199
+ 'no-weak-crypto'?: NoWeakCryptoOptions;
200
+ 'no-insufficient-random'?: NoInsufficientRandomOptions;
201
+ 'no-timing-attack'?: NoTimingAttackOptions;
202
+ 'no-insecure-comparison'?: NoInsecureComparisonOptions;
203
+ 'no-insecure-jwt'?: NoInsecureJwtOptions;
204
+ // Input Validation & XSS
205
+ 'no-unvalidated-user-input'?: NoUnvalidatedUserInputOptions;
206
+ 'no-unsanitized-html'?: NoUnsanitizedHtmlOptions;
207
+ 'no-unescaped-url-parameter'?: NoUnescapedUrlParameterOptions;
208
+ 'no-improper-sanitization'?: NoImproperSanitizationOptions;
209
+ 'no-improper-type-validation'?: NoImproperTypeValidationOptions;
210
+ // Authentication & Authorization
211
+ 'no-missing-authentication'?: NoMissingAuthenticationOptions;
212
+ 'no-privilege-escalation'?: NoPrivilegeEscalationOptions;
213
+ 'no-weak-password-recovery'?: NoWeakPasswordRecoveryOptions;
214
+ // Session & Cookies
215
+ 'no-insecure-cookie-settings'?: NoInsecureCookieSettingsOptions;
216
+ 'no-missing-csrf-protection'?: NoMissingCsrfProtectionOptions;
217
+ 'no-document-cookie'?: NoDocumentCookieOptions;
218
+ // Network & Headers
219
+ 'no-missing-cors-check'?: NoMissingCorsCheckOptions;
220
+ 'no-missing-security-headers'?: NoMissingSecurityHeadersOptions;
221
+ 'no-insecure-redirects'?: NoInsecureRedirectsOptions;
222
+ 'no-unencrypted-transmission'?: NoUnencryptedTransmissionOptions;
223
+ 'no-clickjacking'?: NoClickjackingOptions;
224
+ // Data Exposure
225
+ 'no-exposed-sensitive-data'?: NoExposedSensitiveDataOptions;
226
+ 'no-sensitive-data-exposure'?: NoSensitiveDataExposureOptions;
227
+ // Buffer & Memory
228
+ 'no-buffer-overread'?: NoBufferOverreadOptions;
229
+ // Resource & DoS
230
+ 'no-unlimited-resource-allocation'?: NoUnlimitedResourceAllocationOptions;
231
+ 'no-unchecked-loop-condition'?: NoUncheckedLoopConditionOptions;
232
+ // Platform Specific
233
+ 'no-electron-security-issues'?: NoElectronSecurityIssuesOptions;
234
+ 'no-insufficient-postmessage-validation'?: NoInsufficientPostmessageValidationOptions;
131
235
  };