eslint-plugin-sdl-2 1.0.4

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 (418) hide show
  1. package/CHANGELOG.md +5316 -0
  2. package/LICENSE +21 -0
  3. package/README.md +133 -0
  4. package/dist/_internal/ast-utils.d.ts +17 -0
  5. package/dist/_internal/ast-utils.d.ts.map +1 -0
  6. package/dist/_internal/ast-utils.js +93 -0
  7. package/dist/_internal/ast-utils.js.map +1 -0
  8. package/dist/_internal/config-references.d.ts +5 -0
  9. package/dist/_internal/config-references.d.ts.map +1 -0
  10. package/dist/_internal/config-references.js +13 -0
  11. package/dist/_internal/config-references.js.map +1 -0
  12. package/dist/_internal/create-rule.d.ts +9 -0
  13. package/dist/_internal/create-rule.d.ts.map +1 -0
  14. package/dist/_internal/create-rule.js +6 -0
  15. package/dist/_internal/create-rule.js.map +1 -0
  16. package/dist/_internal/domparser.d.ts +19 -0
  17. package/dist/_internal/domparser.d.ts.map +1 -0
  18. package/dist/_internal/domparser.js +45 -0
  19. package/dist/_internal/domparser.js.map +1 -0
  20. package/dist/_internal/electron-web-preferences.d.ts +14 -0
  21. package/dist/_internal/electron-web-preferences.d.ts.map +1 -0
  22. package/dist/_internal/electron-web-preferences.js +63 -0
  23. package/dist/_internal/electron-web-preferences.js.map +1 -0
  24. package/dist/_internal/estree-utils.d.ts +51 -0
  25. package/dist/_internal/estree-utils.d.ts.map +1 -0
  26. package/dist/_internal/estree-utils.js +112 -0
  27. package/dist/_internal/estree-utils.js.map +1 -0
  28. package/dist/_internal/node-tls-config.d.ts +44 -0
  29. package/dist/_internal/node-tls-config.d.ts.map +1 -0
  30. package/dist/_internal/node-tls-config.js +101 -0
  31. package/dist/_internal/node-tls-config.js.map +1 -0
  32. package/dist/_internal/rules-registry.d.ts +10 -0
  33. package/dist/_internal/rules-registry.d.ts.map +1 -0
  34. package/dist/_internal/rules-registry.js +148 -0
  35. package/dist/_internal/rules-registry.js.map +1 -0
  36. package/dist/_internal/script-element.d.ts +7 -0
  37. package/dist/_internal/script-element.d.ts.map +1 -0
  38. package/dist/_internal/script-element.js +46 -0
  39. package/dist/_internal/script-element.js.map +1 -0
  40. package/dist/_internal/worker-code-loading.d.ts +69 -0
  41. package/dist/_internal/worker-code-loading.d.ts.map +1 -0
  42. package/dist/_internal/worker-code-loading.js +134 -0
  43. package/dist/_internal/worker-code-loading.js.map +1 -0
  44. package/dist/plugin.cjs +6036 -0
  45. package/dist/plugin.cjs.map +7 -0
  46. package/dist/plugin.d.cts +11 -0
  47. package/dist/plugin.d.ts +11 -0
  48. package/dist/plugin.d.ts.map +1 -0
  49. package/dist/plugin.js +235 -0
  50. package/dist/plugin.js.map +1 -0
  51. package/dist/rules/no-angular-bypass-sanitizer.d.ts +5 -0
  52. package/dist/rules/no-angular-bypass-sanitizer.d.ts.map +1 -0
  53. package/dist/rules/no-angular-bypass-sanitizer.js +32 -0
  54. package/dist/rules/no-angular-bypass-sanitizer.js.map +1 -0
  55. package/dist/rules/no-angular-bypass-security-trust-html.d.ts +5 -0
  56. package/dist/rules/no-angular-bypass-security-trust-html.d.ts.map +1 -0
  57. package/dist/rules/no-angular-bypass-security-trust-html.js +51 -0
  58. package/dist/rules/no-angular-bypass-security-trust-html.js.map +1 -0
  59. package/dist/rules/no-angular-innerhtml-binding.d.ts +5 -0
  60. package/dist/rules/no-angular-innerhtml-binding.d.ts.map +1 -0
  61. package/dist/rules/no-angular-innerhtml-binding.js +57 -0
  62. package/dist/rules/no-angular-innerhtml-binding.js.map +1 -0
  63. package/dist/rules/no-angular-sanitization-trusted-urls.d.ts +5 -0
  64. package/dist/rules/no-angular-sanitization-trusted-urls.d.ts.map +1 -0
  65. package/dist/rules/no-angular-sanitization-trusted-urls.js +32 -0
  66. package/dist/rules/no-angular-sanitization-trusted-urls.js.map +1 -0
  67. package/dist/rules/no-angularjs-bypass-sce.d.ts +5 -0
  68. package/dist/rules/no-angularjs-bypass-sce.d.ts.map +1 -0
  69. package/dist/rules/no-angularjs-bypass-sce.js +80 -0
  70. package/dist/rules/no-angularjs-bypass-sce.js.map +1 -0
  71. package/dist/rules/no-angularjs-enable-svg.d.ts +5 -0
  72. package/dist/rules/no-angularjs-enable-svg.d.ts.map +1 -0
  73. package/dist/rules/no-angularjs-enable-svg.js +48 -0
  74. package/dist/rules/no-angularjs-enable-svg.js.map +1 -0
  75. package/dist/rules/no-angularjs-ng-bind-html-without-sanitize.d.ts +5 -0
  76. package/dist/rules/no-angularjs-ng-bind-html-without-sanitize.d.ts.map +1 -0
  77. package/dist/rules/no-angularjs-ng-bind-html-without-sanitize.js +64 -0
  78. package/dist/rules/no-angularjs-ng-bind-html-without-sanitize.js.map +1 -0
  79. package/dist/rules/no-angularjs-sanitization-whitelist.d.ts +5 -0
  80. package/dist/rules/no-angularjs-sanitization-whitelist.d.ts.map +1 -0
  81. package/dist/rules/no-angularjs-sanitization-whitelist.js +32 -0
  82. package/dist/rules/no-angularjs-sanitization-whitelist.js.map +1 -0
  83. package/dist/rules/no-angularjs-sce-resource-url-wildcard.d.ts +5 -0
  84. package/dist/rules/no-angularjs-sce-resource-url-wildcard.d.ts.map +1 -0
  85. package/dist/rules/no-angularjs-sce-resource-url-wildcard.js +69 -0
  86. package/dist/rules/no-angularjs-sce-resource-url-wildcard.js.map +1 -0
  87. package/dist/rules/no-child-process-exec.d.ts +5 -0
  88. package/dist/rules/no-child-process-exec.d.ts.map +1 -0
  89. package/dist/rules/no-child-process-exec.js +141 -0
  90. package/dist/rules/no-child-process-exec.js.map +1 -0
  91. package/dist/rules/no-child-process-shell-true.d.ts +5 -0
  92. package/dist/rules/no-child-process-shell-true.d.ts.map +1 -0
  93. package/dist/rules/no-child-process-shell-true.js +89 -0
  94. package/dist/rules/no-child-process-shell-true.js.map +1 -0
  95. package/dist/rules/no-cookies.d.ts +5 -0
  96. package/dist/rules/no-cookies.d.ts.map +1 -0
  97. package/dist/rules/no-cookies.js +38 -0
  98. package/dist/rules/no-cookies.js.map +1 -0
  99. package/dist/rules/no-document-domain.d.ts +5 -0
  100. package/dist/rules/no-document-domain.d.ts.map +1 -0
  101. package/dist/rules/no-document-domain.js +41 -0
  102. package/dist/rules/no-document-domain.js.map +1 -0
  103. package/dist/rules/no-document-execcommand-insert-html.d.ts +5 -0
  104. package/dist/rules/no-document-execcommand-insert-html.d.ts.map +1 -0
  105. package/dist/rules/no-document-execcommand-insert-html.js +57 -0
  106. package/dist/rules/no-document-execcommand-insert-html.js.map +1 -0
  107. package/dist/rules/no-document-parse-html-unsafe.d.ts +5 -0
  108. package/dist/rules/no-document-parse-html-unsafe.d.ts.map +1 -0
  109. package/dist/rules/no-document-parse-html-unsafe.js +67 -0
  110. package/dist/rules/no-document-parse-html-unsafe.js.map +1 -0
  111. package/dist/rules/no-document-write.d.ts +5 -0
  112. package/dist/rules/no-document-write.d.ts.map +1 -0
  113. package/dist/rules/no-document-write.js +40 -0
  114. package/dist/rules/no-document-write.js.map +1 -0
  115. package/dist/rules/no-domparser-html-without-sanitization.d.ts +5 -0
  116. package/dist/rules/no-domparser-html-without-sanitization.d.ts.map +1 -0
  117. package/dist/rules/no-domparser-html-without-sanitization.js +56 -0
  118. package/dist/rules/no-domparser-html-without-sanitization.js.map +1 -0
  119. package/dist/rules/no-domparser-svg-without-sanitization.d.ts +5 -0
  120. package/dist/rules/no-domparser-svg-without-sanitization.d.ts.map +1 -0
  121. package/dist/rules/no-domparser-svg-without-sanitization.js +56 -0
  122. package/dist/rules/no-domparser-svg-without-sanitization.js.map +1 -0
  123. package/dist/rules/no-dynamic-import-unsafe-url.d.ts +5 -0
  124. package/dist/rules/no-dynamic-import-unsafe-url.d.ts.map +1 -0
  125. package/dist/rules/no-dynamic-import-unsafe-url.js +47 -0
  126. package/dist/rules/no-dynamic-import-unsafe-url.js.map +1 -0
  127. package/dist/rules/no-electron-allow-running-insecure-content.d.ts +5 -0
  128. package/dist/rules/no-electron-allow-running-insecure-content.d.ts.map +1 -0
  129. package/dist/rules/no-electron-allow-running-insecure-content.js +30 -0
  130. package/dist/rules/no-electron-allow-running-insecure-content.js.map +1 -0
  131. package/dist/rules/no-electron-dangerous-blink-features.d.ts +5 -0
  132. package/dist/rules/no-electron-dangerous-blink-features.d.ts.map +1 -0
  133. package/dist/rules/no-electron-dangerous-blink-features.js +89 -0
  134. package/dist/rules/no-electron-dangerous-blink-features.js.map +1 -0
  135. package/dist/rules/no-electron-disable-context-isolation.d.ts +5 -0
  136. package/dist/rules/no-electron-disable-context-isolation.d.ts.map +1 -0
  137. package/dist/rules/no-electron-disable-context-isolation.js +30 -0
  138. package/dist/rules/no-electron-disable-context-isolation.js.map +1 -0
  139. package/dist/rules/no-electron-disable-sandbox.d.ts +5 -0
  140. package/dist/rules/no-electron-disable-sandbox.d.ts.map +1 -0
  141. package/dist/rules/no-electron-disable-sandbox.js +30 -0
  142. package/dist/rules/no-electron-disable-sandbox.js.map +1 -0
  143. package/dist/rules/no-electron-disable-web-security.d.ts +5 -0
  144. package/dist/rules/no-electron-disable-web-security.d.ts.map +1 -0
  145. package/dist/rules/no-electron-disable-web-security.js +30 -0
  146. package/dist/rules/no-electron-disable-web-security.js.map +1 -0
  147. package/dist/rules/no-electron-enable-remote-module.d.ts +5 -0
  148. package/dist/rules/no-electron-enable-remote-module.d.ts.map +1 -0
  149. package/dist/rules/no-electron-enable-remote-module.js +30 -0
  150. package/dist/rules/no-electron-enable-remote-module.js.map +1 -0
  151. package/dist/rules/no-electron-enable-webview-tag.d.ts +5 -0
  152. package/dist/rules/no-electron-enable-webview-tag.d.ts.map +1 -0
  153. package/dist/rules/no-electron-enable-webview-tag.js +30 -0
  154. package/dist/rules/no-electron-enable-webview-tag.js.map +1 -0
  155. package/dist/rules/no-electron-experimental-features.d.ts +5 -0
  156. package/dist/rules/no-electron-experimental-features.d.ts.map +1 -0
  157. package/dist/rules/no-electron-experimental-features.js +30 -0
  158. package/dist/rules/no-electron-experimental-features.js.map +1 -0
  159. package/dist/rules/no-electron-expose-raw-ipc-renderer.d.ts +5 -0
  160. package/dist/rules/no-electron-expose-raw-ipc-renderer.d.ts.map +1 -0
  161. package/dist/rules/no-electron-expose-raw-ipc-renderer.js +108 -0
  162. package/dist/rules/no-electron-expose-raw-ipc-renderer.js.map +1 -0
  163. package/dist/rules/no-electron-insecure-certificate-error-handler.d.ts +5 -0
  164. package/dist/rules/no-electron-insecure-certificate-error-handler.d.ts.map +1 -0
  165. package/dist/rules/no-electron-insecure-certificate-error-handler.js +91 -0
  166. package/dist/rules/no-electron-insecure-certificate-error-handler.js.map +1 -0
  167. package/dist/rules/no-electron-insecure-certificate-verify-proc.d.ts +5 -0
  168. package/dist/rules/no-electron-insecure-certificate-verify-proc.d.ts.map +1 -0
  169. package/dist/rules/no-electron-insecure-certificate-verify-proc.js +75 -0
  170. package/dist/rules/no-electron-insecure-certificate-verify-proc.js.map +1 -0
  171. package/dist/rules/no-electron-insecure-permission-request-handler.d.ts +5 -0
  172. package/dist/rules/no-electron-insecure-permission-request-handler.d.ts.map +1 -0
  173. package/dist/rules/no-electron-insecure-permission-request-handler.js +75 -0
  174. package/dist/rules/no-electron-insecure-permission-request-handler.js.map +1 -0
  175. package/dist/rules/no-electron-node-integration.d.ts +5 -0
  176. package/dist/rules/no-electron-node-integration.d.ts.map +1 -0
  177. package/dist/rules/no-electron-node-integration.js +52 -0
  178. package/dist/rules/no-electron-node-integration.js.map +1 -0
  179. package/dist/rules/no-electron-permission-check-handler-allow-all.d.ts +5 -0
  180. package/dist/rules/no-electron-permission-check-handler-allow-all.d.ts.map +1 -0
  181. package/dist/rules/no-electron-permission-check-handler-allow-all.js +63 -0
  182. package/dist/rules/no-electron-permission-check-handler-allow-all.js.map +1 -0
  183. package/dist/rules/no-electron-unchecked-ipc-sender.d.ts +5 -0
  184. package/dist/rules/no-electron-unchecked-ipc-sender.d.ts.map +1 -0
  185. package/dist/rules/no-electron-unchecked-ipc-sender.js +90 -0
  186. package/dist/rules/no-electron-unchecked-ipc-sender.js.map +1 -0
  187. package/dist/rules/no-electron-unrestricted-navigation.d.ts +5 -0
  188. package/dist/rules/no-electron-unrestricted-navigation.d.ts.map +1 -0
  189. package/dist/rules/no-electron-unrestricted-navigation.js +100 -0
  190. package/dist/rules/no-electron-unrestricted-navigation.js.map +1 -0
  191. package/dist/rules/no-electron-untrusted-open-external.d.ts +5 -0
  192. package/dist/rules/no-electron-untrusted-open-external.d.ts.map +1 -0
  193. package/dist/rules/no-electron-untrusted-open-external.js +92 -0
  194. package/dist/rules/no-electron-untrusted-open-external.js.map +1 -0
  195. package/dist/rules/no-electron-webview-allowpopups.d.ts +5 -0
  196. package/dist/rules/no-electron-webview-allowpopups.d.ts.map +1 -0
  197. package/dist/rules/no-electron-webview-allowpopups.js +85 -0
  198. package/dist/rules/no-electron-webview-allowpopups.js.map +1 -0
  199. package/dist/rules/no-electron-webview-insecure-webpreferences.d.ts +5 -0
  200. package/dist/rules/no-electron-webview-insecure-webpreferences.d.ts.map +1 -0
  201. package/dist/rules/no-electron-webview-insecure-webpreferences.js +88 -0
  202. package/dist/rules/no-electron-webview-insecure-webpreferences.js.map +1 -0
  203. package/dist/rules/no-electron-webview-node-integration.d.ts +5 -0
  204. package/dist/rules/no-electron-webview-node-integration.d.ts.map +1 -0
  205. package/dist/rules/no-electron-webview-node-integration.js +107 -0
  206. package/dist/rules/no-electron-webview-node-integration.js.map +1 -0
  207. package/dist/rules/no-html-method.d.ts +5 -0
  208. package/dist/rules/no-html-method.d.ts.map +1 -0
  209. package/dist/rules/no-html-method.js +42 -0
  210. package/dist/rules/no-html-method.js.map +1 -0
  211. package/dist/rules/no-http-request-to-insecure-protocol.d.ts +5 -0
  212. package/dist/rules/no-http-request-to-insecure-protocol.d.ts.map +1 -0
  213. package/dist/rules/no-http-request-to-insecure-protocol.js +94 -0
  214. package/dist/rules/no-http-request-to-insecure-protocol.js.map +1 -0
  215. package/dist/rules/no-iframe-srcdoc.d.ts +5 -0
  216. package/dist/rules/no-iframe-srcdoc.d.ts.map +1 -0
  217. package/dist/rules/no-iframe-srcdoc.js +144 -0
  218. package/dist/rules/no-iframe-srcdoc.js.map +1 -0
  219. package/dist/rules/no-inner-html.d.ts +5 -0
  220. package/dist/rules/no-inner-html.d.ts.map +1 -0
  221. package/dist/rules/no-inner-html.js +67 -0
  222. package/dist/rules/no-inner-html.js.map +1 -0
  223. package/dist/rules/no-insecure-random.d.ts +5 -0
  224. package/dist/rules/no-insecure-random.d.ts.map +1 -0
  225. package/dist/rules/no-insecure-random.js +95 -0
  226. package/dist/rules/no-insecure-random.js.map +1 -0
  227. package/dist/rules/no-insecure-tls-agent-options.d.ts +5 -0
  228. package/dist/rules/no-insecure-tls-agent-options.d.ts.map +1 -0
  229. package/dist/rules/no-insecure-tls-agent-options.js +73 -0
  230. package/dist/rules/no-insecure-tls-agent-options.js.map +1 -0
  231. package/dist/rules/no-insecure-url.d.ts +12 -0
  232. package/dist/rules/no-insecure-url.d.ts.map +1 -0
  233. package/dist/rules/no-insecure-url.js +142 -0
  234. package/dist/rules/no-insecure-url.js.map +1 -0
  235. package/dist/rules/no-location-javascript-url.d.ts +5 -0
  236. package/dist/rules/no-location-javascript-url.d.ts.map +1 -0
  237. package/dist/rules/no-location-javascript-url.js +98 -0
  238. package/dist/rules/no-location-javascript-url.js.map +1 -0
  239. package/dist/rules/no-message-event-without-origin-check.d.ts +5 -0
  240. package/dist/rules/no-message-event-without-origin-check.d.ts.map +1 -0
  241. package/dist/rules/no-message-event-without-origin-check.js +183 -0
  242. package/dist/rules/no-message-event-without-origin-check.js.map +1 -0
  243. package/dist/rules/no-msapp-exec-unsafe.d.ts +5 -0
  244. package/dist/rules/no-msapp-exec-unsafe.d.ts.map +1 -0
  245. package/dist/rules/no-msapp-exec-unsafe.js +32 -0
  246. package/dist/rules/no-msapp-exec-unsafe.js.map +1 -0
  247. package/dist/rules/no-node-tls-check-server-identity-bypass.d.ts +5 -0
  248. package/dist/rules/no-node-tls-check-server-identity-bypass.d.ts.map +1 -0
  249. package/dist/rules/no-node-tls-check-server-identity-bypass.js +95 -0
  250. package/dist/rules/no-node-tls-check-server-identity-bypass.js.map +1 -0
  251. package/dist/rules/no-node-tls-legacy-protocol.d.ts +5 -0
  252. package/dist/rules/no-node-tls-legacy-protocol.d.ts.map +1 -0
  253. package/dist/rules/no-node-tls-legacy-protocol.js +106 -0
  254. package/dist/rules/no-node-tls-legacy-protocol.js.map +1 -0
  255. package/dist/rules/no-node-tls-reject-unauthorized-zero.d.ts +5 -0
  256. package/dist/rules/no-node-tls-reject-unauthorized-zero.d.ts.map +1 -0
  257. package/dist/rules/no-node-tls-reject-unauthorized-zero.js +93 -0
  258. package/dist/rules/no-node-tls-reject-unauthorized-zero.js.map +1 -0
  259. package/dist/rules/no-node-tls-security-level-zero.d.ts +5 -0
  260. package/dist/rules/no-node-tls-security-level-zero.d.ts.map +1 -0
  261. package/dist/rules/no-node-tls-security-level-zero.js +80 -0
  262. package/dist/rules/no-node-tls-security-level-zero.js.map +1 -0
  263. package/dist/rules/no-node-vm-run-in-context.d.ts +5 -0
  264. package/dist/rules/no-node-vm-run-in-context.d.ts.map +1 -0
  265. package/dist/rules/no-node-vm-run-in-context.js +186 -0
  266. package/dist/rules/no-node-vm-run-in-context.js.map +1 -0
  267. package/dist/rules/no-node-vm-source-text-module.d.ts +5 -0
  268. package/dist/rules/no-node-vm-source-text-module.d.ts.map +1 -0
  269. package/dist/rules/no-node-vm-source-text-module.js +126 -0
  270. package/dist/rules/no-node-vm-source-text-module.js.map +1 -0
  271. package/dist/rules/no-node-worker-threads-eval.d.ts +5 -0
  272. package/dist/rules/no-node-worker-threads-eval.d.ts.map +1 -0
  273. package/dist/rules/no-node-worker-threads-eval.js +151 -0
  274. package/dist/rules/no-node-worker-threads-eval.js.map +1 -0
  275. package/dist/rules/no-nonnull-assertion-on-security-input.d.ts +5 -0
  276. package/dist/rules/no-nonnull-assertion-on-security-input.d.ts.map +1 -0
  277. package/dist/rules/no-nonnull-assertion-on-security-input.js +48 -0
  278. package/dist/rules/no-nonnull-assertion-on-security-input.js.map +1 -0
  279. package/dist/rules/no-postmessage-star-origin.d.ts +5 -0
  280. package/dist/rules/no-postmessage-star-origin.d.ts.map +1 -0
  281. package/dist/rules/no-postmessage-star-origin.js +58 -0
  282. package/dist/rules/no-postmessage-star-origin.js.map +1 -0
  283. package/dist/rules/no-postmessage-without-origin-allowlist.d.ts +5 -0
  284. package/dist/rules/no-postmessage-without-origin-allowlist.d.ts.map +1 -0
  285. package/dist/rules/no-postmessage-without-origin-allowlist.js +80 -0
  286. package/dist/rules/no-postmessage-without-origin-allowlist.js.map +1 -0
  287. package/dist/rules/no-range-create-contextual-fragment.d.ts +5 -0
  288. package/dist/rules/no-range-create-contextual-fragment.d.ts.map +1 -0
  289. package/dist/rules/no-range-create-contextual-fragment.js +64 -0
  290. package/dist/rules/no-range-create-contextual-fragment.js.map +1 -0
  291. package/dist/rules/no-script-src-data-url.d.ts +5 -0
  292. package/dist/rules/no-script-src-data-url.d.ts.map +1 -0
  293. package/dist/rules/no-script-src-data-url.js +108 -0
  294. package/dist/rules/no-script-src-data-url.js.map +1 -0
  295. package/dist/rules/no-script-text.d.ts +5 -0
  296. package/dist/rules/no-script-text.d.ts.map +1 -0
  297. package/dist/rules/no-script-text.js +52 -0
  298. package/dist/rules/no-script-text.js.map +1 -0
  299. package/dist/rules/no-service-worker-unsafe-script-url.d.ts +5 -0
  300. package/dist/rules/no-service-worker-unsafe-script-url.d.ts.map +1 -0
  301. package/dist/rules/no-service-worker-unsafe-script-url.js +52 -0
  302. package/dist/rules/no-service-worker-unsafe-script-url.js.map +1 -0
  303. package/dist/rules/no-set-html-unsafe.d.ts +5 -0
  304. package/dist/rules/no-set-html-unsafe.d.ts.map +1 -0
  305. package/dist/rules/no-set-html-unsafe.js +48 -0
  306. package/dist/rules/no-set-html-unsafe.js.map +1 -0
  307. package/dist/rules/no-trusted-types-policy-pass-through.d.ts +5 -0
  308. package/dist/rules/no-trusted-types-policy-pass-through.d.ts.map +1 -0
  309. package/dist/rules/no-trusted-types-policy-pass-through.js +115 -0
  310. package/dist/rules/no-trusted-types-policy-pass-through.js.map +1 -0
  311. package/dist/rules/no-unsafe-alloc.d.ts +5 -0
  312. package/dist/rules/no-unsafe-alloc.d.ts.map +1 -0
  313. package/dist/rules/no-unsafe-alloc.js +51 -0
  314. package/dist/rules/no-unsafe-alloc.js.map +1 -0
  315. package/dist/rules/no-unsafe-cast-to-trusted-types.d.ts +5 -0
  316. package/dist/rules/no-unsafe-cast-to-trusted-types.d.ts.map +1 -0
  317. package/dist/rules/no-unsafe-cast-to-trusted-types.js +89 -0
  318. package/dist/rules/no-unsafe-cast-to-trusted-types.js.map +1 -0
  319. package/dist/rules/no-window-open-without-noopener.d.ts +5 -0
  320. package/dist/rules/no-window-open-without-noopener.d.ts.map +1 -0
  321. package/dist/rules/no-window-open-without-noopener.js +84 -0
  322. package/dist/rules/no-window-open-without-noopener.js.map +1 -0
  323. package/dist/rules/no-winjs-html-unsafe.d.ts +5 -0
  324. package/dist/rules/no-winjs-html-unsafe.d.ts.map +1 -0
  325. package/dist/rules/no-winjs-html-unsafe.js +32 -0
  326. package/dist/rules/no-winjs-html-unsafe.js.map +1 -0
  327. package/dist/rules/no-worker-blob-url.d.ts +5 -0
  328. package/dist/rules/no-worker-blob-url.d.ts.map +1 -0
  329. package/dist/rules/no-worker-blob-url.js +64 -0
  330. package/dist/rules/no-worker-blob-url.js.map +1 -0
  331. package/dist/rules/no-worker-data-url.d.ts +5 -0
  332. package/dist/rules/no-worker-data-url.d.ts.map +1 -0
  333. package/dist/rules/no-worker-data-url.js +67 -0
  334. package/dist/rules/no-worker-data-url.js.map +1 -0
  335. package/docs/rules/getting-started.md +70 -0
  336. package/docs/rules/no-angular-bypass-sanitizer.md +69 -0
  337. package/docs/rules/no-angular-bypass-security-trust-html.md +59 -0
  338. package/docs/rules/no-angular-innerhtml-binding.md +59 -0
  339. package/docs/rules/no-angular-sanitization-trusted-urls.md +64 -0
  340. package/docs/rules/no-angularjs-bypass-sce.md +64 -0
  341. package/docs/rules/no-angularjs-enable-svg.md +59 -0
  342. package/docs/rules/no-angularjs-ng-bind-html-without-sanitize.md +59 -0
  343. package/docs/rules/no-angularjs-sanitization-whitelist.md +63 -0
  344. package/docs/rules/no-angularjs-sce-resource-url-wildcard.md +62 -0
  345. package/docs/rules/no-child-process-exec.md +101 -0
  346. package/docs/rules/no-child-process-shell-true.md +59 -0
  347. package/docs/rules/no-cookies.md +61 -0
  348. package/docs/rules/no-document-domain.md +59 -0
  349. package/docs/rules/no-document-execcommand-insert-html.md +69 -0
  350. package/docs/rules/no-document-parse-html-unsafe.md +72 -0
  351. package/docs/rules/no-document-write.md +64 -0
  352. package/docs/rules/no-domparser-html-without-sanitization.md +59 -0
  353. package/docs/rules/no-domparser-svg-without-sanitization.md +71 -0
  354. package/docs/rules/no-dynamic-import-unsafe-url.md +81 -0
  355. package/docs/rules/no-electron-allow-running-insecure-content.md +69 -0
  356. package/docs/rules/no-electron-dangerous-blink-features.md +77 -0
  357. package/docs/rules/no-electron-disable-context-isolation.md +69 -0
  358. package/docs/rules/no-electron-disable-sandbox.md +69 -0
  359. package/docs/rules/no-electron-disable-web-security.md +69 -0
  360. package/docs/rules/no-electron-enable-remote-module.md +69 -0
  361. package/docs/rules/no-electron-enable-webview-tag.md +77 -0
  362. package/docs/rules/no-electron-experimental-features.md +77 -0
  363. package/docs/rules/no-electron-expose-raw-ipc-renderer.md +79 -0
  364. package/docs/rules/no-electron-insecure-certificate-error-handler.md +72 -0
  365. package/docs/rules/no-electron-insecure-certificate-verify-proc.md +63 -0
  366. package/docs/rules/no-electron-insecure-permission-request-handler.md +67 -0
  367. package/docs/rules/no-electron-node-integration.md +70 -0
  368. package/docs/rules/no-electron-permission-check-handler-allow-all.md +66 -0
  369. package/docs/rules/no-electron-unchecked-ipc-sender.md +62 -0
  370. package/docs/rules/no-electron-unrestricted-navigation.md +64 -0
  371. package/docs/rules/no-electron-untrusted-open-external.md +65 -0
  372. package/docs/rules/no-electron-webview-allowpopups.md +59 -0
  373. package/docs/rules/no-electron-webview-insecure-webpreferences.md +84 -0
  374. package/docs/rules/no-electron-webview-node-integration.md +59 -0
  375. package/docs/rules/no-html-method.md +58 -0
  376. package/docs/rules/no-http-request-to-insecure-protocol.md +59 -0
  377. package/docs/rules/no-iframe-srcdoc.md +76 -0
  378. package/docs/rules/no-inner-html.md +65 -0
  379. package/docs/rules/no-insecure-random.md +66 -0
  380. package/docs/rules/no-insecure-tls-agent-options.md +59 -0
  381. package/docs/rules/no-insecure-url.md +72 -0
  382. package/docs/rules/no-location-javascript-url.md +59 -0
  383. package/docs/rules/no-message-event-without-origin-check.md +82 -0
  384. package/docs/rules/no-msapp-exec-unsafe.md +59 -0
  385. package/docs/rules/no-node-tls-check-server-identity-bypass.md +88 -0
  386. package/docs/rules/no-node-tls-legacy-protocol.md +80 -0
  387. package/docs/rules/no-node-tls-reject-unauthorized-zero.md +61 -0
  388. package/docs/rules/no-node-tls-security-level-zero.md +77 -0
  389. package/docs/rules/no-node-vm-run-in-context.md +89 -0
  390. package/docs/rules/no-node-vm-source-text-module.md +79 -0
  391. package/docs/rules/no-node-worker-threads-eval.md +82 -0
  392. package/docs/rules/no-nonnull-assertion-on-security-input.md +59 -0
  393. package/docs/rules/no-postmessage-star-origin.md +59 -0
  394. package/docs/rules/no-postmessage-without-origin-allowlist.md +59 -0
  395. package/docs/rules/no-range-create-contextual-fragment.md +64 -0
  396. package/docs/rules/no-script-src-data-url.md +83 -0
  397. package/docs/rules/no-script-text.md +80 -0
  398. package/docs/rules/no-service-worker-unsafe-script-url.md +85 -0
  399. package/docs/rules/no-set-html-unsafe.md +64 -0
  400. package/docs/rules/no-trusted-types-policy-pass-through.md +68 -0
  401. package/docs/rules/no-unsafe-alloc.md +62 -0
  402. package/docs/rules/no-unsafe-cast-to-trusted-types.md +59 -0
  403. package/docs/rules/no-window-open-without-noopener.md +63 -0
  404. package/docs/rules/no-winjs-html-unsafe.md +60 -0
  405. package/docs/rules/no-worker-blob-url.md +86 -0
  406. package/docs/rules/no-worker-data-url.md +85 -0
  407. package/docs/rules/overview.md +111 -0
  408. package/docs/rules/presets/angular.md +35 -0
  409. package/docs/rules/presets/angularjs.md +36 -0
  410. package/docs/rules/presets/common.md +59 -0
  411. package/docs/rules/presets/electron.md +51 -0
  412. package/docs/rules/presets/index.md +26 -0
  413. package/docs/rules/presets/node.md +43 -0
  414. package/docs/rules/presets/react.md +33 -0
  415. package/docs/rules/presets/recommended.md +104 -0
  416. package/docs/rules/presets/required.md +99 -0
  417. package/docs/rules/presets/typescript.md +34 -0
  418. package/package.json +583 -0
@@ -0,0 +1,59 @@
1
+ # no-electron-webview-node-integration
2
+
3
+ Disallow Electron `<webview>` configurations that enable node integration.
4
+
5
+ ## Targeted pattern scope
6
+
7
+ Electron `<webview>` configurations enabling node integration flags.
8
+
9
+ ## What this rule reports
10
+
11
+ `webview` `nodeintegration`/`nodeintegrationinsubframes`/`webpreferences` node-integration flags.
12
+
13
+ ## Why this rule exists
14
+
15
+ Node integration in untrusted renderer contexts can break isolation and enable code-execution paths.
16
+
17
+ ## ❌ Incorrect
18
+
19
+ ```ts
20
+ const view = <webview nodeintegration src="https://example.com" />;
21
+ ```
22
+
23
+ ## ✅ Correct
24
+
25
+ ```ts
26
+ const view = <webview src="https://example.com" webpreferences="sandbox=yes" />;
27
+ ```
28
+
29
+ ## ESLint flat config example
30
+
31
+ ```ts
32
+ import sdl from "eslint-plugin-sdl-2";
33
+
34
+ export default [
35
+ {
36
+ plugins: { sdl },
37
+
38
+ rules: {
39
+ "sdl/no-electron-webview-node-integration": "error",
40
+ },
41
+ },
42
+ ];
43
+ ```
44
+
45
+ ## When not to use it
46
+
47
+ Disable only for legacy webview flows with documented trust guarantees and compensating isolation controls.
48
+
49
+ ## Package documentation
50
+
51
+ - [Rule source](../../src/rules/no-electron-webview-node-integration.ts)
52
+
53
+ ## Further reading
54
+
55
+ > **Rule catalog ID:** R039
56
+
57
+ - [OWASP Top 10: Injection](https://owasp.org/www-project-top-ten/)
58
+
59
+ - [OWASP Top 10: Security Misconfiguration](https://owasp.org/www-project-top-ten/)
@@ -0,0 +1,58 @@
1
+ # no-html-method
2
+
3
+ Disallow unsafe HTML injection through jQuery-like `html()` method usage.
4
+
5
+ ## Targeted pattern scope
6
+
7
+ This rule targets calls to `html(...)` methods on DOM wrapper libraries where
8
+ arguments are interpreted as HTML.
9
+
10
+ ## What this rule reports
11
+
12
+ This rule reports `html(...)` invocations that write markup directly to the DOM.
13
+
14
+ ## Why this rule exists
15
+
16
+ Direct HTML insertion can execute attacker-controlled markup and script payloads
17
+ when inputs are not strongly sanitized.
18
+
19
+ ## ❌ Incorrect
20
+
21
+ ```ts
22
+ $("#content").html(userSuppliedHtml);
23
+ ```
24
+
25
+ ## ✅ Correct
26
+
27
+ ```ts
28
+ $("#content").text(userSuppliedHtml);
29
+ ```
30
+
31
+ ## ESLint flat config example
32
+
33
+ ```ts
34
+ import sdl from "eslint-plugin-sdl-2";
35
+
36
+ export default [
37
+ {
38
+ plugins: { sdl },
39
+ rules: {
40
+ "sdl/no-html-method": "error",
41
+ },
42
+ },
43
+ ];
44
+ ```
45
+
46
+ ## When not to use it
47
+
48
+ Disable only for trusted, static markup paths where inputs are guaranteed safe.
49
+
50
+ ## Package documentation
51
+
52
+ - [Rule source](../../src/rules/no-html-method.ts)
53
+
54
+ ## Further reading
55
+
56
+ > **Rule catalog ID:** R018
57
+
58
+ - [Legacy rule inspiration](https://github.com/microsoft/tslint-microsoft-contrib/blob/master/src/noInnerHtml.ts)
@@ -0,0 +1,59 @@
1
+ # no-http-request-to-insecure-protocol
2
+
3
+ Disallow application HTTP client calls that use insecure `http://` endpoints.
4
+
5
+ ## Targeted pattern scope
6
+
7
+ Network client calls to insecure `http://` endpoints.
8
+
9
+ ## What this rule reports
10
+
11
+ `http`/`https`/`fetch` calls whose URL literal starts with `http://`.
12
+
13
+ ## Why this rule exists
14
+
15
+ Unencrypted HTTP can expose credentials, tokens, and payload integrity to active network attackers.
16
+
17
+ ## ❌ Incorrect
18
+
19
+ ```ts
20
+ http.get("http://api.example.com/status");
21
+ ```
22
+
23
+ ## ✅ Correct
24
+
25
+ ```ts
26
+ https.get("https://api.example.com/status");
27
+ ```
28
+
29
+ ## ESLint flat config example
30
+
31
+ ```ts
32
+ import sdl from "eslint-plugin-sdl-2";
33
+
34
+ export default [
35
+ {
36
+ plugins: { sdl },
37
+
38
+ rules: {
39
+ "sdl/no-http-request-to-insecure-protocol": "error",
40
+ },
41
+ },
42
+ ];
43
+ ```
44
+
45
+ ## When not to use it
46
+
47
+ Disable only for local development or legacy endpoints that are explicitly non-production and otherwise protected.
48
+
49
+ ## Package documentation
50
+
51
+ - [Rule source](../../src/rules/no-http-request-to-insecure-protocol.ts)
52
+
53
+ ## Further reading
54
+
55
+ > **Rule catalog ID:** R040
56
+
57
+ - [OWASP Top 10: Injection](https://owasp.org/www-project-top-ten/)
58
+
59
+ - [OWASP Top 10: Security Misconfiguration](https://owasp.org/www-project-top-ten/)
@@ -0,0 +1,76 @@
1
+ # no-iframe-srcdoc
2
+
3
+ Disallow populating `iframe.srcdoc` with inline HTML documents.
4
+
5
+ ## Targeted pattern scope
6
+
7
+ This rule targets:
8
+
9
+ - `iframe.srcdoc = ...`
10
+ - `iframe.setAttribute("srcdoc", ...)`
11
+ - `<iframe srcDoc={...} />` in JSX.
12
+
13
+ ## What this rule reports
14
+
15
+ This rule reports inline iframe document creation through `srcdoc` writes and
16
+ JSX `srcDoc` attributes.
17
+
18
+ ## Why this rule exists
19
+
20
+ `srcdoc` embeds a full HTML document directly into the page. That increases the
21
+ risk of shipping unsafe inline markup, weakens review boundaries compared with a
22
+ separate reviewed document URL, and makes it easier to introduce script-capable
23
+ content in places that look like simple attribute assignments.
24
+
25
+ ## ❌ Incorrect
26
+
27
+ ```ts
28
+ iframe.srcdoc = userHtml;
29
+ ```
30
+
31
+ ```tsx
32
+ const frame = <iframe srcDoc={userHtml} />;
33
+ ```
34
+
35
+ ## ✅ Correct
36
+
37
+ ```ts
38
+ iframe.src = "https://example.com/embed.html";
39
+ ```
40
+
41
+ ```tsx
42
+ const frame = <iframe src="https://example.com/embed.html" />;
43
+ ```
44
+
45
+ ## ESLint flat config example
46
+
47
+ ```ts
48
+ import sdl from "eslint-plugin-sdl-2";
49
+
50
+ export default [
51
+ {
52
+ plugins: { sdl },
53
+ rules: {
54
+ "sdl/no-iframe-srcdoc": "error",
55
+ },
56
+ },
57
+ ];
58
+ ```
59
+
60
+ ## When not to use it
61
+
62
+ Disable only if your application intentionally serves inline iframe documents,
63
+ those documents are tightly controlled, and a reviewed sandboxing strategy
64
+ exists outside this rule.
65
+
66
+ ## Package documentation
67
+
68
+ - [Rule source](../../src/rules/no-iframe-srcdoc.ts)
69
+
70
+ ## Further reading
71
+
72
+ > **Rule catalog ID:** R053
73
+
74
+ - [MDN: `HTMLIFrameElement.srcdoc`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement/srcdoc)
75
+ - [MDN: `<iframe>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/iframe)
76
+ - [OWASP Cross Site Scripting Prevention Cheat Sheet](https://owasp.org/www-community/xss-prevention)
@@ -0,0 +1,65 @@
1
+ # no-inner-html
2
+
3
+ Disallow unsafe direct HTML writes through DOM HTML sink properties and methods.
4
+
5
+ ## Targeted pattern scope
6
+
7
+ This rule targets:
8
+
9
+ - `element.innerHTML = ...`
10
+ - `element.outerHTML = ...`
11
+ - `element.insertAdjacentHTML(...)`.
12
+
13
+ ## What this rule reports
14
+
15
+ This rule reports direct HTML sink writes that bypass safe text-based DOM APIs.
16
+
17
+ ## Why this rule exists
18
+
19
+ HTML sink APIs are common XSS entry points when they receive unsanitized or
20
+ partially sanitized input.
21
+
22
+ ## ❌ Incorrect
23
+
24
+ ```ts
25
+ container.innerHTML = userSuppliedHtml;
26
+ container.insertAdjacentHTML("beforeend", userSuppliedHtml);
27
+ ```
28
+
29
+ ## ✅ Correct
30
+
31
+ ```ts
32
+ const node = document.createElement("p");
33
+ node.textContent = userSuppliedHtml;
34
+ container.append(node);
35
+ ```
36
+
37
+ ## ESLint flat config example
38
+
39
+ ```ts
40
+ import sdl from "eslint-plugin-sdl-2";
41
+
42
+ export default [
43
+ {
44
+ plugins: { sdl },
45
+ rules: {
46
+ "sdl/no-inner-html": "error",
47
+ },
48
+ },
49
+ ];
50
+ ```
51
+
52
+ ## When not to use it
53
+
54
+ Disable only when a dedicated, reviewed sanitizer guarantees safe markup.
55
+
56
+ ## Package documentation
57
+
58
+ - [Rule source](../../src/rules/no-inner-html.ts)
59
+
60
+ ## Further reading
61
+
62
+ > **Rule catalog ID:** R019
63
+
64
+ - [MDN: `innerHTML`](https://developer.mozilla.org/en-US/docs/Web/API/Element/innerHTML)
65
+ - [MDN: `insertAdjacentHTML`](https://developer.mozilla.org/en-US/docs/Web/API/Element/insertAdjacentHTML)
@@ -0,0 +1,66 @@
1
+ # no-insecure-random
2
+
3
+ Disallow non-cryptographic randomness APIs for security-sensitive flows.
4
+
5
+ ## Targeted pattern scope
6
+
7
+ This rule targets insecure randomness APIs such as:
8
+
9
+ - `Math.random()`
10
+ - `crypto.pseudoRandomBytes(...)`.
11
+
12
+ ## What this rule reports
13
+
14
+ This rule reports pseudo-random generators used in contexts where
15
+ cryptographic-strength randomness is expected.
16
+
17
+ ## Why this rule exists
18
+
19
+ Predictable random values can undermine tokens, passwords, keys, and related
20
+ security controls.
21
+
22
+ ## ❌ Incorrect
23
+
24
+ ```ts
25
+ const token = `${Math.random()}`;
26
+ const bytes = crypto.pseudoRandomBytes(32);
27
+ ```
28
+
29
+ ## ✅ Correct
30
+
31
+ ```ts
32
+ const bytes = crypto.randomBytes(32);
33
+ const browserBytes = crypto.getRandomValues(new Uint8Array(32));
34
+ ```
35
+
36
+ ## ESLint flat config example
37
+
38
+ ```ts
39
+ import sdl from "eslint-plugin-sdl-2";
40
+
41
+ export default [
42
+ {
43
+ plugins: { sdl },
44
+ rules: {
45
+ "sdl/no-insecure-random": "error",
46
+ },
47
+ },
48
+ ];
49
+ ```
50
+
51
+ ## When not to use it
52
+
53
+ Disable only for non-security simulation or test data where predictability is
54
+ acceptable.
55
+
56
+ ## Package documentation
57
+
58
+ - [Rule source](../../src/rules/no-insecure-random.ts)
59
+
60
+ ## Further reading
61
+
62
+ > **Rule catalog ID:** R020
63
+
64
+ - [OWASP: Insecure randomness](https://owasp.org/www-community/vulnerabilities/Insecure_Randomness)
65
+ - [CodeQL query help: Insecure randomness](https://codeql.github.com/codeql-query-help/javascript/js-insecure-randomness/)
66
+ - [Sonar rule RSPEC-2245](https://rules.sonarsource.com/javascript/RSPEC-2245)
@@ -0,0 +1,59 @@
1
+ # no-insecure-tls-agent-options
2
+
3
+ Disallow TLS and HTTPS option objects that disable certificate verification.
4
+
5
+ ## Targeted pattern scope
6
+
7
+ TLS/HTTPS options objects that disable certificate verification.
8
+
9
+ ## What this rule reports
10
+
11
+ `rejectUnauthorized: false` in option objects.
12
+
13
+ ## Why this rule exists
14
+
15
+ Disabling certificate verification removes core TLS trust guarantees.
16
+
17
+ ## ❌ Incorrect
18
+
19
+ ```ts
20
+ new https.Agent({ rejectUnauthorized: false });
21
+ ```
22
+
23
+ ## ✅ Correct
24
+
25
+ ```ts
26
+ new https.Agent({ rejectUnauthorized: true });
27
+ ```
28
+
29
+ ## ESLint flat config example
30
+
31
+ ```ts
32
+ import sdl from "eslint-plugin-sdl-2";
33
+
34
+ export default [
35
+ {
36
+ plugins: { sdl },
37
+
38
+ rules: {
39
+ "sdl/no-insecure-tls-agent-options": "error",
40
+ },
41
+ },
42
+ ];
43
+ ```
44
+
45
+ ## When not to use it
46
+
47
+ Disable only in tightly scoped debugging or local interception scenarios that cannot affect production traffic.
48
+
49
+ ## Package documentation
50
+
51
+ - [Rule source](../../src/rules/no-insecure-tls-agent-options.ts)
52
+
53
+ ## Further reading
54
+
55
+ > **Rule catalog ID:** R041
56
+
57
+ - [OWASP Top 10: Injection](https://owasp.org/www-project-top-ten/)
58
+
59
+ - [OWASP Top 10: Security Misconfiguration](https://owasp.org/www-project-top-ten/)
@@ -0,0 +1,72 @@
1
+ # no-insecure-url
2
+
3
+ Disallow insecure URL protocols in application code.
4
+
5
+ ## Targeted pattern scope
6
+
7
+ This rule targets insecure URL patterns such as:
8
+
9
+ - `http://...`
10
+ - `ftp://...`
11
+ - configurable blocklisted patterns defined in rule options.
12
+
13
+ ## What this rule reports
14
+
15
+ This rule reports string literals and option-matched values that use insecure
16
+ or explicitly blocked URL schemes.
17
+
18
+ ## Why this rule exists
19
+
20
+ Unencrypted transports can expose credentials, tokens, and sensitive payloads
21
+ to interception or tampering.
22
+
23
+ ## ❌ Incorrect
24
+
25
+ ```ts
26
+ const endpoint = "http://api.example.com/v1/data";
27
+ ```
28
+
29
+ ## ✅ Correct
30
+
31
+ ```ts
32
+ const endpoint = "https://api.example.com/v1/data";
33
+ ```
34
+
35
+ ## ESLint flat config example
36
+
37
+ ```ts
38
+ import sdl from "eslint-plugin-sdl-2";
39
+
40
+ export default [
41
+ {
42
+ plugins: { sdl },
43
+ rules: {
44
+ "sdl/no-insecure-url": [
45
+ "error",
46
+ {
47
+ blocklist: ["^(http|ftp):\\/\\/"],
48
+ exceptions: ["^http:\\/\\/schemas\\.microsoft\\.com\\/?.*"],
49
+ varExceptions: ["insecure?.*"],
50
+ },
51
+ ],
52
+ },
53
+ },
54
+ ];
55
+ ```
56
+
57
+ ## When not to use it
58
+
59
+ Disable only when scanning datasets or tests that intentionally include insecure
60
+ URLs.
61
+
62
+ ## Package documentation
63
+
64
+ - [Rule source](../../src/rules/no-insecure-url.ts)
65
+
66
+ ## Further reading
67
+
68
+ > **Rule catalog ID:** R021
69
+
70
+ - [MDN: HTTPS](https://developer.mozilla.org/en-US/docs/Glossary/HTTPS)
71
+ - [DevSkim DS137138 guidance](https://github.com/microsoft/DevSkim/blob/main/guidance/DS137138.md)
72
+ - [CodeQL insecure download guidance](https://codeql.github.com/codeql-query-help/javascript/js-clear-text-logging-sensitive-info/)
@@ -0,0 +1,59 @@
1
+ # no-location-javascript-url
2
+
3
+ Disallow `javascript:` URLs in location-like navigation sinks.
4
+
5
+ ## Targeted pattern scope
6
+
7
+ Location/open navigation sinks assigned `javascript:` URLs.
8
+
9
+ ## What this rule reports
10
+
11
+ Assignments and calls that pass `javascript:` URL strings into navigation sinks.
12
+
13
+ ## Why this rule exists
14
+
15
+ `javascript:` URL execution is a classic DOM XSS sink and should be blocked in modern code.
16
+
17
+ ## ❌ Incorrect
18
+
19
+ ```ts
20
+ window.location.href = "javascript:alert(1)";
21
+ ```
22
+
23
+ ## ✅ Correct
24
+
25
+ ```ts
26
+ window.location.href = "https://example.com";
27
+ ```
28
+
29
+ ## ESLint flat config example
30
+
31
+ ```ts
32
+ import sdl from "eslint-plugin-sdl-2";
33
+
34
+ export default [
35
+ {
36
+ plugins: { sdl },
37
+
38
+ rules: {
39
+ "sdl/no-location-javascript-url": "error",
40
+ },
41
+ },
42
+ ];
43
+ ```
44
+
45
+ ## When not to use it
46
+
47
+ Disable only for legacy code that cannot yet migrate away from `javascript:` URLs and has explicit security review sign-off.
48
+
49
+ ## Package documentation
50
+
51
+ - [Rule source](../../src/rules/no-location-javascript-url.ts)
52
+
53
+ ## Further reading
54
+
55
+ > **Rule catalog ID:** R042
56
+
57
+ - [OWASP Top 10: Injection](https://owasp.org/www-project-top-ten/)
58
+
59
+ - [OWASP Top 10: Security Misconfiguration](https://owasp.org/www-project-top-ten/)
@@ -0,0 +1,82 @@
1
+ # no-message-event-without-origin-check
2
+
3
+ Disallow receiving `message` events and consuming `event.data` without checking
4
+ `event.origin`.
5
+
6
+ ## Targeted pattern scope
7
+
8
+ This rule targets inline `addEventListener("message", ...)` handlers and
9
+ `onmessage = ...` assignments that read message data without validating the
10
+ sender origin.
11
+
12
+ ## What this rule reports
13
+
14
+ This rule reports message event callbacks that:
15
+
16
+ - read `event.data`, or
17
+ - destructure `{ data }` from the message event,
18
+
19
+ without an observable `origin` validation step.
20
+
21
+ ## Why this rule exists
22
+
23
+ Cross-document messaging is only safe when the receiver validates where the
24
+ message came from. Reading message payloads without checking `event.origin` can
25
+ trust attacker-controlled input from another window, frame, or worker.
26
+
27
+ ## ❌ Incorrect
28
+
29
+ ```ts
30
+ window.addEventListener("message", (event) => {
31
+ consume(event.data);
32
+ });
33
+ ```
34
+
35
+ ## ✅ Correct
36
+
37
+ ```ts
38
+ window.addEventListener("message", (event) => {
39
+ if (event.origin !== "https://example.com") {
40
+ return;
41
+ }
42
+
43
+ consume(event.data);
44
+ });
45
+ ```
46
+
47
+ ## Behavior and migration notes
48
+
49
+ This rule intentionally does not autofix or insert stub origin checks because
50
+ the correct allowlist depends on your deployment model.
51
+
52
+ ## ESLint flat config example
53
+
54
+ ```ts
55
+ import sdl from "eslint-plugin-sdl-2";
56
+
57
+ export default [
58
+ {
59
+ plugins: { sdl },
60
+
61
+ rules: {
62
+ "sdl/no-message-event-without-origin-check": "error",
63
+ },
64
+ },
65
+ ];
66
+ ```
67
+
68
+ ## When not to use it
69
+
70
+ Disable only for message handlers that never process untrusted cross-origin
71
+ messages and already rely on a reviewed trust boundary this rule cannot see.
72
+
73
+ ## Package documentation
74
+
75
+ - [Rule source](../../src/rules/no-message-event-without-origin-check.ts)
76
+
77
+ ## Further reading
78
+
79
+ > **Rule catalog ID:** R048
80
+
81
+ - [MDN: Window message event](https://developer.mozilla.org/docs/Web/API/Window/message_event)
82
+ - [MDN: Window.postMessage security concerns](https://developer.mozilla.org/docs/Web/API/Window/postMessage#security_concerns)