@aegis-scan/skills 0.5.0 → 0.5.2

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 (345) hide show
  1. package/ATTRIBUTION.md +93 -0
  2. package/package.json +1 -1
  3. package/sbom.cdx.json +1 -0
  4. package/skills/compliance/aegis-native/brutaler-anwalt/.claude-plugin/plugin.json +108 -0
  5. package/skills/compliance/aegis-native/brutaler-anwalt/CHANGELOG.md +878 -0
  6. package/skills/compliance/aegis-native/brutaler-anwalt/README.md +9 -3
  7. package/skills/compliance/aegis-native/brutaler-anwalt/SKILL.md +93 -14
  8. package/skills/compliance/aegis-native/brutaler-anwalt/commands/audit.md +193 -0
  9. package/skills/compliance/aegis-native/brutaler-anwalt/commands/avv-redline.md +246 -0
  10. package/skills/compliance/aegis-native/brutaler-anwalt/commands/az-verify.md +155 -0
  11. package/skills/compliance/aegis-native/brutaler-anwalt/commands/cold-start.md +157 -0
  12. package/skills/compliance/aegis-native/brutaler-anwalt/commands/dsar-respond.md +180 -0
  13. package/skills/compliance/aegis-native/brutaler-anwalt/commands/health.md +50 -0
  14. package/skills/compliance/aegis-native/brutaler-anwalt/commands/simulate.md +158 -0
  15. package/skills/compliance/aegis-native/brutaler-anwalt/hooks/post_write.py +315 -0
  16. package/skills/compliance/aegis-native/brutaler-anwalt/hooks/prompt_submit.py +144 -0
  17. package/skills/compliance/aegis-native/brutaler-anwalt/hooks/session_start.py +57 -0
  18. package/skills/compliance/aegis-native/brutaler-anwalt/hooks/triggers.json +191 -0
  19. package/skills/compliance/aegis-native/brutaler-anwalt/references/INDEX.md +102 -0
  20. package/skills/compliance/aegis-native/brutaler-anwalt/references/abmahn-templates.md +1 -1
  21. package/skills/compliance/aegis-native/brutaler-anwalt/references/aegis-integration.md +60 -5
  22. package/skills/compliance/aegis-native/brutaler-anwalt/references/audit-patterns.md +745 -11
  23. package/skills/compliance/aegis-native/brutaler-anwalt/references/az-auffuellung-batch1.md +468 -0
  24. package/skills/compliance/aegis-native/brutaler-anwalt/references/bgh-urteile.md +106 -30
  25. package/skills/compliance/aegis-native/brutaler-anwalt/references/branchenrecht.md +247 -2
  26. package/skills/compliance/aegis-native/brutaler-anwalt/references/checklisten.md +75 -2
  27. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-aufsichtsbehoerden-taetigkeitsberichte-2024.md +310 -0
  28. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-bussgeld-argumentations-layer.md +598 -0
  29. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-dsk-beschluesse.md +346 -0
  30. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/AGG/audit-relevance.md +76 -0
  31. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/AGG/paragraphs.md +115 -0
  32. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/AMG/audit-relevance.md +58 -0
  33. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/AMG/paragraphs.md +95 -0
  34. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/ArbZG/audit-relevance.md +60 -0
  35. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/ArbZG/paragraphs.md +90 -0
  36. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/BetrVG/audit-relevance.md +73 -0
  37. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/BetrVG/paragraphs.md +114 -0
  38. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/DDG/audit-relevance.md +72 -0
  39. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/DDG/paragraphs.md +103 -0
  40. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/DiGAV/audit-relevance.md +65 -0
  41. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/DiGAV/paragraphs.md +102 -0
  42. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/ElektroG/audit-relevance.md +66 -0
  43. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/ElektroG/paragraphs.md +108 -0
  44. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/FernUSG/audit-relevance.md +80 -0
  45. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/FernUSG/paragraphs.md +102 -0
  46. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/GeschGehG/audit-relevance.md +89 -0
  47. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/GeschGehG/paragraphs.md +107 -0
  48. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/GwG/audit-relevance.md +62 -0
  49. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/GwG/paragraphs.md +119 -0
  50. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/HWG/audit-relevance.md +70 -0
  51. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/HWG/paragraphs.md +125 -0
  52. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/HinSchG/audit-relevance.md +70 -0
  53. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/HinSchG/paragraphs.md +116 -0
  54. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/INDEX.md +152 -0
  55. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/KWG/audit-relevance.md +64 -0
  56. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/KWG/paragraphs.md +110 -0
  57. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/LFGB/audit-relevance.md +63 -0
  58. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/LFGB/paragraphs.md +90 -0
  59. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/MPDG/audit-relevance.md +61 -0
  60. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/MPDG/paragraphs.md +96 -0
  61. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/NachwG/audit-relevance.md +54 -0
  62. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/NachwG/paragraphs.md +82 -0
  63. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/PAngV/audit-relevance.md +76 -0
  64. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/PAngV/paragraphs.md +86 -0
  65. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/RDG/audit-relevance.md +84 -0
  66. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/RDG/paragraphs.md +114 -0
  67. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/TDDDG/audit-relevance.md +92 -0
  68. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/TDDDG/paragraphs.md +91 -0
  69. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/UrhG-UrhDaG/audit-relevance.md +85 -0
  70. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/UrhG-UrhDaG/paragraphs.md +166 -0
  71. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/VDuG/audit-relevance.md +71 -0
  72. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/VDuG/paragraphs.md +102 -0
  73. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/VERIFICATION-NOTES.md +111 -0
  74. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/VVG/audit-relevance.md +65 -0
  75. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/VVG/paragraphs.md +101 -0
  76. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/VerpackG/audit-relevance.md +62 -0
  77. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/VerpackG/paragraphs.md +120 -0
  78. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/WpHG/audit-relevance.md +64 -0
  79. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/WpHG/paragraphs.md +120 -0
  80. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/ZAG/audit-relevance.md +68 -0
  81. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/ZAG/paragraphs.md +110 -0
  82. package/skills/compliance/aegis-native/brutaler-anwalt/references/dsgvo.md +55 -8
  83. package/skills/compliance/aegis-native/brutaler-anwalt/references/eu-edpb-guidelines.md +505 -0
  84. package/skills/compliance/aegis-native/brutaler-anwalt/references/eu-eugh-dsgvo-schadensersatz.md +223 -0
  85. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/BDSG/audit-relevance.md +31 -0
  86. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/BFSG/audit-relevance.md +39 -0
  87. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/BGB/audit-relevance.md +42 -0
  88. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/DDG/audit-relevance.md +28 -0
  89. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/DSGVO/audit-relevance.md +35 -0
  90. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/AI-Act-2024-1689/articles.md +4 -1
  91. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/AI-Act-2024-1689/audit-relevance.md +139 -0
  92. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/AI-Act-2024-1689/gpai-pflichten.md +102 -0
  93. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/AI-Act-2024-1689/hochrisiko-annex-iii.md +134 -0
  94. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/AI-Act-2024-1689/sanktionen-art-99.md +97 -0
  95. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/AI-Act-2024-1689/transparenz-art-50.md +120 -0
  96. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/AI-Act-2024-1689/uebergangsfristen.md +109 -0
  97. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/CER-2022-2557/articles.md +42 -0
  98. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/CRA-2024-2847/articles.md +87 -0
  99. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/CSDDD-2024-1760/articles.md +43 -0
  100. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/CSRD-2022-2464/articles.md +42 -0
  101. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DGA-2022-868/articles.md +53 -0
  102. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DMA-2022-1925/articles.md +55 -0
  103. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DORA-2022-2554/articles.md +164 -0
  104. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DORA-2022-2554/audit-relevance.md +86 -0
  105. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DSA-2022-2065/articles.md +3 -0
  106. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DSA-2022-2065/audit-relevance.md +110 -0
  107. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DSA-2022-2065/notice-and-action.md +138 -0
  108. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DSA-2022-2065/small-platform-pflichten.md +109 -0
  109. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DSA-2022-2065/trusted-flaggers.md +77 -0
  110. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DSA-2022-2065/vlop-vlose.md +130 -0
  111. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/Data-Act-2023-2854/articles.md +102 -0
  112. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/Data-Act-2023-2854/audit-relevance.md +77 -0
  113. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/MiCA-2023-1114/articles.md +124 -0
  114. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/MiCA-2023-1114/audit-relevance.md +85 -0
  115. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/NIS2-2022-2555/articles.md +101 -0
  116. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/ProdHaftRL-2024-2853/articles.md +68 -0
  117. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/eIDAS-2024-1183/articles.md +43 -0
  118. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/Finance/KWG.md +52 -0
  119. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/Finance/PSD2.md +67 -0
  120. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/Finance/ZAG.md +50 -0
  121. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/GlueStV/articles.md +86 -0
  122. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/HGB-AO/audit-relevance.md +27 -0
  123. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/HinSchG/articles.md +96 -0
  124. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/JuSchG-JMStV/articles.md +86 -0
  125. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/KritisDachG/articles.md +39 -0
  126. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/LkSG/articles.md +90 -0
  127. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/MedTech/DiGAV.md +60 -0
  128. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/MedTech/IVDR-2017-746.md +51 -0
  129. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/MedTech/MDR-2017-745.md +85 -0
  130. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/NIS2UmsuCG-BSIG/articles.md +53 -0
  131. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/StGB/relevante-paragraphen.md +157 -0
  132. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/TDDDG/audit-relevance.md +33 -0
  133. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/TDDDG/paragraphs.md +3 -2
  134. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/TKG/articles.md +73 -0
  135. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/UWG/audit-relevance.md +39 -0
  136. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/UWG/paragraphs.md +71 -3
  137. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/VERIFICATION-STATUS.md +266 -0
  138. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/VSBG/audit-relevance.md +37 -0
  139. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/ePrivacy-RL-2002-58/articles.md +92 -0
  140. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/ePrivacy-RL-2002-58/audit-relevance.md +62 -0
  141. package/skills/compliance/aegis-native/brutaler-anwalt/references/it-recht.md +115 -9
  142. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/INDEX.md +1 -1
  143. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/ai/anthropic-dpa.md +87 -0
  144. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/astro/cookie-banner-pattern.md +202 -0
  145. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/astro/dse-section-pattern.md +198 -0
  146. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/astro/tracking-server-endpoint.md +193 -0
  147. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/auth/auth0-tom.md +92 -0
  148. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/auth/clerk-tom.md +84 -0
  149. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/django/auth-cookies-pattern.md +295 -0
  150. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/django/cookie-banner-pattern.md +318 -0
  151. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/django/gdpr-cleanup-celery.md +339 -0
  152. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/express/cookie-banner-pattern.md +237 -0
  153. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/express/gdpr-routes-pattern.md +256 -0
  154. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/express/helmet-csp-pattern.md +207 -0
  155. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/laravel/agb-versioning-pattern.md +305 -0
  156. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/laravel/cookie-banner-pattern.md +287 -0
  157. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/laravel/gdpr-models-pattern.md +290 -0
  158. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/laravel/tracking-config-pattern.md +263 -0
  159. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nest/auth-pattern.md +265 -0
  160. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nest/cookie-banner-pattern.md +255 -0
  161. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nest/gdpr-cleanup-cron.md +244 -0
  162. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nest/tracking-interceptor.md +239 -0
  163. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nextjs/api-route-bearer-auth.md +103 -0
  164. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nextjs/dynamic-rendering-headers.md +83 -0
  165. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nextjs/env-driven-tracking.md +135 -0
  166. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/rails/cookie-banner-pattern.md +294 -0
  167. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/rails/devise-dsgvo-pattern.md +262 -0
  168. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/rails/gdpr-anonymization-pattern.md +283 -0
  169. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/react/consent-gate-pattern.md +99 -0
  170. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/react/cookie-banner-pattern.md +204 -0
  171. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/strapi/cms-pii-pattern.md +301 -0
  172. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/strapi/notice-and-action-plugin.md +371 -0
  173. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/svelte/cookie-banner-pattern.md +234 -0
  174. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/svelte/dse-section-pattern.md +231 -0
  175. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/svelte/sveltekit-server-hooks-pattern.md +217 -0
  176. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/tracking/google-analytics-consent.md +129 -0
  177. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/tracking/posthog-consent.md +79 -0
  178. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/vue/cookie-banner-pattern.md +208 -0
  179. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/vue/dse-i18n-pattern.md +204 -0
  180. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/vue/nuxt-vs-vue-only-pattern.md +197 -0
  181. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/vue/tracking-pinia-pattern.md +211 -0
  182. package/skills/compliance/aegis-native/brutaler-anwalt/references/strafrecht-steuer.md +1 -1
  183. package/skills/compliance/aegis-native/brutaler-anwalt/references/streitwerte.json +176 -0
  184. package/skills/compliance/aegis-native/brutaler-anwalt/references/templates/DSFA-template.md +80 -0
  185. package/skills/compliance/aegis-native/brutaler-anwalt/references/templates/VVT-template-file-upload.md +98 -0
  186. package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-EN-international.md +267 -0
  187. package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-anhang-Audit-Klausel-Varianten.md +148 -0
  188. package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-anhang-CH-revDSG.md +127 -0
  189. package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-anhang-SCC-module2-controller-processor.md +180 -0
  190. package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-anhang-SCC-module3-processor-subprocessor.md +144 -0
  191. package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-anhang-Sub-Processor-List.md +114 -0
  192. package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-anhang-TOMs.md +197 -0
  193. package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-anhang-UK-IDTA.md +131 -0
  194. package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-standard-DE.md +288 -0
  195. package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/Joint-Controller-Vertrag-Art-26.md +265 -0
  196. package/skills/compliance/aegis-native/brutaler-anwalt/scripts/health-check.sh +190 -48
  197. package/skills/compliance/aegis-native/brutaler-anwalt/scripts/test-triggers.sh +145 -0
  198. package/skills/compliance/aegis-native/brutaler-anwalt/settings.json +90 -0
  199. package/skills/defensive/permoon-fork/README.md +40 -0
  200. package/skills/defensive/permoon-fork/multi-model-consolidation/SKILL.md +47 -0
  201. package/skills/defensive/permoon-fork/multi-model-severity/SKILL.md +34 -0
  202. package/skills/defensive/permoon-fork/multi-model-system-prompt/SKILL.md +40 -0
  203. package/skills/foundation/aegis-native/aegis-handover-writer/SKILL.md +1 -1
  204. package/skills/foundation/aegis-native/aegis-quality-gates/SKILL.md +1 -1
  205. package/skills/offensive/airecon-fork/ctf-crypto/SKILL.md +260 -0
  206. package/skills/offensive/airecon-fork/ctf-crypto-modern-ciphers/SKILL.md +688 -0
  207. package/skills/offensive/airecon-fork/ctf-forensics/SKILL.md +253 -0
  208. package/skills/offensive/airecon-fork/ctf-forensics-network/SKILL.md +480 -0
  209. package/skills/offensive/airecon-fork/ctf-heap-advanced/SKILL.md +336 -0
  210. package/skills/offensive/airecon-fork/ctf-pwn/SKILL.md +294 -0
  211. package/skills/offensive/airecon-fork/ctf-pwn-rop-and-shellcode/SKILL.md +392 -0
  212. package/skills/offensive/airecon-fork/ctf-reversing/SKILL.md +284 -0
  213. package/skills/offensive/airecon-fork/frameworks-django/SKILL.md +268 -0
  214. package/skills/offensive/airecon-fork/frameworks-dotnet/SKILL.md +280 -0
  215. package/skills/offensive/airecon-fork/frameworks-express/SKILL.md +266 -0
  216. package/skills/offensive/airecon-fork/frameworks-fastapi/SKILL.md +193 -0
  217. package/skills/offensive/airecon-fork/frameworks-flask/SKILL.md +297 -0
  218. package/skills/offensive/airecon-fork/frameworks-laravel/SKILL.md +260 -0
  219. package/skills/offensive/airecon-fork/frameworks-nextjs/SKILL.md +230 -0
  220. package/skills/offensive/airecon-fork/frameworks-php/SKILL.md +271 -0
  221. package/skills/offensive/airecon-fork/frameworks-rails/SKILL.md +269 -0
  222. package/skills/offensive/airecon-fork/frameworks-spring/SKILL.md +245 -0
  223. package/skills/offensive/airecon-fork/frameworks-wordpress/SKILL.md +348 -0
  224. package/skills/offensive/airecon-fork/payloads-command-injection/SKILL.md +459 -0
  225. package/skills/offensive/airecon-fork/payloads-http-parameter-pollution/SKILL.md +129 -0
  226. package/skills/offensive/airecon-fork/payloads-ldap-injection/SKILL.md +100 -0
  227. package/skills/offensive/airecon-fork/payloads-lfi/SKILL.md +485 -0
  228. package/skills/offensive/airecon-fork/payloads-sqli/SKILL.md +419 -0
  229. package/skills/offensive/airecon-fork/payloads-ssrf/SKILL.md +125 -0
  230. package/skills/offensive/airecon-fork/payloads-ssti/SKILL.md +443 -0
  231. package/skills/offensive/airecon-fork/payloads-xss/SKILL.md +447 -0
  232. package/skills/offensive/airecon-fork/payloads-xxe/SKILL.md +172 -0
  233. package/skills/offensive/airecon-fork/postexploit-ad-credential-attacks/SKILL.md +306 -0
  234. package/skills/offensive/airecon-fork/postexploit-container-escape/SKILL.md +299 -0
  235. package/skills/offensive/airecon-fork/postexploit-credential-dumping/SKILL.md +249 -0
  236. package/skills/offensive/airecon-fork/postexploit-lateral-movement/SKILL.md +194 -0
  237. package/skills/offensive/airecon-fork/postexploit-linux-privesc/SKILL.md +252 -0
  238. package/skills/offensive/airecon-fork/postexploit-netexec-workflow/SKILL.md +302 -0
  239. package/skills/offensive/airecon-fork/postexploit-pivoting/SKILL.md +205 -0
  240. package/skills/offensive/airecon-fork/postexploit-windows-privesc/SKILL.md +210 -0
  241. package/skills/offensive/airecon-fork/protocols-active-directory/SKILL.md +314 -0
  242. package/skills/offensive/airecon-fork/protocols-dns/SKILL.md +203 -0
  243. package/skills/offensive/airecon-fork/protocols-ftp/SKILL.md +159 -0
  244. package/skills/offensive/airecon-fork/protocols-graphql/SKILL.md +648 -0
  245. package/skills/offensive/airecon-fork/protocols-kerberos/SKILL.md +168 -0
  246. package/skills/offensive/airecon-fork/protocols-ldap/SKILL.md +245 -0
  247. package/skills/offensive/airecon-fork/protocols-rdp/SKILL.md +186 -0
  248. package/skills/offensive/airecon-fork/protocols-smb/SKILL.md +191 -0
  249. package/skills/offensive/airecon-fork/protocols-smtp-imap/SKILL.md +263 -0
  250. package/skills/offensive/airecon-fork/protocols-snmp/SKILL.md +147 -0
  251. package/skills/offensive/airecon-fork/protocols-ssh/SKILL.md +287 -0
  252. package/skills/offensive/airecon-fork/reconnaissance-asn-whois-osint/SKILL.md +236 -0
  253. package/skills/offensive/airecon-fork/reconnaissance-ctf-methodology/SKILL.md +435 -0
  254. package/skills/offensive/airecon-fork/reconnaissance-dorking/SKILL.md +182 -0
  255. package/skills/offensive/airecon-fork/reconnaissance-exposed-devtools-detection/SKILL.md +513 -0
  256. package/skills/offensive/airecon-fork/reconnaissance-full-recon/SKILL.md +305 -0
  257. package/skills/offensive/airecon-fork/reconnaissance-internal-pentest/SKILL.md +202 -0
  258. package/skills/offensive/airecon-fork/reconnaissance-javascript-analysis/SKILL.md +167 -0
  259. package/skills/offensive/airecon-fork/reconnaissance-js-internal-hostname-intelligence/SKILL.md +391 -0
  260. package/skills/offensive/airecon-fork/reconnaissance-monitoring-secrets-exposure/SKILL.md +394 -0
  261. package/skills/offensive/airecon-fork/reconnaissance-shodan-censys/SKILL.md +279 -0
  262. package/skills/offensive/airecon-fork/reconnaissance-subdomain-enum/SKILL.md +952 -0
  263. package/skills/offensive/airecon-fork/technologies-cicd-attacks/SKILL.md +283 -0
  264. package/skills/offensive/airecon-fork/technologies-cloud-security/SKILL.md +299 -0
  265. package/skills/offensive/airecon-fork/technologies-docker-container/SKILL.md +266 -0
  266. package/skills/offensive/airecon-fork/technologies-elasticsearch/SKILL.md +226 -0
  267. package/skills/offensive/airecon-fork/technologies-firebase-firestore/SKILL.md +213 -0
  268. package/skills/offensive/airecon-fork/technologies-frida-hooking/SKILL.md +387 -0
  269. package/skills/offensive/airecon-fork/technologies-gitlab-github/SKILL.md +259 -0
  270. package/skills/offensive/airecon-fork/technologies-jenkins/SKILL.md +256 -0
  271. package/skills/offensive/airecon-fork/technologies-kubernetes-pentest/SKILL.md +281 -0
  272. package/skills/offensive/airecon-fork/technologies-memcached/SKILL.md +230 -0
  273. package/skills/offensive/airecon-fork/technologies-mobile-app-pentesting/SKILL.md +105 -0
  274. package/skills/offensive/airecon-fork/technologies-mongodb/SKILL.md +257 -0
  275. package/skills/offensive/airecon-fork/technologies-nginx-apache/SKILL.md +280 -0
  276. package/skills/offensive/airecon-fork/technologies-observability-stack-attacks/SKILL.md +501 -0
  277. package/skills/offensive/airecon-fork/technologies-redis/SKILL.md +236 -0
  278. package/skills/offensive/airecon-fork/technologies-supabase/SKILL.md +270 -0
  279. package/skills/offensive/airecon-fork/technologies-tomcat/SKILL.md +232 -0
  280. package/skills/offensive/airecon-fork/tools-advanced-fuzzing/SKILL.md +351 -0
  281. package/skills/offensive/airecon-fork/tools-browser-automation/SKILL.md +300 -0
  282. package/skills/offensive/airecon-fork/tools-caido/SKILL.md +776 -0
  283. package/skills/offensive/airecon-fork/tools-code-review/SKILL.md +71 -0
  284. package/skills/offensive/airecon-fork/tools-dalfox/SKILL.md +189 -0
  285. package/skills/offensive/airecon-fork/tools-hashcat-john/SKILL.md +258 -0
  286. package/skills/offensive/airecon-fork/tools-impacket/SKILL.md +227 -0
  287. package/skills/offensive/airecon-fork/tools-install/SKILL.md +202 -0
  288. package/skills/offensive/airecon-fork/tools-metasploit/SKILL.md +270 -0
  289. package/skills/offensive/airecon-fork/tools-nmap/SKILL.md +211 -0
  290. package/skills/offensive/airecon-fork/tools-nuclei/SKILL.md +175 -0
  291. package/skills/offensive/airecon-fork/tools-reporting/SKILL.md +47 -0
  292. package/skills/offensive/airecon-fork/tools-scripting/SKILL.md +1939 -0
  293. package/skills/offensive/airecon-fork/tools-semgrep/SKILL.md +202 -0
  294. package/skills/offensive/airecon-fork/tools-source-audit/SKILL.md +308 -0
  295. package/skills/offensive/airecon-fork/tools-sqlmap/SKILL.md +137 -0
  296. package/skills/offensive/airecon-fork/tools-tool-catalog/SKILL.md +320 -0
  297. package/skills/offensive/airecon-fork/tools-wapiti/SKILL.md +293 -0
  298. package/skills/offensive/airecon-fork/vulnerabilities-2fa-bypass/SKILL.md +219 -0
  299. package/skills/offensive/airecon-fork/vulnerabilities-account-takeover/SKILL.md +223 -0
  300. package/skills/offensive/airecon-fork/vulnerabilities-api-schema-exposure/SKILL.md +849 -0
  301. package/skills/offensive/airecon-fork/vulnerabilities-api-testing/SKILL.md +278 -0
  302. package/skills/offensive/airecon-fork/vulnerabilities-auth-workflow/SKILL.md +252 -0
  303. package/skills/offensive/airecon-fork/vulnerabilities-authentication-jwt/SKILL.md +158 -0
  304. package/skills/offensive/airecon-fork/vulnerabilities-bfla/SKILL.md +156 -0
  305. package/skills/offensive/airecon-fork/vulnerabilities-blind-xss/SKILL.md +111 -0
  306. package/skills/offensive/airecon-fork/vulnerabilities-business-logic/SKILL.md +313 -0
  307. package/skills/offensive/airecon-fork/vulnerabilities-cors/SKILL.md +242 -0
  308. package/skills/offensive/airecon-fork/vulnerabilities-crlf-injection/SKILL.md +146 -0
  309. package/skills/offensive/airecon-fork/vulnerabilities-csrf/SKILL.md +200 -0
  310. package/skills/offensive/airecon-fork/vulnerabilities-csrf-advanced-bypass/SKILL.md +536 -0
  311. package/skills/offensive/airecon-fork/vulnerabilities-deserialization/SKILL.md +363 -0
  312. package/skills/offensive/airecon-fork/vulnerabilities-dom-based-vulnerabilities/SKILL.md +105 -0
  313. package/skills/offensive/airecon-fork/vulnerabilities-exploitation/SKILL.md +286 -0
  314. package/skills/offensive/airecon-fork/vulnerabilities-grpc/SKILL.md +123 -0
  315. package/skills/offensive/airecon-fork/vulnerabilities-host-header-injection/SKILL.md +169 -0
  316. package/skills/offensive/airecon-fork/vulnerabilities-http-smuggling/SKILL.md +411 -0
  317. package/skills/offensive/airecon-fork/vulnerabilities-idor/SKILL.md +705 -0
  318. package/skills/offensive/airecon-fork/vulnerabilities-information-disclosure/SKILL.md +867 -0
  319. package/skills/offensive/airecon-fork/vulnerabilities-insecure-file-uploads/SKILL.md +190 -0
  320. package/skills/offensive/airecon-fork/vulnerabilities-jwt-attacks/SKILL.md +270 -0
  321. package/skills/offensive/airecon-fork/vulnerabilities-kubernetes/SKILL.md +252 -0
  322. package/skills/offensive/airecon-fork/vulnerabilities-mass-assignment/SKILL.md +788 -0
  323. package/skills/offensive/airecon-fork/vulnerabilities-nosql-injection/SKILL.md +204 -0
  324. package/skills/offensive/airecon-fork/vulnerabilities-oauth-misconfig/SKILL.md +220 -0
  325. package/skills/offensive/airecon-fork/vulnerabilities-oauth-saml/SKILL.md +163 -0
  326. package/skills/offensive/airecon-fork/vulnerabilities-open-redirect/SKILL.md +167 -0
  327. package/skills/offensive/airecon-fork/vulnerabilities-password-reset-poisoning/SKILL.md +66 -0
  328. package/skills/offensive/airecon-fork/vulnerabilities-path-traversal/SKILL.md +192 -0
  329. package/skills/offensive/airecon-fork/vulnerabilities-privilege-escalation/SKILL.md +320 -0
  330. package/skills/offensive/airecon-fork/vulnerabilities-prototype-pollution/SKILL.md +242 -0
  331. package/skills/offensive/airecon-fork/vulnerabilities-race-conditions/SKILL.md +192 -0
  332. package/skills/offensive/airecon-fork/vulnerabilities-rce/SKILL.md +240 -0
  333. package/skills/offensive/airecon-fork/vulnerabilities-sensitive-file-pii-exposure/SKILL.md +589 -0
  334. package/skills/offensive/airecon-fork/vulnerabilities-spring4shell/SKILL.md +86 -0
  335. package/skills/offensive/airecon-fork/vulnerabilities-sql-injection/SKILL.md +313 -0
  336. package/skills/offensive/airecon-fork/vulnerabilities-ssrf/SKILL.md +183 -0
  337. package/skills/offensive/airecon-fork/vulnerabilities-ssti/SKILL.md +344 -0
  338. package/skills/offensive/airecon-fork/vulnerabilities-subdomain-takeover/SKILL.md +160 -0
  339. package/skills/offensive/airecon-fork/vulnerabilities-supply-chain/SKILL.md +125 -0
  340. package/skills/offensive/airecon-fork/vulnerabilities-unhandled-exception-differential/SKILL.md +742 -0
  341. package/skills/offensive/airecon-fork/vulnerabilities-waf-detection/SKILL.md +90 -0
  342. package/skills/offensive/airecon-fork/vulnerabilities-web-cache-poisoning/SKILL.md +233 -0
  343. package/skills/offensive/airecon-fork/vulnerabilities-websocket/SKILL.md +180 -0
  344. package/skills/offensive/airecon-fork/vulnerabilities-xss/SKILL.md +316 -0
  345. package/skills/offensive/airecon-fork/vulnerabilities-xxe/SKILL.md +222 -0
@@ -0,0 +1,237 @@
1
+ ---
2
+ license: MIT (snippet)
3
+ provider: Express.js (Open-Source)
4
+ last-checked: 2026-05-05
5
+ purpose: Express Middleware-Stack Pattern fuer Consent-Cookie-Read + Conditional Tracker-Mount.
6
+ ---
7
+
8
+ # Express — Cookie-Banner Middleware Pattern
9
+
10
+ ## Trigger / Detection
11
+
12
+ Repo enthaelt:
13
+ - `express` in `package.json`
14
+ - `cookie-parser` Middleware
15
+ - `app.use(...)` Mount-Pattern in `app.ts` / `server.ts` / `index.js`
16
+ - Optional: Server-rendered Views (Pug/EJS/Handlebars) mit Banner-Component
17
+
18
+ ## Default-Verhalten (was passiert ohne Konfiguration)
19
+
20
+ - `cookie-parser` setzt keine `Secure;HttpOnly;SameSite`-Defaults
21
+ - Kein zentrales Consent-Validation-Middleware → Tracker laeuft via Hardcoded-Routes
22
+ - `app.use(express.static('public'))` cached HTML mit hardcoded Tracker-Tags
23
+ - Headers wie `X-Powered-By: Express` leaken Stack-Info
24
+ - Default-Logger (morgan) loggt volle IPs
25
+
26
+ ## Compliance-Risiken
27
+
28
+ | Risiko | Norm | Severity | Fix |
29
+ |---|---|---|---|
30
+ | Tracker im Static-HTML hardcoded | § 25 TDDDG | KRITISCH | Server-Side-Render mit Consent-Pruefung |
31
+ | Consent-Cookie ohne `Secure;SameSite` | Art. 32 DSGVO | HOCH | `cookie.set` mit Flags |
32
+ | Klartext-IP in morgan-Log | Art. 5 lit. f | HOCH | Custom IP-Hash-Token |
33
+ | Fehlendes `helmet` → keine Security-Headers | Art. 32 DSGVO | KRITISCH | `helmet()` Middleware |
34
+ | `X-Powered-By: Express` Header | Art. 25 DSGVO Privacy-by-Design | NIEDRIG | `app.disable('x-powered-by')` |
35
+
36
+ ## Code-Pattern (sanitized)
37
+
38
+ ```typescript
39
+ // File: src/middleware/consent.ts
40
+ import type { Request, Response, NextFunction } from 'express';
41
+
42
+ export type Consent = {
43
+ necessary: true;
44
+ analytics: boolean;
45
+ marketing: boolean;
46
+ timestamp?: string;
47
+ version: string;
48
+ };
49
+
50
+ declare global {
51
+ namespace Express {
52
+ interface Request {
53
+ consent: Consent;
54
+ }
55
+ }
56
+ }
57
+
58
+ const defaultConsent: Consent = {
59
+ necessary: true,
60
+ analytics: false,
61
+ marketing: false,
62
+ version: '1.0',
63
+ };
64
+
65
+ export function consentMiddleware(req: Request, _res: Response, next: NextFunction) {
66
+ const raw = req.cookies?.['cookie-consent'];
67
+ if (!raw) {
68
+ req.consent = { ...defaultConsent };
69
+ return next();
70
+ }
71
+ try {
72
+ const parsed = JSON.parse(raw);
73
+ req.consent = { ...defaultConsent, ...parsed };
74
+ } catch {
75
+ req.consent = { ...defaultConsent };
76
+ }
77
+ next();
78
+ }
79
+
80
+ export function requireAnalyticsConsent(req: Request, res: Response, next: NextFunction) {
81
+ if (!req.consent.analytics) {
82
+ return res.status(204).json({ blocked: 'analytics-opt-out' });
83
+ }
84
+ next();
85
+ }
86
+ ```
87
+
88
+ ```typescript
89
+ // File: src/routes/consent.ts
90
+ import { Router } from 'express';
91
+ import crypto from 'node:crypto';
92
+
93
+ const router = Router();
94
+
95
+ router.post('/api/consent-log', async (req, res) => {
96
+ const consent = req.body;
97
+ if (!consent || typeof consent.analytics !== 'boolean') {
98
+ return res.status(400).json({ error: 'invalid payload' });
99
+ }
100
+
101
+ const ip = req.headers['x-forwarded-for']?.toString().split(',')[0]?.trim()
102
+ ?? req.socket.remoteAddress
103
+ ?? '';
104
+ const ipHash = crypto
105
+ .createHash('sha256')
106
+ .update(ip + (process.env.IP_HASH_SALT ?? ''))
107
+ .digest('hex')
108
+ .slice(0, 16);
109
+
110
+ // Persist via DB-Layer (Pseudo-Code)
111
+ await req.app.locals.db.consentLog.create({
112
+ data: {
113
+ ipHash,
114
+ userAgent: req.headers['user-agent']?.slice(0, 200) ?? '',
115
+ consent: JSON.stringify(consent),
116
+ timestamp: new Date(),
117
+ },
118
+ });
119
+
120
+ // Set Cookie mit allen Security-Flags
121
+ res.cookie('cookie-consent', JSON.stringify({ ...consent, timestamp: new Date().toISOString() }), {
122
+ httpOnly: false, // Banner-JS muss lesen koennen
123
+ secure: process.env.NODE_ENV === 'production',
124
+ sameSite: 'lax',
125
+ maxAge: 12 * 30 * 24 * 60 * 60 * 1000, // 12 Monate
126
+ path: '/',
127
+ });
128
+
129
+ res.status(204).end();
130
+ });
131
+
132
+ export default router;
133
+ ```
134
+
135
+ ```typescript
136
+ // File: src/app.ts
137
+ import express from 'express';
138
+ import cookieParser from 'cookie-parser';
139
+ import helmet from 'helmet';
140
+ import morgan from 'morgan';
141
+ import { consentMiddleware, requireAnalyticsConsent } from './middleware/consent';
142
+ import consentRoutes from './routes/consent';
143
+
144
+ const app = express();
145
+
146
+ // Security
147
+ app.disable('x-powered-by');
148
+ app.use(helmet({
149
+ contentSecurityPolicy: {
150
+ directives: {
151
+ defaultSrc: ["'self'"],
152
+ scriptSrc: ["'self'", "https://<placeholder-eu-analytics-host>"],
153
+ connectSrc: ["'self'", "https://<placeholder-eu-analytics-host>"],
154
+ imgSrc: ["'self'", 'data:'],
155
+ styleSrc: ["'self'", "'unsafe-inline'"],
156
+ },
157
+ },
158
+ }));
159
+
160
+ // Body + Cookies
161
+ app.use(express.json({ limit: '100kb' }));
162
+ app.use(cookieParser());
163
+ app.use(consentMiddleware);
164
+
165
+ // IP-anonymisiertes Logging (custom morgan-token)
166
+ morgan.token('ipHash', (req) => {
167
+ const ip = req.headers['x-forwarded-for']?.toString().split(',')[0]?.trim()
168
+ ?? req.socket.remoteAddress ?? '';
169
+ return require('crypto').createHash('sha256').update(ip).digest('hex').slice(0, 8);
170
+ });
171
+ app.use(morgan(':ipHash :method :url :status :response-time ms'));
172
+
173
+ // Routes
174
+ app.use(consentRoutes);
175
+ app.post('/api/track', requireAnalyticsConsent, async (req, res) => {
176
+ // ... Tracker-Forward-Logic
177
+ res.status(204).end();
178
+ });
179
+
180
+ export default app;
181
+ ```
182
+
183
+ ## AVV / DPA
184
+
185
+ - Hosting-Provider — Art. 28 DSGVO
186
+ - Datenbank-Provider (Postgres-Cloud / Mongo-Atlas EU) — AVV
187
+ - Logging-Provider (sofern extern) — AVV mit IP-Hash-Garantie
188
+ - Reverse-Proxy (Cloudflare / Fastly EU) — AVV
189
+
190
+ ## DSE-Wording-Vorlage
191
+
192
+ ```markdown
193
+ ### Server-Logs
194
+
195
+ Beim Aufruf dieser Webseite werden technische Daten in Server-Logs erfasst:
196
+
197
+ - Hash der IP-Adresse (SHA-256, gekuerzt auf 8 Zeichen)
198
+ - Zeitstempel des Aufrufs
199
+ - HTTP-Methode und URL
200
+ - HTTP-Statuscode
201
+ - Antwortzeit (ms)
202
+ - User-Agent (max. 200 Zeichen)
203
+
204
+ **Rechtsgrundlage:** Art. 6 Abs. 1 lit. f DSGVO (berechtigtes Interesse an
205
+ sicherem Webseitenbetrieb).
206
+ **Speicherdauer:** 14 Tage, danach automatische Loeschung.
207
+ **Hinweis:** Die volle IP-Adresse wird zu keinem Zeitpunkt gespeichert.
208
+ ```
209
+
210
+ ## Verify-Commands (Live-Probe)
211
+
212
+ ```bash
213
+ # 1. X-Powered-By NICHT vorhanden
214
+ curl -sI https://<placeholder-domain>/ | grep -i "x-powered-by"
215
+ # Erwartung: leer
216
+
217
+ # 2. helmet-Headers
218
+ curl -sI https://<placeholder-domain>/ | grep -iE "x-content-type-options|x-frame-options|strict-transport-security"
219
+ # Erwartung: 3 Treffer
220
+
221
+ # 3. Tracker-Endpoint blockt ohne Consent
222
+ curl -X POST https://<placeholder-domain>/api/track -i
223
+ # Erwartung: 204 mit "blocked":"analytics-opt-out"
224
+
225
+ # 4. Consent-Cookie mit Secure-Flags
226
+ curl -X POST https://<placeholder-domain>/api/consent-log \
227
+ -H "Content-Type: application/json" \
228
+ -d '{"necessary":true,"analytics":false,"marketing":false}' -i
229
+ # Erwartung: Set-Cookie: cookie-consent=...; SameSite=Lax; Path=/; HttpOnly nein; Secure ja
230
+ ```
231
+
232
+ ## Cross-References
233
+
234
+ - AEGIS-Scanner: `cookie-flags-checker.ts`, `helmet-config-checker.ts`, `morgan-pii-checker.ts`
235
+ - Skill-Reference: `references/dsgvo.md` Art. 32 (Sicherheit), § 25 TDDDG
236
+ - BGH-Rechtsprechung: `references/bgh-urteile.md` BGH I ZR 7/16
237
+ - Audit-Pattern: `references/audit-patterns.md` Phase 6 (Server-Side-Logs)
@@ -0,0 +1,256 @@
1
+ ---
2
+ license: MIT (snippet)
3
+ provider: Express.js (Open-Source)
4
+ last-checked: 2026-05-05
5
+ purpose: Standard-DSGVO-Routes (Auskunft, Loeschung, Datenuebertragbarkeit) im Express-Stack.
6
+ ---
7
+
8
+ # Express — DSGVO-Routes Pattern
9
+
10
+ ## Trigger / Detection
11
+
12
+ Repo enthaelt:
13
+ - `express` mit User-Authentifizierung (Sessions / JWT)
14
+ - Datenbank-Layer mit User-Tabellen
15
+ - Optional: Job-Queue (BullMQ / Agenda) fuer asynchrone Auskunfts-Generierung
16
+ - Optional: Mailer-Service fuer Antwort-Versand
17
+
18
+ DSGVO-Pflicht-Endpoints (typisch):
19
+ - `POST /api/gdpr/auskunft` (Art. 15)
20
+ - `POST /api/gdpr/loeschen` (Art. 17)
21
+ - `POST /api/gdpr/portabilitaet` (Art. 20)
22
+ - `POST /api/gdpr/berichtigung` (Art. 16)
23
+ - `POST /api/gdpr/widerspruch` (Art. 21)
24
+
25
+ ## Default-Verhalten (was passiert ohne Konfiguration)
26
+
27
+ - DSGVO-Anfragen kommen per E-Mail an Support → manuelle Bearbeitung
28
+ - Keine Log-Spur fuer Compliance-Nachweis (Art. 5 Abs. 2 Rechenschaftspflicht)
29
+ - Loeschungen oft unvollstaendig (Backups, Logs, Search-Indexes uebersehen)
30
+ - Auskunft als Word-Dokument zusammenkopiert → Drift, Fehler-Quote hoch
31
+ - Keine Identitaets-Verifizierung → Account-Takeover-Vektor
32
+
33
+ ## Compliance-Risiken
34
+
35
+ | Risiko | Norm | Severity | Fix |
36
+ |---|---|---|---|
37
+ | Antwortfrist 1 Monat verpasst | Art. 12 Abs. 3 DSGVO | KRITISCH | Job-Queue + Cron-Watchdog |
38
+ | Auskunft unvollstaendig (Backup-Daten fehlen) | Art. 15 DSGVO | HOCH | Multi-Source-Aggregator |
39
+ | Loeschung verfehlt Search-Index | Art. 17 DSGVO | HOCH | Index-Sync-Worker im gleichen Job |
40
+ | Identitaet nicht verifiziert | Art. 12 Abs. 6 DSGVO | KRITISCH | E-Mail-Bestaetigung + Session-Auth |
41
+ | Antwort an falsche Person (PII-Leak) | Art. 5 lit. f DSGVO | KRITISCH | E-Mail-Match + 2FA-Check |
42
+ | Kein Audit-Log | Art. 5 Abs. 2 DSGVO | HOCH | DB-Tabelle `gdpr_requests` |
43
+
44
+ ## Code-Pattern (sanitized)
45
+
46
+ ```typescript
47
+ // File: src/routes/gdpr.ts
48
+ import { Router } from 'express';
49
+ import { z } from 'zod';
50
+ import { requireAuth } from '../middleware/auth';
51
+ import { gdprQueue } from '../jobs/gdpr-queue';
52
+
53
+ const router = Router();
54
+
55
+ const auskunftSchema = z.object({
56
+ email: z.string().email(),
57
+ format: z.enum(['json', 'pdf']).default('json'),
58
+ });
59
+
60
+ router.post('/api/gdpr/auskunft', requireAuth, async (req, res) => {
61
+ const parsed = auskunftSchema.safeParse(req.body);
62
+ if (!parsed.success) {
63
+ return res.status(400).json({ error: parsed.error.flatten() });
64
+ }
65
+
66
+ // Identitaets-Check: angefragte E-Mail muss Session-User entsprechen
67
+ if (parsed.data.email.toLowerCase() !== req.user.email.toLowerCase()) {
68
+ return res.status(403).json({ error: 'Identitaet nicht bestaetigt' });
69
+ }
70
+
71
+ // Audit-Log: Request registrieren
72
+ const request = await req.app.locals.db.gdprRequest.create({
73
+ data: {
74
+ userId: req.user.id,
75
+ type: 'AUSKUNFT',
76
+ status: 'PENDING',
77
+ requestedAt: new Date(),
78
+ requestedFormat: parsed.data.format,
79
+ },
80
+ });
81
+
82
+ // Async-Job fuer Aggregation queuen
83
+ await gdprQueue.add('auskunft', {
84
+ requestId: request.id,
85
+ userId: req.user.id,
86
+ format: parsed.data.format,
87
+ });
88
+
89
+ res.status(202).json({
90
+ requestId: request.id,
91
+ status: 'PENDING',
92
+ expectedResponseTime: '14 Tage (max. 1 Monat per Art. 12 DSGVO)',
93
+ });
94
+ });
95
+
96
+ router.post('/api/gdpr/loeschen', requireAuth, async (req, res) => {
97
+ const reason = z.string().max(500).optional().parse(req.body.reason);
98
+
99
+ // Soft-Delete sofort, Hard-Delete via Job
100
+ await req.app.locals.db.user.update({
101
+ where: { id: req.user.id },
102
+ data: {
103
+ deletedAt: new Date(),
104
+ deletionReason: reason ?? null,
105
+ // PII-Felder sofort ueberschreiben
106
+ email: `deleted-${req.user.id}@<placeholder-domain>`,
107
+ name: 'GELOESCHT',
108
+ },
109
+ });
110
+
111
+ await gdprQueue.add('hard-delete', { userId: req.user.id }, { delay: 30 * 24 * 60 * 60 * 1000 });
112
+
113
+ // Logout
114
+ req.session?.destroy(() => {});
115
+
116
+ res.status(202).json({
117
+ status: 'PENDING_HARD_DELETE',
118
+ softDeletedAt: new Date().toISOString(),
119
+ hardDeleteScheduled: 'in 30 Tagen (Widerruf-Frist)',
120
+ });
121
+ });
122
+
123
+ router.post('/api/gdpr/portabilitaet', requireAuth, async (req, res) => {
124
+ // Aehnlich Auskunft, aber zusaetzlich strukturiertes/maschinenlesbares Format
125
+ const request = await req.app.locals.db.gdprRequest.create({
126
+ data: {
127
+ userId: req.user.id,
128
+ type: 'PORTABILITAET',
129
+ status: 'PENDING',
130
+ requestedAt: new Date(),
131
+ requestedFormat: 'json',
132
+ },
133
+ });
134
+
135
+ await gdprQueue.add('portability-export', { requestId: request.id, userId: req.user.id });
136
+
137
+ res.status(202).json({ requestId: request.id });
138
+ });
139
+
140
+ router.post('/api/gdpr/widerspruch', requireAuth, async (req, res) => {
141
+ const scope = z.enum(['marketing', 'analytics', 'profiling', 'all']).parse(req.body.scope);
142
+
143
+ await req.app.locals.db.user.update({
144
+ where: { id: req.user.id },
145
+ data: {
146
+ consentMarketing: scope === 'marketing' || scope === 'all' ? false : undefined,
147
+ consentAnalytics: scope === 'analytics' || scope === 'all' ? false : undefined,
148
+ consentProfiling: scope === 'profiling' || scope === 'all' ? false : undefined,
149
+ objectionLoggedAt: new Date(),
150
+ },
151
+ });
152
+
153
+ res.status(204).end();
154
+ });
155
+
156
+ export default router;
157
+ ```
158
+
159
+ ```typescript
160
+ // File: src/jobs/gdpr-queue.ts
161
+ import { Queue, Worker } from 'bullmq';
162
+
163
+ export const gdprQueue = new Queue('gdpr', {
164
+ connection: { host: process.env.REDIS_HOST, port: 6379 },
165
+ });
166
+
167
+ new Worker('gdpr', async (job) => {
168
+ switch (job.name) {
169
+ case 'auskunft':
170
+ await aggregateUserData(job.data.userId, job.data.requestId);
171
+ break;
172
+ case 'hard-delete':
173
+ await hardDeleteUser(job.data.userId);
174
+ break;
175
+ case 'portability-export':
176
+ await exportPortabilityData(job.data.userId, job.data.requestId);
177
+ break;
178
+ }
179
+ }, { connection: { host: process.env.REDIS_HOST, port: 6379 } });
180
+
181
+ async function aggregateUserData(_userId: string, _requestId: string) {
182
+ // Pflicht-Quellen: User-DB, Orders, Logs, Backups, Search-Index, S3-Uploads
183
+ // Generiere JSON/PDF, hashe als Beweis, sende per E-Mail mit signed Link
184
+ }
185
+
186
+ async function hardDeleteUser(_userId: string) {
187
+ // Pflicht-Targets: alle Tabellen, Search-Indexes, S3-Files, Backups (gem. Backup-Policy)
188
+ }
189
+
190
+ async function exportPortabilityData(_userId: string, _requestId: string) {
191
+ // Strukturiert + maschinenlesbar (JSON, optional CSV)
192
+ }
193
+ ```
194
+
195
+ ## AVV / DPA
196
+
197
+ - Datenbank-Provider — AVV
198
+ - Job-Queue (Redis Cloud / Upstash EU) — AVV
199
+ - Mailer (SES EU / Postmark / Resend EU) — AVV
200
+ - File-Storage (S3 EU / Bunny CDN) fuer Auskunfts-Exports — AVV mit signed-URL-Pflicht
201
+
202
+ ## DSE-Wording-Vorlage
203
+
204
+ ```markdown
205
+ ### Ihre Rechte als betroffene Person
206
+
207
+ Sie koennen jederzeit folgende Rechte ausueben — eingeloggt unter
208
+ [Ihre Daten](#account-data) oder per E-Mail an <placeholder-email>:
209
+
210
+ | Recht | Endpoint | Antwortzeit |
211
+ |---|---|---|
212
+ | Auskunft (Art. 15) | `/api/gdpr/auskunft` | max. 1 Monat |
213
+ | Berichtigung (Art. 16) | `/api/gdpr/berichtigung` | max. 1 Monat |
214
+ | Loeschung (Art. 17) | `/api/gdpr/loeschen` | sofort (Soft) + 30T (Hard) |
215
+ | Datenuebertragbarkeit (Art. 20) | `/api/gdpr/portabilitaet` | max. 1 Monat |
216
+ | Widerspruch (Art. 21) | `/api/gdpr/widerspruch` | sofort |
217
+
218
+ **Identitaets-Verifizierung:** Anfragen werden nur aus eingeloggter Session
219
+ ausgefuehrt. Bei E-Mail-Anfragen bestaetigen wir Ihre Identitaet via
220
+ Confirm-Link an die hinterlegte E-Mail-Adresse.
221
+ ```
222
+
223
+ ## Verify-Commands (Live-Probe)
224
+
225
+ ```bash
226
+ # 1. Auskunft-Endpoint erfordert Auth
227
+ curl -X POST https://<placeholder-domain>/api/gdpr/auskunft \
228
+ -H "Content-Type: application/json" \
229
+ -d '{"email":"test@example.com","format":"json"}' -i
230
+ # Erwartung: 401 / 403
231
+
232
+ # 2. Mit Auth: 202 + RequestId
233
+ curl -X POST https://<placeholder-domain>/api/gdpr/auskunft \
234
+ -H "Content-Type: application/json" \
235
+ -H "Cookie: session=<placeholder-session>" \
236
+ -d '{"email":"<placeholder-user-email>","format":"json"}' -i
237
+ # Erwartung: 202 mit { requestId, status: "PENDING" }
238
+
239
+ # 3. Cross-User-Zugriff verhindert
240
+ curl -X POST https://<placeholder-domain>/api/gdpr/auskunft \
241
+ -H "Content-Type: application/json" \
242
+ -H "Cookie: session=<placeholder-session>" \
243
+ -d '{"email":"OTHER-USER@example.com","format":"json"}' -i
244
+ # Erwartung: 403 "Identitaet nicht bestaetigt"
245
+
246
+ # 4. Audit-Log-Pruefung (DB-Query)
247
+ # SELECT COUNT(*) FROM gdpr_requests WHERE userId = '<id>' AND created_at > now() - interval '24h';
248
+ ```
249
+
250
+ ## Cross-References
251
+
252
+ - AEGIS-Scanner: `gdpr-routes-checker.ts`, `auth-flow-checker.ts`, `tenant-isolation-checker.ts`
253
+ - Skill-Reference: `references/dsgvo.md` Art. 12-22 (Betroffenenrechte)
254
+ - BGH-Rechtsprechung: `references/bgh-urteile.md`
255
+ - EuGH-Rechtsprechung: `references/eu-eugh-dsgvo-schadensersatz.md`
256
+ - Audit-Pattern: `references/audit-patterns.md` Phase 8 (Betroffenenrechte-Test)
@@ -0,0 +1,207 @@
1
+ ---
2
+ license: MIT (snippet)
3
+ provider: Express + helmet (Open-Source)
4
+ last-checked: 2026-05-05
5
+ purpose: Helmet-Integration fuer CSP + Cookie-Settings + DSGVO-konforme Security-Headers.
6
+ ---
7
+
8
+ # Express — Helmet-CSP Pattern (DSGVO-konform)
9
+
10
+ ## Trigger / Detection
11
+
12
+ Repo enthaelt:
13
+ - `helmet` in `package.json`
14
+ - `app.use(helmet(...))` in `app.ts` / `server.ts`
15
+ - Optional: `nonce`-Generierung via `crypto.randomBytes`
16
+ - Optional: `report-uri` / `report-to` fuer CSP-Violations
17
+
18
+ ## Default-Verhalten (was passiert ohne Konfiguration)
19
+
20
+ - `helmet()` ohne Options aktiviert konservative Defaults, ABER:
21
+ - CSP-Default ist `default-src 'self'` → blockiert alle Tracker/CDN-Resources OHNE Whitelisting
22
+ - `Cross-Origin-Embedder-Policy: require-corp` blockiert externes Embedding
23
+ - `Strict-Transport-Security` wird mit konservativem Max-Age gesetzt
24
+ - Ohne `helmet`: keine Security-Headers, alle XSS/Clickjacking-Vektoren offen
25
+ - CSP-Violations gehen in Console, kein Server-Side-Reporting
26
+
27
+ ## Compliance-Risiken
28
+
29
+ | Risiko | Norm | Severity | Fix |
30
+ |---|---|---|---|
31
+ | CSP fehlt → XSS-Vektor | Art. 32 DSGVO | KRITISCH | `contentSecurityPolicy` mit explizitem Allowlist |
32
+ | Inline-Scripts ohne nonce | Art. 32 DSGVO | HOCH | Nonce-Pattern oder hash-based |
33
+ | Tracker-Hosts in CSP allowlisted ohne Consent | § 25 TDDDG | MITTEL | CSP nur fuer Hosts die NACH Consent geladen werden |
34
+ | HSTS mit kurzem max-age | Art. 32 DSGVO | MITTEL | `maxAge: 31536000` + `includeSubDomains` |
35
+ | `Permissions-Policy` fehlt | DSGVO Art. 25 | NIEDRIG | Geo/Cam/Mic auf `()` setzen |
36
+
37
+ ## Code-Pattern (sanitized)
38
+
39
+ ```typescript
40
+ // File: src/middleware/security.ts
41
+ import helmet from 'helmet';
42
+ import crypto from 'node:crypto';
43
+ import type { Request, Response, NextFunction } from 'express';
44
+
45
+ // Nonce pro Request fuer CSP
46
+ export function nonceMiddleware(_req: Request, res: Response, next: NextFunction) {
47
+ res.locals.cspNonce = crypto.randomBytes(16).toString('base64');
48
+ next();
49
+ }
50
+
51
+ export function buildHelmet() {
52
+ return helmet({
53
+ contentSecurityPolicy: {
54
+ useDefaults: true,
55
+ directives: {
56
+ defaultSrc: ["'self'"],
57
+ scriptSrc: [
58
+ "'self'",
59
+ // Nonce muss vom Server pro Request gerendered werden
60
+ (_req: Request, res: Response) => `'nonce-${(res as any).locals.cspNonce}'`,
61
+ 'https://<placeholder-eu-analytics-host>',
62
+ ],
63
+ connectSrc: [
64
+ "'self'",
65
+ 'https://<placeholder-eu-analytics-host>',
66
+ 'https://<placeholder-eu-error-tracking-host>',
67
+ ],
68
+ imgSrc: ["'self'", 'data:', 'https://<placeholder-eu-image-cdn>'],
69
+ styleSrc: ["'self'", "'unsafe-inline'"], // Tailwind etc.
70
+ fontSrc: ["'self'", 'https://<placeholder-eu-font-cdn>'],
71
+ frameAncestors: ["'none'"],
72
+ formAction: ["'self'"],
73
+ baseUri: ["'self'"],
74
+ objectSrc: ["'none'"],
75
+ upgradeInsecureRequests: [],
76
+ reportUri: ['/api/csp-report'],
77
+ },
78
+ },
79
+ crossOriginEmbedderPolicy: false, // bei externer Image-Einbettung
80
+ strictTransportSecurity: {
81
+ maxAge: 31536000, // 1 Jahr
82
+ includeSubDomains: true,
83
+ preload: true,
84
+ },
85
+ referrerPolicy: { policy: 'strict-origin-when-cross-origin' },
86
+ xssFilter: true,
87
+ });
88
+ }
89
+ ```
90
+
91
+ ```typescript
92
+ // File: src/routes/csp-report.ts
93
+ import { Router } from 'express';
94
+ import express from 'express';
95
+
96
+ const router = Router();
97
+
98
+ // CSP-Reports kommen mit application/csp-report content-type
99
+ router.post('/api/csp-report', express.json({ type: 'application/csp-report' }), async (req, res) => {
100
+ const report = req.body['csp-report'] ?? req.body;
101
+
102
+ // Logge nur sanitized Daten — kein User-PII
103
+ console.warn('[CSP-VIOLATION]', {
104
+ documentUri: report['document-uri'],
105
+ blockedUri: report['blocked-uri'],
106
+ violatedDirective: report['violated-directive'],
107
+ sourceFile: report['source-file'],
108
+ timestamp: new Date().toISOString(),
109
+ });
110
+
111
+ // Optional: Persist in DB fuer Auswertung
112
+ // await req.app.locals.db.cspReport.create({ data: { ...report } });
113
+
114
+ res.status(204).end();
115
+ });
116
+
117
+ export default router;
118
+ ```
119
+
120
+ ```typescript
121
+ // File: src/views/layout.ejs (oder Pug/Handlebars-Equivalent)
122
+ // <html>
123
+ // <head>
124
+ // <script nonce="<%= cspNonce %>">
125
+ // window.__CSP_NONCE__ = '<%= cspNonce %>';
126
+ // </script>
127
+ // </head>
128
+ // </html>
129
+ ```
130
+
131
+ ```typescript
132
+ // File: src/app.ts
133
+ import express from 'express';
134
+ import { nonceMiddleware, buildHelmet } from './middleware/security';
135
+ import cspReportRoutes from './routes/csp-report';
136
+
137
+ const app = express();
138
+
139
+ // Order matters: nonce VOR helmet
140
+ app.use(nonceMiddleware);
141
+ app.use(buildHelmet());
142
+
143
+ // Body-Parser fuer normale Routes
144
+ app.use(express.json({ limit: '100kb' }));
145
+
146
+ // CSP-Report-Endpoint
147
+ app.use(cspReportRoutes);
148
+
149
+ // ... weitere Routes
150
+ export default app;
151
+ ```
152
+
153
+ ## AVV / DPA
154
+
155
+ - Hosting-Provider — Art. 28 DSGVO
156
+ - CSP-Report-Logging-Provider (z.B. Sentry CSP) — AVV
157
+ - ALLE Hosts in CSP-Allowlist sind potentielle Auftragsverarbeiter und MUESSEN
158
+ in DSE-Section "Auftragsverarbeiter" gelistet sein
159
+
160
+ ## DSE-Wording-Vorlage
161
+
162
+ ```markdown
163
+ ### Sicherheits-Massnahmen (technisch)
164
+
165
+ Wir setzen folgende technische Schutzmassnahmen ein:
166
+
167
+ - **Content-Security-Policy (CSP):** Strikte Allowlist erlaubter Quellen
168
+ fuer Skripte, Bilder, Fonts. Verhindert XSS-Angriffe.
169
+ - **HTTP Strict Transport Security (HSTS):** Erzwingt HTTPS-Verbindungen.
170
+ Max-Age: 1 Jahr.
171
+ - **CSP-Violation-Reports:** Verstoesse werden anonymisiert (ohne IP/User-PII)
172
+ protokolliert zur Sicherheits-Auswertung.
173
+
174
+ **Rechtsgrundlage:** Art. 32 DSGVO (Sicherheit der Verarbeitung) i.V.m.
175
+ Art. 6 Abs. 1 lit. f DSGVO.
176
+ **Speicherdauer CSP-Reports:** 30 Tage, ausschliesslich technische
177
+ Auswertung, kein Bezug zu Einzelpersonen.
178
+ ```
179
+
180
+ ## Verify-Commands (Live-Probe)
181
+
182
+ ```bash
183
+ # 1. CSP-Header gesetzt
184
+ curl -sI https://<placeholder-domain>/ | grep -i "content-security-policy"
185
+ # Erwartung: lange Policy-String mit default-src, script-src etc.
186
+
187
+ # 2. HSTS mit korrektem Max-Age
188
+ curl -sI https://<placeholder-domain>/ | grep -i "strict-transport-security"
189
+ # Erwartung: max-age=31536000; includeSubDomains; preload
190
+
191
+ # 3. CSP-Report-Endpoint funktioniert
192
+ curl -X POST https://<placeholder-domain>/api/csp-report \
193
+ -H "Content-Type: application/csp-report" \
194
+ -d '{"csp-report":{"document-uri":"https://<placeholder-domain>/","violated-directive":"script-src"}}' -i
195
+ # Erwartung: 204
196
+
197
+ # 4. observatory.mozilla.org-Score
198
+ # Browse zu https://observatory.mozilla.org/analyze/<placeholder-domain>
199
+ # Erwartung: Score >= A
200
+ ```
201
+
202
+ ## Cross-References
203
+
204
+ - AEGIS-Scanner: `csp-config-checker.ts`, `hsts-checker.ts`, `helmet-config-checker.ts`
205
+ - Skill-Reference: `references/dsgvo.md` Art. 32 (Sicherheit), Art. 25 (Privacy-by-Design)
206
+ - BSI-Grundschutz: SYS.1.1 Allgemeiner Server
207
+ - Audit-Pattern: `references/audit-patterns.md` Phase 7 (Security-Header-Audit)