XDG_CONFIG_HOME이 설정되어 있고 비어 있지 않으면 $XDG_CONFIG_HOME/dalfox/
그렇지 않으면 $HOME/.config/dalfox/ (HOME이 없으면 %USERPROFILE%\.config\dalfox\, 예: Windows)
첫 번째 디렉터리에 파일이 없다고 두 번째 디렉터리로 넘어가지는 않습니다. 고른 디렉터리에서 config.toml을 읽고, config.toml이 없으면 config.json을 읽습니다. 둘 다 없으면 전부 주석 처리된 config.toml 템플릿을 만들고 내장 기본값으로 실행합니다. 이 템플릿은 scan뿐 아니라 completion과 man을 제외한 어떤 서브커맨드를 처음 실행할 때도 만들어집니다.
--config <path>로 재정의할 수 있습니다. TOML과 JSON 모두 허용됩니다. .json 경로는 JSON으로 먼저, 그 밖의 경로는 TOML로 먼저 파싱하고, 실패하면 다른 형식으로 다시 시도합니다. 존재하지 않는 --config 경로는 기본 템플릿(.json 경로면 JSON)으로 새로 만들어지고, 실행은 내장 기본값으로 진행되며 stderr에 안내가 출력됩니다. 설정 파일 크기는 최대 1 MiB입니다.
모든 항목은 [scan] 테이블 아래에 위치하며 dalfox scan 플래그 이름(snake-case)을 그대로 따릅니다. 이름이 다른 것은 --blind / -b 하나로, 키 이름은 blind_callback_url입니다. 전역 --debug 플래그는 debug 키에 대응합니다.
설정 파일은 CLI 스캔에만 적용됩니다. dalfox server와 dalfox mcp는 요청마다 스캔 옵션을 받으며 [scan]을 읽지 않습니다.
건너뛸 호스트 패턴, 항목 하나에 하나씩(["*.gov", "cdn.example.com"]). *.example.com은 example.com과 하위 도메인에 맞고, 그 밖의 위치에 있는 *는 임의의 문자열에 맞으며, *가 없는 값은 호스트와 정확히 같아야 합니다. 한 항목 안의 쉼표는 구분자가 아닙니다
out_of_scope_file
string
—
스코프 외 패턴을 한 줄에 하나씩 적은 파일. 읽을 수 없는 경로면 스캔을 중단합니다
탐색 및 마이닝
키
타입
기본값
설명
only_discovery
bool
false
탐색 후 중단
skip_discovery
bool
false
탐색을 완전히 건너뜀
skip_reflection_header
bool
false
헤더 반사 검사 건너뜀
skip_reflection_cookie
bool
false
쿠키 반사 검사 건너뜀
skip_reflection_path
bool
false
경로 반사 검사 건너뜀
mining_dict_word
string
—
워드리스트 경로
remote_wordlists
array
[]
burp, assetnote
skip_mining
bool
false
모든 마이닝 건너뜀
skip_mining_dict
bool
false
사전 기반 마이닝 건너뜀
skip_mining_dom
bool
false
HTML id/name 속성에서 파라미터 이름 수집 건너뜀 (DOM-XSS 탐지가 아님 — skip_ast_analysis 참고)
네트워크
키
타입
기본값
설명
timeout
int
10
요청 타임아웃 (초, 1–3600); 원격 페이로드/워드리스트를 가져올 때도 사용
scan_timeout
int
0
페이로드 주입 단계의 대상별 실제 경과 시간 하드 상한(초, 최대 86400); 프리플라이트와 탐색/마이닝은 포함되지 않음. 0이면 비활성화.
delay
int
0
요청 간 지연 (ms), 워커별; 최대 60000
rate_limit
int
0
모든 워커/대상이 공유하는 전역 요청 속도 상한 (req/sec); 0 = 무제한, 최대 100000
retries
int
0
5xx / 일시적 전송 오류를 이 횟수만큼 재시도 (0 = 끔, 최대 100; 429는 항상 재시도)
retry_delay
int
1000
retries 시도 사이의 기본 백오프 (ms, 지수 증가; 최대 60000)
proxy
string
—
프록시 URL (http(s):// 또는 socks4/5(h)://); 원격 페이로드/워드리스트를 가져올 때도 사용
insecure
bool
true
TLS 인증서 검증 건너뜀; 검증을 강제하려면 false로 설정. 스캔 대상과 --blind-oob=로 지정한 OAST 서버에 적용되며, 공개 interactsh 메시는 항상 검증
interactsh로 OOB/OAST 블라인드 XSS 활성화 ([] = 공개 메시; 또는 서버 이름 지정). --blind-oob와 동일
blind_oob_secret
string
—
자체 호스팅 interactsh 서버용 인증 토큰
blind_oob_wait
int
30
페이로드 전송 후 OOB 콜백을 계속 폴링할 시간(초)
custom_payload
string
—
커스텀 페이로드 파일(한 줄에 하나)
only_custom_payload
bool
false
커스텀 페이로드만 사용; custom_payload(또는 --custom-payload)가 함께 없으면 스캔이 종료 코드 2로 끝남
inject_marker
string
—
페이로드로 치환할 토큰
custom_alert_value
string
"1"
alert(X) 값
custom_alert_type
string
"none"
none 또는 str
skip_xss_scanning
bool
false
공격 없이 탐색만 수행
deep_scan
bool
false
첫 탐지 결과 이후에도 계속 진행
sxss
bool
false
Stored XSS 모드 활성화
sxss_url
string
—
조회 URL
sxss_method
string
"GET"
조회 메서드 (method와 같은 값 집합)
sxss_retries
int
3
조회 URL을 가져올 때의 재시도 횟수 (최대 20)
max_payloads_per_param
int
0
파라미터당 테스트하는 기본 페이로드 상한 (0은 deep_scan이 켜져 있지 않으면 세트당 3000개 안전 상한을 적용)
skip_ast_analysis
bool
false
AST DOM-XSS 건너뜀
analyze_external_js
bool
false
동일 출처의 <script src> 번들을 가져와 AST DOM-XSS 분석 수행 (프리플라이트, 대상당 1회; 최대 16개 파일, 각 512 KiB; include_url/exclude_url 준수)
detect_outdated_libs
bool
false
오래되었거나 알려진 취약점이 있는 JS 라이브러리도 보고 (정보성, CWE-1104; 추가 요청 0회)
hpp
bool
false
HTTP 파라미터 오염(HPP)
WAF
키
타입
기본값
설명
waf_bypass
string
"auto"
auto 또는 off(탐지와 보고만). force도 받지만 auto와 똑같이 동작하며, WAF를 고르는 것은 force_waf입니다
skip_waf_probe
bool
false
능동적 핑거프린팅 건너뜀
force_waf
string
—
탐지 결과 대신 대상을 이 WAF로 간주 (--force-waf와 같은 이름, 대소문자 무관)
waf_evasion
bool
false
적응형 회피: 요청 간 랜덤 지터(WAF 탐지 여부와 무관) + 차단 클러스터에 대한 점증 쿨다운 (rate_limit과 함께 사용)
waf_min_confidence
float
0.3
이 신뢰도 미만의 핑거프린트 제거 (0.0–1.0); 기본값은 약한 매칭을 억제
로깅
키
타입
기본값
설명
debug
bool
false
디버그 라인 출력
우선순위
CLI 플래그 > 설정 파일 > 내장 기본값
목록 키(headers, encoders, param 등)는 합쳐지지 않고 통째로 대체됩니다. 명령줄에 -H를 하나만 줘도 설정 파일의 headers 항목은 모두 빠집니다.
deep_scan이나 silence 같은 켜고 끄는 스위치는 명령줄 플래그로 켤 수만 있고 끌 수는 없습니다. 설정 파일에서 true로 켜 두면 한 번의 실행만 끄는 플래그는 없습니다. 예외는 insecure로, --insecure=false가 설정 값을 덮어씁니다.
검증
설정 값은 CLI 인자 파서를 거치지 않으므로, Dalfox는 파일을 읽을 때 따로 검사합니다.
선택지가 정해진 키(format, poc_type, limit_result_type, only_poc, baseline_mode, custom_alert_type, dedup_urls, waf_bypass, on_session_loss, encoders)에 잘못된 값을 넣거나, 알 수 없는 method / sxss_method / force_waf, 올바른 정규식이 아닌 session_check, 절대 URL이 아닌 session_check_url, limit = 0을 쓰면 stderr에 Warning:이 출력됩니다. 해당 키는 내장 기본값으로 돌아가고 스캔은 계속됩니다. method, sxss_method, force_waf는 플래그와 똑같이 대소문자가 정규화됩니다.
proxy, sxss_url, session_check_url은 플래그와 같은 시작 검사를 거칩니다. Dalfox가 라우팅할 수 없는 프록시 스킴이나 스킴이 http/https가 아닌 URL이면 PARSE_ERROR(종료 코드 2)로 스캔이 중단됩니다.
숫자 키는 대응하는 플래그와 같은 범위 제한을 받습니다(workers, timeout, delay, scan_timeout, rate_limit, retries, retry_delay, sxss_retries, max_concurrent_targets, max_targets_per_host, waf_min_confidence). 범위를 벗어나면 INVALID_INPUT_TYPE(종료 코드 2)으로 스캔이 중단됩니다.
알 수 없는 키와 [scan] 테이블 밖에 둔 키는 무시되며, stderr에 Warning: config <path>: unknown key `scan.header` ignored 경고가 출력되므로 철자나 위치가 틀린 키를 알아챌 수 있습니다.
파싱에 실패한 파일(TOML 문법 오류, workers = "10"처럼 타입이 틀린 값 등)은 통째로 무시됩니다. --config로 지정한 파일이면 문제가 된 줄과 열을 짚은 경고가 출력되고(값 자체는 자격 증명일 수 있어 출력하지 않습니다), 기본 경로의 파일이면 아무 메시지 없이 무시됩니다.