Skip to content

Commit d782332

Browse files
committed
feat: 补充 DevOps 平台识别规则
扩展安全与 DevOps 页面规则,新增 20 个容器镜像仓库、GitOps / 部署平台、CI 服务和代码检索 / 代码评审工具匹配。 覆盖 Quay、ChartMuseum、Portus、Docker Registry UI、Flux CD、Weave GitOps、Spinnaker、Octopus Deploy、Harness CI/CD、Devtron、Buildkite、Semaphore CI、CircleCI、Sourcegraph、Gerrit、Phabricator、Phorge、Review Board、RhodeCode 和 OpenGrok,并补充对应技术链接。 将版本升至 1.1.61。 验证:npx prettier --write .;npx prettier --check .;pnpm run typecheck;pnpm run lint;JSON/正则全量校验;pnpm run build;版本一致性检查;git diff --check。
1 parent 9f5ac6a commit d782332

3 files changed

Lines changed: 182 additions & 1 deletion

File tree

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "stackprism",
33
"private": true,
4-
"version": "1.1.60",
4+
"version": "1.1.61",
55
"type": "module",
66
"description": "StackPrism 用于检测网页前端、后端、CDN、SaaS、广告营销、统计、登录、支付、网站程序和主题模板线索。",
77
"scripts": {

public/rules/page/security-devops-assets.json

Lines changed: 161 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -289,6 +289,167 @@
289289
"resourceHints": ["istio"],
290290
"patterns": ["istio[^\\s\"'<>]*\\.(?:js|css|svg|png)(?:\\?|$)"]
291291
},
292+
{
293+
"defaults": {
294+
"confidence": ""
295+
},
296+
"rules": [
297+
{
298+
"defaults": {
299+
"kind": "容器镜像 / 制品仓库"
300+
},
301+
"rules": [
302+
{
303+
"name": "Quay",
304+
"resourceHints": ["quay.io", "quay-enterprise"],
305+
"patterns": [
306+
"quay(?:-enterprise|-registry)?[^\\s\"'<>]*\\.(?:js|css|svg|png)(?:\\?|$)",
307+
"quay\\.io/(?:repository|assets|static)(?:/|[?#]|$)"
308+
]
309+
},
310+
{
311+
"name": "ChartMuseum",
312+
"resourceHints": ["chartmuseum"],
313+
"patterns": ["chartmuseum[^\\s\"'<>]*\\.(?:js|css|svg|png)(?:\\?|$)", "(?:^|/)api/charts(?:[?#\\s/]|$).*chartmuseum"]
314+
},
315+
{
316+
"name": "Portus",
317+
"resourceHints": ["suse-portus", "portus-ui"],
318+
"patterns": [
319+
"<title>\\s*Portus(?:\\s*</title>|\\s+-)",
320+
"(?:suse-)?portus(?:-ui)?[^\\s\"'<>]*\\.(?:js|css|svg|png)(?:\\?|$)"
321+
]
322+
},
323+
{
324+
"name": "Docker Registry UI",
325+
"resourceHints": ["docker-registry-ui", "joxit/docker-registry-ui"],
326+
"patterns": ["docker-registry-ui[^\\s\"'<>]*\\.(?:js|css|svg|png)(?:\\?|$)", "joxit/docker-registry-ui(?:/|[?#]|$)"]
327+
}
328+
]
329+
},
330+
{
331+
"defaults": {
332+
"kind": "GitOps / 部署平台"
333+
},
334+
"rules": [
335+
{
336+
"name": "Flux CD",
337+
"resourceHints": ["fluxcd", "flux-webui"],
338+
"patterns": ["fluxcd[^\\s\"'<>]*\\.(?:js|css|svg|png)(?:\\?|$)", "flux-webui[^\\s\"'<>]*\\.(?:js|css|svg|png)(?:\\?|$)"]
339+
},
340+
{
341+
"name": "Weave GitOps",
342+
"resourceHints": ["weave-gitops", "weaveworks"],
343+
"patterns": [
344+
"weave-gitops[^\\s\"'<>]*\\.(?:js|css|svg|png)(?:\\?|$)",
345+
"weaveworks[^\\s\"'<>]*gitops[^\\s\"'<>]*\\.(?:js|css)(?:\\?|$)"
346+
]
347+
},
348+
{
349+
"name": "Spinnaker",
350+
"resourceHints": ["spinnaker", "spinnaker-deck"],
351+
"patterns": ["spinnaker(?:-deck)?[^\\s\"'<>]*\\.(?:js|css|svg|png)(?:\\?|$)", "(?:^|/)deck(?:/|[?#\\s]|$).*spinnaker"]
352+
},
353+
{
354+
"name": "Octopus Deploy",
355+
"resourceHints": ["octopusdeploy", "octopus.server.web"],
356+
"patterns": [
357+
"octopusdeploy[^\\s\"'<>]*\\.(?:js|css|svg|png)(?:\\?|$)",
358+
"octopus\\.server\\.web[^\\s\"'<>]*\\.(?:js|css)(?:\\?|$)"
359+
]
360+
},
361+
{
362+
"name": "Harness CI/CD",
363+
"resourceHints": ["static.harness.io", "app.harness.io"],
364+
"patterns": [
365+
"static\\.harness\\.io|app\\.harness\\.io/[^\\s\"'<>]*(?:ng|gateway|static|assets)|harness[^\\s\"'<>]*ci[^\\s\"'<>]*\\.(?:js|css)(?:\\?|$)"
366+
]
367+
},
368+
{
369+
"name": "Devtron",
370+
"resourceHints": ["devtron"],
371+
"patterns": [
372+
"devtron[^\\s\"'<>]*\\.(?:js|css|svg|png|webp)(?:\\?|$)",
373+
"devtron\\.ai/[^\\s\"'<>]*(?:dashboard|assets|static)"
374+
]
375+
}
376+
]
377+
},
378+
{
379+
"defaults": {
380+
"kind": "CI / DevOps"
381+
},
382+
"rules": [
383+
{
384+
"name": "Buildkite",
385+
"resourceHints": ["buildkiteassets.com", "buildkite.com"],
386+
"patterns": ["buildkiteassets\\.com|buildkite\\.com/[^\\s\"'<>]*(?:assets|organizations|pipelines|builds)"]
387+
},
388+
{
389+
"name": "Semaphore CI",
390+
"resourceHints": ["semaphoreci.com", "assets.semaphoreci.com"],
391+
"patterns": ["assets\\.semaphoreci\\.com|semaphoreci\\.com/[^\\s\"'<>]*(?:assets|projects|workflows|jobs)"]
392+
},
393+
{
394+
"name": "CircleCI",
395+
"resourceHints": ["circleci.com", "assets.circleci.com"],
396+
"patterns": ["assets\\.circleci\\.com|circleci\\.com/[^\\s\"'<>]*(?:assets|pipelines|workflows|projects)"]
397+
}
398+
]
399+
},
400+
{
401+
"defaults": {
402+
"kind": "代码检索 / 代码评审"
403+
},
404+
"rules": [
405+
{
406+
"name": "Sourcegraph",
407+
"resourceHints": ["sourcegraph", "/.assets/"],
408+
"patterns": [
409+
"sourcegraph[^\\s\"'<>]*\\.(?:js|css|svg|png)(?:\\?|$)",
410+
"(?:^|/)\\.assets/(?:scripts|styles)(?:/|[?#]|$).*sourcegraph"
411+
]
412+
},
413+
{
414+
"name": "Gerrit Code Review",
415+
"resourceHints": ["polygerrit", "gerrit_ui"],
416+
"patterns": ["polygerrit[^\\s\"'<>]*\\.(?:js|css|html)(?:\\?|$)", "gerrit_ui[^\\s\"'<>]*\\.(?:js|css)(?:\\?|$)"]
417+
},
418+
{
419+
"name": "Phabricator",
420+
"resourceHints": ["phabricator", "/rsrc/"],
421+
"patterns": [
422+
"phabricator[^\\s\"'<>]*\\.(?:js|css|svg|png)(?:\\?|$)",
423+
"(?:^|/)rsrc/[^\\s\"'<>]*(?:phabricator|javelin)[^\\s\"'<>]*"
424+
]
425+
},
426+
{
427+
"name": "Phorge",
428+
"resourceHints": ["phorge"],
429+
"patterns": ["<title>\\s*Phorge(?:\\s*</title>|\\s+-)", "phorge[^\\s\"'<>]*\\.(?:js|css|svg|png)(?:\\?|$)"]
430+
},
431+
{
432+
"name": "Review Board",
433+
"resourceHints": ["reviewboard", "review-board"],
434+
"patterns": [
435+
"reviewboard[^\\s\"'<>]*\\.(?:js|css|svg|png)(?:\\?|$)",
436+
"review-board[^\\s\"'<>]*\\.(?:js|css|svg|png)(?:\\?|$)"
437+
]
438+
},
439+
{
440+
"name": "RhodeCode",
441+
"resourceHints": ["rhodecode"],
442+
"patterns": ["rhodecode[^\\s\"'<>]*\\.(?:js|css|svg|png)(?:\\?|$)", "(?:^|/)rhodecode(?:/|[?#\\s]|$)"]
443+
},
444+
{
445+
"name": "OpenGrok",
446+
"resourceHints": ["opengrok"],
447+
"patterns": ["opengrok[^\\s\"'<>]*\\.(?:js|css|svg|png)(?:\\?|$)", "(?:^|/)xref/(?:[^\\s\"'<>]+)?(?:[?#]|$).*opengrok"]
448+
}
449+
]
450+
}
451+
]
452+
},
292453
{
293454
"defaults": {
294455
"confidence": ""

public/tech-links.json

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -475,6 +475,10 @@
475475
"Forgejo": "https://forgejo.org",
476476
"Gogs": "https://gogs.io",
477477
"Harbor": "https://goharbor.io",
478+
"Quay": "https://quay.io",
479+
"ChartMuseum": "https://chartmuseum.com",
480+
"Portus": "http://port.us.org",
481+
"Docker Registry UI": "https://github.com/Joxit/docker-registry-ui",
478482
"Rundeck": "https://www.rundeck.com/open-source",
479483
"Redmine": "https://www.redmine.org",
480484
"Argo CD": "https://argo-cd.readthedocs.io",
@@ -489,6 +493,12 @@
489493
"Kubecost": "https://www.kubecost.com",
490494
"Kiali": "https://kiali.io",
491495
"Istio": "https://istio.io",
496+
"Flux CD": "https://fluxcd.io",
497+
"Weave GitOps": "https://github.com/weaveworks/weave-gitops",
498+
"Spinnaker": "https://spinnaker.io",
499+
"Octopus Deploy": "https://octopus.com",
500+
"Harness CI/CD": "https://www.harness.io",
501+
"Devtron": "https://devtron.ai",
492502
"HashiCorp Consul": "https://www.hashicorp.com/products/consul",
493503
"HashiCorp Nomad": "https://www.hashicorp.com/products/nomad",
494504
"Terraform Enterprise": "https://www.hashicorp.com/products/terraform",
@@ -499,6 +509,16 @@
499509
"TeamCity": "https://www.jetbrains.com/teamcity",
500510
"Atlassian Bamboo": "https://www.atlassian.com/software/bamboo",
501511
"GoCD": "https://www.gocd.org",
512+
"Buildkite": "https://buildkite.com",
513+
"Semaphore CI": "https://semaphore.io",
514+
"CircleCI": "https://circleci.com",
515+
"Sourcegraph": "https://sourcegraph.com",
516+
"Gerrit Code Review": "https://www.gerritcodereview.com",
517+
"Phabricator": "https://secure.phabricator.com",
518+
"Phorge": "https://we.phorge.it",
519+
"Review Board": "https://www.reviewboard.org",
520+
"RhodeCode": "https://rhodecode.com",
521+
"OpenGrok": "https://oracle.github.io/opengrok",
502522
"Sitecore": "https://www.sitecore.com",
503523
"Kentico Xperience": "https://xperience.io",
504524
"DNN / DotNetNuke": "https://www.dnnsoftware.com",

0 commit comments

Comments
 (0)