mirror of
https://github.com/yyhuni/xingrin.git
synced 2026-02-01 04:03:23 +08:00
107 lines
3.0 KiB
TypeScript
107 lines
3.0 KiB
TypeScript
import { ColumnDef } from "@tanstack/react-table"
|
||
import { PaginationParams, PaginationInfo } from "./common.types"
|
||
import type { BatchCreateResponse } from "./api-response.types"
|
||
|
||
// 漏洞相关类型定义
|
||
|
||
// 漏洞严重程度
|
||
export type VulnerabilitySeverity = "critical" | "high" | "medium" | "low" | "info"
|
||
|
||
// 漏洞状态
|
||
export type VulnerabilityStatus = "open" | "in_progress" | "resolved" | "false_positive" | "accepted"
|
||
|
||
// 工具原始输出(JSON)
|
||
export interface VulnerabilityRawOutput {
|
||
// Dalfox 字段
|
||
type?: string // R=Reflected, S=Stored
|
||
inject_type?: string // 注入类型
|
||
method?: string // HTTP 方法
|
||
data?: string // URL
|
||
param?: string // 参数名
|
||
payload?: string // payload
|
||
evidence?: string // 证据
|
||
cwe?: string // CWE
|
||
message_str?: string // 消息
|
||
|
||
// Nuclei 字段
|
||
"template-id"?: string
|
||
"template-path"?: string
|
||
"matched-at"?: string
|
||
host?: string
|
||
request?: string
|
||
response?: string
|
||
"curl-command"?: string
|
||
ip?: string
|
||
info?: {
|
||
name?: string
|
||
description?: string
|
||
severity?: string
|
||
tags?: string[]
|
||
reference?: string[]
|
||
classification?: {
|
||
"cve-id"?: string
|
||
"cwe-id"?: string[]
|
||
}
|
||
}
|
||
|
||
// 其他字段
|
||
[key: string]: unknown
|
||
}
|
||
|
||
// 基础漏洞类型(字段名匹配后端 DRF 序列化器输出 - 驼峰格式)
|
||
export interface Vulnerability {
|
||
id: number
|
||
target?: number // 关联的目标ID
|
||
url: string // 漏洞所在的URL
|
||
vulnType: string // 漏洞类型(如 xss-reflected, template-id)
|
||
severity: VulnerabilitySeverity
|
||
source: string // 漏洞来源(dalfox, nuclei)
|
||
cvssScore?: number // CVSS评分
|
||
description?: string // 简化描述
|
||
rawOutput?: VulnerabilityRawOutput // 工具原始输出
|
||
discoveredAt: string // 发现时间
|
||
}
|
||
|
||
// 获取漏洞列表请求参数
|
||
export interface GetVulnerabilitiesParams extends PaginationParams {
|
||
targetId?: number
|
||
domainId?: number
|
||
endpointId?: number
|
||
severity?: VulnerabilitySeverity
|
||
status?: VulnerabilityStatus
|
||
}
|
||
|
||
// 获取漏洞列表响应
|
||
export interface GetVulnerabilitiesResponse {
|
||
vulnerabilities: Vulnerability[]
|
||
total: number
|
||
page: number
|
||
pageSize: number
|
||
totalPages: number
|
||
}
|
||
|
||
// 获取单个漏洞详情响应
|
||
export type GetVulnerabilityByIDResponse = Vulnerability
|
||
|
||
// 漏洞数据表格组件属性类型定义
|
||
export interface VulnerabilityDataTableProps {
|
||
data: Vulnerability[]
|
||
columns: ColumnDef<Vulnerability>[]
|
||
onAddNew?: () => void
|
||
onBulkDelete?: () => void
|
||
onSelectionChange?: (selectedRows: Vulnerability[]) => void
|
||
searchPlaceholder?: string
|
||
searchColumn?: string
|
||
pagination?: {
|
||
pageIndex: number
|
||
pageSize: number
|
||
}
|
||
setPagination?: (pagination: { pageIndex: number; pageSize: number }) => void
|
||
paginationInfo?: PaginationInfo
|
||
onPaginationChange?: (pagination: { pageIndex: number; pageSize: number }) => void
|
||
}
|
||
|
||
// 漏洞批量创建响应
|
||
export type BatchCreateVulnerabilitiesResponse = BatchCreateResponse
|
||
|