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
package/src/index.d.ts DELETED
@@ -1,32 +0,0 @@
1
- /**
2
- * eslint-plugin-secure-coding
3
- *
4
- * A comprehensive security-focused ESLint plugin with 48+ rules
5
- * for detecting and preventing security vulnerabilities in JavaScript/TypeScript code.
6
- *
7
- * Features:
8
- * - LLM-optimized error messages with CWE references
9
- * - OWASP Top 10 coverage
10
- * - Auto-fix capabilities where safe
11
- * - Structured context for AI assistants
12
- *
13
- * @see https://github.com/ofri-peretz/eslint#readme
14
- */
15
- import { TSESLint } from '@interlace/eslint-devkit';
16
- /**
17
- * Collection of all security ESLint rules
18
- */
19
- export declare const rules: Record<string, TSESLint.RuleModule<string, readonly unknown[]>>;
20
- /**
21
- * ESLint Plugin object
22
- */
23
- export declare const plugin: TSESLint.FlatConfig.Plugin;
24
- export declare const configs: Record<string, TSESLint.FlatConfig.Config>;
25
- /**
26
- * Default export for ESLint plugin
27
- */
28
- export default plugin;
29
- /**
30
- * Re-export all types from the types barrel
31
- */
32
- 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, AllSecurityRulesOptions, } from './types/index';
package/src/index.js DELETED
@@ -1,465 +0,0 @@
1
- "use strict";
2
- /**
3
- * eslint-plugin-secure-coding
4
- *
5
- * A comprehensive security-focused ESLint plugin with 48+ rules
6
- * for detecting and preventing security vulnerabilities in JavaScript/TypeScript code.
7
- *
8
- * Features:
9
- * - LLM-optimized error messages with CWE references
10
- * - OWASP Top 10 coverage
11
- * - Auto-fix capabilities where safe
12
- * - Structured context for AI assistants
13
- *
14
- * @see https://github.com/ofri-peretz/eslint#readme
15
- */
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.configs = exports.plugin = exports.rules = void 0;
18
- // Security rules - Injection
19
- const no_sql_injection_1 = require("./rules/no-sql-injection");
20
- const database_injection_1 = require("./rules/database-injection");
21
- const detect_eval_with_expression_1 = require("./rules/detect-eval-with-expression");
22
- const detect_child_process_1 = require("./rules/detect-child-process");
23
- const no_unsafe_dynamic_require_1 = require("./rules/no-unsafe-dynamic-require");
24
- const no_graphql_injection_1 = require("./rules/no-graphql-injection");
25
- const no_xxe_injection_1 = require("./rules/no-xxe-injection");
26
- const no_xpath_injection_1 = require("./rules/no-xpath-injection");
27
- const no_ldap_injection_1 = require("./rules/no-ldap-injection");
28
- const no_directive_injection_1 = require("./rules/no-directive-injection");
29
- const no_format_string_injection_1 = require("./rules/no-format-string-injection");
30
- // Security rules - Path & File
31
- const detect_non_literal_fs_filename_1 = require("./rules/detect-non-literal-fs-filename");
32
- const no_zip_slip_1 = require("./rules/no-zip-slip");
33
- const no_toctou_vulnerability_1 = require("./rules/no-toctou-vulnerability");
34
- // Security rules - Regex
35
- const detect_non_literal_regexp_1 = require("./rules/detect-non-literal-regexp");
36
- const no_redos_vulnerable_regex_1 = require("./rules/no-redos-vulnerable-regex");
37
- const no_unsafe_regex_construction_1 = require("./rules/no-unsafe-regex-construction");
38
- // Security rules - Object & Prototype
39
- const detect_object_injection_1 = require("./rules/detect-object-injection");
40
- const no_unsafe_deserialization_1 = require("./rules/no-unsafe-deserialization");
41
- // Security rules - Credentials & Crypto
42
- const no_hardcoded_credentials_1 = require("./rules/no-hardcoded-credentials");
43
- const no_weak_crypto_1 = require("./rules/no-weak-crypto");
44
- const no_insufficient_random_1 = require("./rules/no-insufficient-random");
45
- const no_timing_attack_1 = require("./rules/no-timing-attack");
46
- const no_insecure_comparison_1 = require("./rules/no-insecure-comparison");
47
- const no_insecure_jwt_1 = require("./rules/no-insecure-jwt");
48
- // Security rules - Input Validation & XSS
49
- const no_unvalidated_user_input_1 = require("./rules/no-unvalidated-user-input");
50
- const no_unsanitized_html_1 = require("./rules/no-unsanitized-html");
51
- const no_unescaped_url_parameter_1 = require("./rules/no-unescaped-url-parameter");
52
- const no_improper_sanitization_1 = require("./rules/no-improper-sanitization");
53
- const no_improper_type_validation_1 = require("./rules/no-improper-type-validation");
54
- // Security rules - Authentication & Authorization
55
- const no_missing_authentication_1 = require("./rules/no-missing-authentication");
56
- const no_privilege_escalation_1 = require("./rules/no-privilege-escalation");
57
- const no_weak_password_recovery_1 = require("./rules/no-weak-password-recovery");
58
- // Security rules - Session & Cookies
59
- const no_insecure_cookie_settings_1 = require("./rules/no-insecure-cookie-settings");
60
- const no_missing_csrf_protection_1 = require("./rules/no-missing-csrf-protection");
61
- const no_document_cookie_1 = require("./rules/no-document-cookie");
62
- // Security rules - Network & Headers
63
- const no_missing_cors_check_1 = require("./rules/no-missing-cors-check");
64
- const no_missing_security_headers_1 = require("./rules/no-missing-security-headers");
65
- const no_insecure_redirects_1 = require("./rules/no-insecure-redirects");
66
- const no_unencrypted_transmission_1 = require("./rules/no-unencrypted-transmission");
67
- const no_clickjacking_1 = require("./rules/no-clickjacking");
68
- // Security rules - Data Exposure
69
- const no_exposed_sensitive_data_1 = require("./rules/no-exposed-sensitive-data");
70
- const no_sensitive_data_exposure_1 = require("./rules/no-sensitive-data-exposure");
71
- // Security rules - Buffer & Memory
72
- const no_buffer_overread_1 = require("./rules/no-buffer-overread");
73
- // Security rules - Resource & DoS
74
- const no_unlimited_resource_allocation_1 = require("./rules/no-unlimited-resource-allocation");
75
- const no_unchecked_loop_condition_1 = require("./rules/no-unchecked-loop-condition");
76
- // Security rules - Platform Specific
77
- const no_electron_security_issues_1 = require("./rules/no-electron-security-issues");
78
- const no_insufficient_postmessage_validation_1 = require("./rules/no-insufficient-postmessage-validation");
79
- // OWASP Mobile Top 10 2023/2024 - Mobile Security Rules (40 rules)
80
- // M1: Improper Credential Usage (3 rules)
81
- const no_credentials_in_storage_api_1 = require("./rules/no-credentials-in-storage-api");
82
- const no_credentials_in_query_params_1 = require("./rules/no-credentials-in-query-params");
83
- const require_secure_credential_storage_1 = require("./rules/require-secure-credential-storage");
84
- // M2: Inadequate Supply Chain Security (4 rules)
85
- const require_dependency_integrity_1 = require("./rules/require-dependency-integrity");
86
- const detect_suspicious_dependencies_1 = require("./rules/detect-suspicious-dependencies");
87
- const no_dynamic_dependency_loading_1 = require("./rules/no-dynamic-dependency-loading");
88
- const require_package_lock_1 = require("./rules/require-package-lock");
89
- // M3: Insecure Authentication/Authorization (5 rules)
90
- const no_client_side_auth_logic_1 = require("./rules/no-client-side-auth-logic");
91
- const require_backend_authorization_1 = require("./rules/require-backend-authorization");
92
- const no_hardcoded_session_tokens_1 = require("./rules/no-hardcoded-session-tokens");
93
- const detect_weak_password_validation_1 = require("./rules/detect-weak-password-validation");
94
- const no_password_in_url_1 = require("./rules/no-password-in-url");
95
- // M4: Insufficient Input/Output Validation (6 rules)
96
- const no_unvalidated_deeplinks_1 = require("./rules/no-unvalidated-deeplinks");
97
- const require_url_validation_1 = require("./rules/require-url-validation");
98
- const no_arbitrary_file_access_1 = require("./rules/no-arbitrary-file-access");
99
- const require_mime_type_validation_1 = require("./rules/require-mime-type-validation");
100
- const no_postmessage_origin_wildcard_1 = require("./rules/no-postmessage-origin-wildcard");
101
- const require_csp_headers_1 = require("./rules/require-csp-headers");
102
- // M5: Insecure Communication (7 rules)
103
- const no_http_urls_1 = require("./rules/no-http-urls");
104
- const no_disabled_certificate_validation_1 = require("./rules/no-disabled-certificate-validation");
105
- const require_https_only_1 = require("./rules/require-https-only");
106
- const no_insecure_websocket_1 = require("./rules/no-insecure-websocket");
107
- const detect_mixed_content_1 = require("./rules/detect-mixed-content");
108
- const no_allow_arbitrary_loads_1 = require("./rules/no-allow-arbitrary-loads");
109
- const require_network_timeout_1 = require("./rules/require-network-timeout");
110
- // M6: Inadequate Privacy Controls (4 rules)
111
- const no_pii_in_logs_1 = require("./rules/no-pii-in-logs");
112
- const no_tracking_without_consent_1 = require("./rules/no-tracking-without-consent");
113
- const require_data_minimization_1 = require("./rules/require-data-minimization");
114
- const no_sensitive_data_in_analytics_1 = require("./rules/no-sensitive-data-in-analytics");
115
- // M7: Insufficient Binary Protections (2 rules)
116
- const no_debug_code_in_production_1 = require("./rules/no-debug-code-in-production");
117
- const require_code_minification_1 = require("./rules/require-code-minification");
118
- // M8: Security Misconfiguration (4 rules)
119
- const no_verbose_error_messages_1 = require("./rules/no-verbose-error-messages");
120
- const no_exposed_debug_endpoints_1 = require("./rules/no-exposed-debug-endpoints");
121
- const require_secure_defaults_1 = require("./rules/require-secure-defaults");
122
- const no_permissive_cors_1 = require("./rules/no-permissive-cors");
123
- // M9: Insecure Data Storage (5 rules)
124
- const no_unencrypted_local_storage_1 = require("./rules/no-unencrypted-local-storage");
125
- const no_sensitive_data_in_cache_1 = require("./rules/no-sensitive-data-in-cache");
126
- const require_storage_encryption_1 = require("./rules/require-storage-encryption");
127
- const no_data_in_temp_storage_1 = require("./rules/no-data-in-temp-storage");
128
- const require_secure_deletion_1 = require("./rules/require-secure-deletion");
129
- /**
130
- * Collection of all security ESLint rules
131
- */
132
- exports.rules = {
133
- // Flat rule names (recommended usage)
134
- 'no-sql-injection': no_sql_injection_1.noSqlInjection,
135
- 'database-injection': database_injection_1.databaseInjection,
136
- 'detect-eval-with-expression': detect_eval_with_expression_1.detectEvalWithExpression,
137
- 'detect-child-process': detect_child_process_1.detectChildProcess,
138
- 'no-unsafe-dynamic-require': no_unsafe_dynamic_require_1.noUnsafeDynamicRequire,
139
- 'no-graphql-injection': no_graphql_injection_1.noGraphqlInjection,
140
- 'no-xxe-injection': no_xxe_injection_1.noXxeInjection,
141
- 'no-xpath-injection': no_xpath_injection_1.noXpathInjection,
142
- 'no-ldap-injection': no_ldap_injection_1.noLdapInjection,
143
- 'no-directive-injection': no_directive_injection_1.noDirectiveInjection,
144
- 'no-format-string-injection': no_format_string_injection_1.noFormatStringInjection,
145
- 'detect-non-literal-fs-filename': detect_non_literal_fs_filename_1.detectNonLiteralFsFilename,
146
- 'no-zip-slip': no_zip_slip_1.noZipSlip,
147
- 'no-toctou-vulnerability': no_toctou_vulnerability_1.noToctouVulnerability,
148
- 'detect-non-literal-regexp': detect_non_literal_regexp_1.detectNonLiteralRegexp,
149
- 'no-redos-vulnerable-regex': no_redos_vulnerable_regex_1.noRedosVulnerableRegex,
150
- 'no-unsafe-regex-construction': no_unsafe_regex_construction_1.noUnsafeRegexConstruction,
151
- 'detect-object-injection': detect_object_injection_1.detectObjectInjection,
152
- 'no-unsafe-deserialization': no_unsafe_deserialization_1.noUnsafeDeserialization,
153
- 'no-hardcoded-credentials': no_hardcoded_credentials_1.noHardcodedCredentials,
154
- 'no-weak-crypto': no_weak_crypto_1.noWeakCrypto,
155
- 'no-insufficient-random': no_insufficient_random_1.noInsufficientRandom,
156
- 'no-timing-attack': no_timing_attack_1.noTimingAttack,
157
- 'no-insecure-comparison': no_insecure_comparison_1.noInsecureComparison,
158
- 'no-insecure-jwt': no_insecure_jwt_1.noInsecureJwt,
159
- 'no-unvalidated-user-input': no_unvalidated_user_input_1.noUnvalidatedUserInput,
160
- 'no-unsanitized-html': no_unsanitized_html_1.noUnsanitizedHtml,
161
- 'no-unescaped-url-parameter': no_unescaped_url_parameter_1.noUnescapedUrlParameter,
162
- 'no-improper-sanitization': no_improper_sanitization_1.noImproperSanitization,
163
- 'no-improper-type-validation': no_improper_type_validation_1.noImproperTypeValidation,
164
- 'no-missing-authentication': no_missing_authentication_1.noMissingAuthentication,
165
- 'no-privilege-escalation': no_privilege_escalation_1.noPrivilegeEscalation,
166
- 'no-weak-password-recovery': no_weak_password_recovery_1.noWeakPasswordRecovery,
167
- 'no-insecure-cookie-settings': no_insecure_cookie_settings_1.noInsecureCookieSettings,
168
- 'no-missing-csrf-protection': no_missing_csrf_protection_1.noMissingCsrfProtection,
169
- 'no-document-cookie': no_document_cookie_1.noDocumentCookie,
170
- 'no-missing-cors-check': no_missing_cors_check_1.noMissingCorsCheck,
171
- 'no-missing-security-headers': no_missing_security_headers_1.noMissingSecurityHeaders,
172
- 'no-insecure-redirects': no_insecure_redirects_1.noInsecureRedirects,
173
- 'no-unencrypted-transmission': no_unencrypted_transmission_1.noUnencryptedTransmission,
174
- 'no-clickjacking': no_clickjacking_1.noClickjacking,
175
- 'no-exposed-sensitive-data': no_exposed_sensitive_data_1.noExposedSensitiveData,
176
- 'no-sensitive-data-exposure': no_sensitive_data_exposure_1.noSensitiveDataExposure,
177
- 'no-buffer-overread': no_buffer_overread_1.noBufferOverread,
178
- 'no-unlimited-resource-allocation': no_unlimited_resource_allocation_1.noUnlimitedResourceAllocation,
179
- 'no-unchecked-loop-condition': no_unchecked_loop_condition_1.noUncheckedLoopCondition,
180
- 'no-electron-security-issues': no_electron_security_issues_1.noElectronSecurityIssues,
181
- 'no-insufficient-postmessage-validation': no_insufficient_postmessage_validation_1.noInsufficientPostmessageValidation,
182
- // OWASP Mobile Top 10 2023/2024 rules (40 rules)
183
- // M1: Improper Credential Usage (3 rules)
184
- 'no-credentials-in-storage-api': no_credentials_in_storage_api_1.noCredentialsInStorageApi,
185
- 'no-credentials-in-query-params': no_credentials_in_query_params_1.noCredentialsInQueryParams,
186
- 'require-secure-credential-storage': require_secure_credential_storage_1.requireSecureCredentialStorage,
187
- // M2: Inadequate Supply Chain Security (4 rules)
188
- 'require-dependency-integrity': require_dependency_integrity_1.requireDependencyIntegrity,
189
- 'detect-suspicious-dependencies': detect_suspicious_dependencies_1.detectSuspiciousDependencies,
190
- 'no-dynamic-dependency-loading': no_dynamic_dependency_loading_1.noDynamicDependencyLoading,
191
- 'require-package-lock': require_package_lock_1.requirePackageLock,
192
- // M3: Insecure Authentication/Authorization (5 rules)
193
- 'no-client-side-auth-logic': no_client_side_auth_logic_1.noClientSideAuthLogic,
194
- 'require-backend-authorization': require_backend_authorization_1.requireBackendAuthorization,
195
- 'no-hardcoded-session-tokens': no_hardcoded_session_tokens_1.noHardcodedSessionTokens,
196
- 'detect-weak-password-validation': detect_weak_password_validation_1.detectWeakPasswordValidation,
197
- 'no-password-in-url': no_password_in_url_1.noPasswordInUrl,
198
- // M4: Insufficient Input/Output Validation (6 rules)
199
- 'no-unvalidated-deeplinks': no_unvalidated_deeplinks_1.noUnvalidatedDeeplinks,
200
- 'require-url-validation': require_url_validation_1.requireUrlValidation,
201
- 'no-arbitrary-file-access': no_arbitrary_file_access_1.noArbitraryFileAccess,
202
- 'require-mime-type-validation': require_mime_type_validation_1.requireMimeTypeValidation,
203
- 'no-postmessage-origin-wildcard': no_postmessage_origin_wildcard_1.noPostmessageOriginWildcard,
204
- 'require-csp-headers': require_csp_headers_1.requireCspHeaders,
205
- // M5: Insecure Communication (7 rules)
206
- 'no-http-urls': no_http_urls_1.noHttpUrls,
207
- 'no-disabled-certificate-validation': no_disabled_certificate_validation_1.noDisabledCertificateValidation,
208
- 'require-https-only': require_https_only_1.requireHttpsOnly,
209
- 'no-insecure-websocket': no_insecure_websocket_1.noInsecureWebsocket,
210
- 'detect-mixed-content': detect_mixed_content_1.detectMixedContent,
211
- 'no-allow-arbitrary-loads': no_allow_arbitrary_loads_1.noAllowArbitraryLoads,
212
- 'require-network-timeout': require_network_timeout_1.requireNetworkTimeout,
213
- // M6: Inadequate Privacy Controls (4 rules)
214
- 'no-pii-in-logs': no_pii_in_logs_1.noPiiInLogs,
215
- 'no-tracking-without-consent': no_tracking_without_consent_1.noTrackingWithoutConsent,
216
- 'require-data-minimization': require_data_minimization_1.requireDataMinimization,
217
- 'no-sensitive-data-in-analytics': no_sensitive_data_in_analytics_1.noSensitiveDataInAnalytics,
218
- // M7: Insufficient Binary Protections (2 rules)
219
- 'no-debug-code-in-production': no_debug_code_in_production_1.noDebugCodeInProduction,
220
- 'require-code-minification': require_code_minification_1.requireCodeMinification,
221
- // M8: Security Misconfiguration (4 rules)
222
- 'no-verbose-error-messages': no_verbose_error_messages_1.noVerboseErrorMessages,
223
- 'no-exposed-debug-endpoints': no_exposed_debug_endpoints_1.noExposedDebugEndpoints,
224
- 'require-secure-defaults': require_secure_defaults_1.requireSecureDefaults,
225
- 'no-permissive-cors': no_permissive_cors_1.noPermissiveCors,
226
- // M9: Insecure Data Storage (5 rules)
227
- 'no-unencrypted-local-storage': no_unencrypted_local_storage_1.noUnencryptedLocalStorage,
228
- 'no-sensitive-data-in-cache': no_sensitive_data_in_cache_1.noSensitiveDataInCache,
229
- 'require-storage-encryption': require_storage_encryption_1.requireStorageEncryption,
230
- 'no-data-in-temp-storage': no_data_in_temp_storage_1.noDataInTempStorage,
231
- 'require-secure-deletion': require_secure_deletion_1.requireSecureDeletion,
232
- };
233
- /**
234
- * ESLint Plugin object
235
- */
236
- exports.plugin = {
237
- meta: {
238
- name: 'eslint-plugin-secure-coding',
239
- version: '1.0.0',
240
- },
241
- rules: exports.rules,
242
- };
243
- /**
244
- * Preset configurations for security rules
245
- */
246
- const recommendedRules = {
247
- // Critical - Injection vulnerabilities (OWASP A03)
248
- 'secure-coding/no-sql-injection': 'error',
249
- 'secure-coding/database-injection': 'error',
250
- 'secure-coding/detect-eval-with-expression': 'error',
251
- 'secure-coding/detect-child-process': 'error',
252
- 'secure-coding/no-unsafe-dynamic-require': 'error',
253
- 'secure-coding/no-graphql-injection': 'error',
254
- 'secure-coding/no-xxe-injection': 'error',
255
- 'secure-coding/no-xpath-injection': 'error',
256
- 'secure-coding/no-ldap-injection': 'error',
257
- 'secure-coding/no-directive-injection': 'error',
258
- 'secure-coding/no-format-string-injection': 'error',
259
- // Critical - Path traversal & file operations
260
- 'secure-coding/detect-non-literal-fs-filename': 'error',
261
- 'secure-coding/no-zip-slip': 'error',
262
- 'secure-coding/no-toctou-vulnerability': 'error',
263
- // Critical - Deserialization
264
- 'secure-coding/no-unsafe-deserialization': 'error',
265
- // High - Regex vulnerabilities
266
- 'secure-coding/detect-non-literal-regexp': 'warn',
267
- 'secure-coding/no-redos-vulnerable-regex': 'error',
268
- 'secure-coding/no-unsafe-regex-construction': 'warn',
269
- // High - Prototype pollution
270
- 'secure-coding/detect-object-injection': 'warn',
271
- // Critical - Cryptography (OWASP A02)
272
- 'secure-coding/no-hardcoded-credentials': 'error',
273
- 'secure-coding/no-weak-crypto': 'error',
274
- 'secure-coding/no-insufficient-random': 'warn',
275
- 'secure-coding/no-timing-attack': 'error',
276
- 'secure-coding/no-insecure-comparison': 'warn',
277
- 'secure-coding/no-insecure-jwt': 'error',
278
- // Critical - XSS vulnerabilities (OWASP A03)
279
- 'secure-coding/no-unvalidated-user-input': 'warn',
280
- 'secure-coding/no-unsanitized-html': 'error',
281
- 'secure-coding/no-unescaped-url-parameter': 'warn',
282
- 'secure-coding/no-improper-sanitization': 'error',
283
- 'secure-coding/no-improper-type-validation': 'warn',
284
- // High - Authentication & Authorization (OWASP A01, A07)
285
- 'secure-coding/no-missing-authentication': 'warn',
286
- 'secure-coding/no-privilege-escalation': 'warn',
287
- 'secure-coding/no-weak-password-recovery': 'error',
288
- // High - Session & Cookies
289
- 'secure-coding/no-insecure-cookie-settings': 'warn',
290
- 'secure-coding/no-missing-csrf-protection': 'warn',
291
- 'secure-coding/no-document-cookie': 'warn',
292
- // High - Network & Headers (OWASP A05)
293
- 'secure-coding/no-missing-cors-check': 'warn',
294
- 'secure-coding/no-missing-security-headers': 'warn',
295
- 'secure-coding/no-insecure-redirects': 'warn',
296
- 'secure-coding/no-unencrypted-transmission': 'warn',
297
- 'secure-coding/no-clickjacking': 'error',
298
- // High - Data Exposure (OWASP A01)
299
- 'secure-coding/no-exposed-sensitive-data': 'error',
300
- 'secure-coding/no-sensitive-data-exposure': 'warn',
301
- // Medium - Buffer & Memory
302
- 'secure-coding/no-buffer-overread': 'error',
303
- // Medium - Resource & DoS
304
- 'secure-coding/no-unlimited-resource-allocation': 'error',
305
- 'secure-coding/no-unchecked-loop-condition': 'error',
306
- // Medium - Platform specific
307
- 'secure-coding/no-electron-security-issues': 'error',
308
- 'secure-coding/no-insufficient-postmessage-validation': 'error',
309
- // Mobile & General Security (OWASP Mobile)
310
- 'secure-coding/no-credentials-in-storage-api': 'error',
311
- 'secure-coding/no-credentials-in-query-params': 'error',
312
- 'secure-coding/no-http-urls': 'error',
313
- 'secure-coding/require-https-only': 'error',
314
- 'secure-coding/no-pii-in-logs': 'warn',
315
- 'secure-coding/no-verbose-error-messages': 'warn',
316
- 'secure-coding/no-hardcoded-session-tokens': 'error',
317
- 'secure-coding/detect-mixed-content': 'error',
318
- 'secure-coding/no-unvalidated-deeplinks': 'error',
319
- 'secure-coding/no-postmessage-origin-wildcard': 'error',
320
- 'secure-coding/no-insecure-websocket': 'error',
321
- 'secure-coding/detect-suspicious-dependencies': 'warn',
322
- };
323
- exports.configs = {
324
- /**
325
- * Recommended security configuration
326
- *
327
- * Enables all security rules with sensible severity levels:
328
- * - Critical injection vulnerabilities as errors
329
- * - Important security issues as warnings
330
- */
331
- recommended: {
332
- plugins: {
333
- 'secure-coding': exports.plugin,
334
- },
335
- rules: recommendedRules,
336
- },
337
- /**
338
- * Strict security configuration
339
- *
340
- * All security rules set to 'error' for maximum protection
341
- */
342
- strict: {
343
- plugins: {
344
- 'secure-coding': exports.plugin,
345
- },
346
- rules: Object.fromEntries(Object.keys(exports.rules).map(ruleName => [`secure-coding/${ruleName}`, 'error'])),
347
- },
348
- /**
349
- * OWASP Top 10 focused configuration
350
- *
351
- * Rules mapped to OWASP Top 10 2021 categories
352
- */
353
- 'owasp-top-10': {
354
- plugins: {
355
- 'secure-coding': exports.plugin,
356
- },
357
- rules: {
358
- // A01:2021 – Broken Access Control
359
- 'secure-coding/no-missing-authentication': 'error',
360
- 'secure-coding/no-privilege-escalation': 'error',
361
- 'secure-coding/no-exposed-sensitive-data': 'error',
362
- 'secure-coding/no-insecure-redirects': 'error',
363
- // A02:2021 – Cryptographic Failures
364
- 'secure-coding/no-hardcoded-credentials': 'error',
365
- 'secure-coding/no-weak-crypto': 'error',
366
- 'secure-coding/no-insufficient-random': 'error',
367
- 'secure-coding/no-insecure-jwt': 'error',
368
- 'secure-coding/no-unencrypted-transmission': 'error',
369
- 'secure-coding/no-sensitive-data-exposure': 'error',
370
- // A03:2021 – Injection
371
- 'secure-coding/no-sql-injection': 'error',
372
- 'secure-coding/database-injection': 'error',
373
- 'secure-coding/detect-eval-with-expression': 'error',
374
- 'secure-coding/detect-child-process': 'error',
375
- 'secure-coding/no-graphql-injection': 'error',
376
- 'secure-coding/no-xxe-injection': 'error',
377
- 'secure-coding/no-xpath-injection': 'error',
378
- 'secure-coding/no-ldap-injection': 'error',
379
- 'secure-coding/no-unsanitized-html': 'error',
380
- 'secure-coding/no-unescaped-url-parameter': 'error',
381
- // A04:2021 – Insecure Design
382
- 'secure-coding/no-weak-password-recovery': 'error',
383
- 'secure-coding/no-improper-type-validation': 'error',
384
- // A05:2021 – Security Misconfiguration
385
- 'secure-coding/no-missing-security-headers': 'error',
386
- 'secure-coding/no-missing-cors-check': 'error',
387
- 'secure-coding/no-insecure-cookie-settings': 'error',
388
- 'secure-coding/no-clickjacking': 'error',
389
- 'secure-coding/no-electron-security-issues': 'error',
390
- // A07:2021 – Identification and Authentication Failures
391
- 'secure-coding/no-timing-attack': 'error',
392
- 'secure-coding/no-insecure-comparison': 'error',
393
- 'secure-coding/no-missing-csrf-protection': 'error',
394
- // A08:2021 – Software and Data Integrity Failures
395
- 'secure-coding/no-unsafe-deserialization': 'error',
396
- 'secure-coding/no-unsafe-dynamic-require': 'error',
397
- },
398
- },
399
- /**
400
- * OWASP Mobile Top 10 focused configuration
401
- *
402
- * Rules mapped to OWASP Mobile Top 10 2024 categories
403
- */
404
- 'owasp-mobile-top-10': {
405
- plugins: {
406
- 'secure-coding': exports.plugin,
407
- },
408
- rules: {
409
- // M1: Improper Credential Usage
410
- 'secure-coding/no-credentials-in-storage-api': 'error',
411
- 'secure-coding/no-credentials-in-query-params': 'error',
412
- 'secure-coding/require-secure-credential-storage': 'error',
413
- 'secure-coding/no-hardcoded-credentials': 'error',
414
- // M2: Inadequate Supply Chain Security
415
- 'secure-coding/require-dependency-integrity': 'error',
416
- 'secure-coding/detect-suspicious-dependencies': 'error',
417
- 'secure-coding/no-dynamic-dependency-loading': 'error',
418
- 'secure-coding/require-package-lock': 'error',
419
- // M3: Insecure Authentication/Authorization
420
- 'secure-coding/no-client-side-auth-logic': 'error',
421
- 'secure-coding/require-backend-authorization': 'error',
422
- 'secure-coding/no-hardcoded-session-tokens': 'error',
423
- 'secure-coding/detect-weak-password-validation': 'error',
424
- 'secure-coding/no-password-in-url': 'error',
425
- // M4: Insufficient Input/Output Validation
426
- 'secure-coding/no-unvalidated-deeplinks': 'error',
427
- 'secure-coding/require-url-validation': 'error',
428
- 'secure-coding/no-arbitrary-file-access': 'error',
429
- 'secure-coding/require-mime-type-validation': 'error',
430
- 'secure-coding/no-postmessage-origin-wildcard': 'error',
431
- 'secure-coding/require-csp-headers': 'error',
432
- // M5: Insecure Communication
433
- 'secure-coding/no-http-urls': 'error',
434
- 'secure-coding/no-disabled-certificate-validation': 'error',
435
- 'secure-coding/require-https-only': 'error',
436
- 'secure-coding/no-insecure-websocket': 'error',
437
- 'secure-coding/detect-mixed-content': 'error',
438
- 'secure-coding/no-allow-arbitrary-loads': 'error',
439
- 'secure-coding/require-network-timeout': 'error',
440
- // M6: Inadequate Privacy Controls
441
- 'secure-coding/no-pii-in-logs': 'error',
442
- 'secure-coding/no-tracking-without-consent': 'error',
443
- 'secure-coding/require-data-minimization': 'error',
444
- 'secure-coding/no-sensitive-data-in-analytics': 'error',
445
- // M7: Insufficient Binary Protections
446
- 'secure-coding/no-debug-code-in-production': 'error',
447
- 'secure-coding/require-code-minification': 'error',
448
- // M8: Security Misconfiguration
449
- 'secure-coding/no-verbose-error-messages': 'error',
450
- 'secure-coding/no-exposed-debug-endpoints': 'error',
451
- 'secure-coding/require-secure-defaults': 'error',
452
- 'secure-coding/no-permissive-cors': 'error',
453
- // M9: Insecure Data Storage
454
- 'secure-coding/no-unencrypted-local-storage': 'error',
455
- 'secure-coding/no-sensitive-data-in-cache': 'error',
456
- 'secure-coding/require-storage-encryption': 'error',
457
- 'secure-coding/no-data-in-temp-storage': 'error',
458
- 'secure-coding/require-secure-deletion': 'error',
459
- },
460
- },
461
- };
462
- /**
463
- * Default export for ESLint plugin
464
- */
465
- exports.default = exports.plugin;
@@ -1,13 +0,0 @@
1
- export interface Options {
2
- /** Detect NoSQL injection patterns. Default: true */
3
- detectNoSQL?: boolean;
4
- /** Detect ORM-specific vulnerabilities. Default: true */
5
- detectORMs?: boolean;
6
- /** Trusted data sources that bypass detection */
7
- trustedSources?: string[];
8
- /** Show framework-specific recommendations. Default: true */
9
- frameworkHints?: boolean;
10
- /** Strategy for fixing injection: 'parameterize', 'orm', 'sanitize', 'auto' */
11
- strategy?: 'parameterize' | 'orm' | 'sanitize' | 'auto';
12
- }
13
- export declare const databaseInjection: ESLintUtils.RuleModule<MessageIds, Options, unknown, ESLintUtils.RuleListener>;