Wallarm Logo

GoTestWAF
API / Application Security Testing Results

Overall grade:

{{$length := len .Overall.Mark}} {{if eq $length 2}} {{printf "%c" (index .Overall.Mark 0)}} {{printf "%c" (index .Overall.Mark 1)}} {{else}} {{.Overall.Mark}} {{end}} {{printf "%.1f" .Overall.Percentage}} / 100
Project name : {{.WafName}}
URL : {{.Url}}
Testing Date : {{.WafTestingDate}}
GoTestWAF version : {{.GtwVersion}}
Test cases fingerprint : {{.TestCasesFP}}
{{$length := len $.OpenApiFile}}{{if ne $length 0}} OpenAPI file : {{.OpenApiFile}}
{{end}} {{$length := len $.Args}}{{if ne $length 0}} Used arguments : {{StringsJoin .Args " "}}
{{end}}
Type
True-positive tests blocked
True-negative tests passed
Grade
API Security
{{.ApiSec.TruePositiveTestsGrade.Mark}}
{{printf "%.1f%%" .ApiSec.TruePositiveTestsGrade.Percentage}}
{{.ApiSec.TrueNegativeTestsGrade.Mark}}
{{printf "%.1f%%" .ApiSec.TrueNegativeTestsGrade.Percentage}}
{{.ApiSec.Grade.Mark}}
{{printf "%.1f%%" .ApiSec.Grade.Percentage}}
Application Security
{{.AppSec.TruePositiveTestsGrade.Mark}}
{{printf "%.1f%%" .AppSec.TruePositiveTestsGrade.Percentage}}
{{.AppSec.TrueNegativeTestsGrade.Mark}}
{{printf "%.1f%%" .AppSec.TrueNegativeTestsGrade.Percentage}}
{{.AppSec.Grade.Mark}}
{{printf "%.1f%%" .AppSec.Grade.Percentage}}
{{if or ($.ApiSecChartData.Chart) ($.AppSecChartData.Chart)}}
{{if $.ApiSecChartData.Chart}}
{{$.ApiSecChartData.Chart}}
{{end}} {{if $.AppSecChartData.Chart}}
{{$.AppSecChartData.Chart}}
{{end}}
{{end}}

Benchmarks against other solutions

Type
API Security
Application Security
Overall score
{{range $row := .ComparisonTable}}
{{$row.Name}}
{{$row.ApiSec.Mark}}
{{printf "%.1f%%" $row.ApiSec.Percentage}}
{{$row.AppSec.Mark}}
{{printf "%.1f%%" $row.AppSec.Percentage}}
{{$row.OverallScore.Mark}}
{{printf "%.1f%%" $row.OverallScore.Percentage}}
{{end}}
{{.WallarmResult.ApiSec.Mark}}
{{printf "%.1f%%" .WallarmResult.ApiSec.Percentage}}
{{.WallarmResult.AppSec.Mark}}
{{printf "%.1f%%" .WallarmResult.AppSec.Percentage}}
{{.WallarmResult.OverallScore.Mark}}
{{printf "%.1f%%" .WallarmResult.OverallScore.Percentage}}

Details

Summary

Total requests sent: {{.TotalSent}}

Number of blocked requests: {{.BlockedRequestsNumber}}

Number of passed requests: {{.BypassedRequestsNumber}}

{{if not .IgnoreUnresolved}}

Number of unresolved requests: {{.UnresolvedRequestsNumber}}

{{end}}

Number of failed requests: {{.FailedRequestsNumber}}

{{$length := len .TruePositiveTests.SummaryTable}}{{if ne $length 0}}

True-positive tests

Test set
Test case
Percentage
Blocked
Bypassed
{{if not .IgnoreUnresolved}}
Unresolved
{{end}}
Sent
Failed
{{range $testSetName, $testSetSum := .TruePositiveTests.SummaryTable}} {{range $row := $testSetSum.TestCases}}
{{$row.TestSet}}
{{$row.TestCase}}
{{printf "%.2f%%" $row.Percentage}}
{{$row.Blocked}}
{{$row.Bypassed}}
{{if not $.IgnoreUnresolved}}
{{$row.Unresolved}}
{{end}}
{{$row.Sent}}
{{$row.Failed}}
{{end}} {{$length := len $.TruePositiveTests.SummaryTable}}{{if gt $length 1}}
Summary for {{$testSetName}}
{{printf "%.2f%%" $testSetSum.Percentage}}
{{$testSetSum.Blocked}}
{{$testSetSum.Bypassed}}
{{if not $.IgnoreUnresolved}}
{{$testSetSum.Unresolved}}
{{end}}
{{$testSetSum.Sent}}
{{$testSetSum.Failed}}
{{end}} {{end}} {{$length := len .TruePositiveTests.SummaryTable}}{{if gt $length 1}}
Summary for true-positive tests
{{printf "%.2f%%" .TruePositiveTests.Percentage}}
{{.TruePositiveTests.BlockedRequestsNumber}}
{{.TruePositiveTests.BypassedRequestsNumber}}
{{if not .IgnoreUnresolved}}
{{.TruePositiveTests.UnresolvedRequestsNumber}}
{{end}}
{{.TruePositiveTests.TotalSent}}
{{.TruePositiveTests.FailedRequestsNumber}}
{{end}}
{{end}} {{$length := len .TrueNegativeTests.SummaryTable}}{{if ne $length 0}}

True-negative tests

Test set
Test case
Percentage
Blocked
Bypassed
{{if not .IgnoreUnresolved}}
Unresolved
{{end}}
Sent
Failed
{{range $testSetName, $testSetSum := .TrueNegativeTests.SummaryTable}} {{range $row := $testSetSum.TestCases}}
{{$row.TestSet}}
{{$row.TestCase}}
{{printf "%.2f%%" $row.Percentage}}
{{$row.Blocked}}
{{$row.Bypassed}}
{{if not $.IgnoreUnresolved}}
{{$row.Unresolved}}
{{end}}
{{$row.Sent}}
{{$row.Failed}}
{{end}} {{$length := len $.TrueNegativeTests.SummaryTable}}{{if gt $length 1}}
Summary for {{$testSetName}}
{{printf "%.2f%%" $testSetSum.Percentage}}
{{$testSetSum.Blocked}}
{{$testSetSum.Bypassed}}
{{if not $.IgnoreUnresolved}}
{{$testSetSum.Unresolved}}
{{end}}
{{$testSetSum.Sent}}
{{$testSetSum.Failed}}
{{end}} {{end}} {{$length := len .TrueNegativeTests.SummaryTable}}{{if gt $length 1}}
Summary for false-positive tests
{{printf "%.2f%%" .TrueNegativeTests.Percentage}}
{{.TrueNegativeTests.BlockedRequestsNumber}}
{{.TrueNegativeTests.BypassedRequestsNumber}}
{{if not .IgnoreUnresolved}}
{{.TrueNegativeTests.UnresolvedRequestsNumber}}
{{end}}
{{.TrueNegativeTests.TotalSent}}
{{.TrueNegativeTests.FailedRequestsNumber}}
{{end}}
{{end}} {{if $.ScannedPaths}}

Scanned paths

{{$length := len $.ScannedPaths}}{{$length}} endpoints were scanned in total.


{{range $row := $.ScannedPaths}}

{{$row.Method}} {{$row.Path}}

{{end}} {{end}}

True Negative Tests

{{.TrueNegativeTests.BypassedRequestsNumber}} true-negative requests identified as bypassed (test passed, good behavior)

{{.TrueNegativeTests.BlockedRequestsNumber}} true-negative requests identified as blocked (test failed, bad behavior)

{{if .IncludePayloads}} {{if .TrueNegativeTests.BlockedRequestsNumber}}
Payload
Test case
Encoder
Placeholder
Status
{{range $payload, $codeMap := .TrueNegativeTests.Blocked}} {{range $code, $testDetails := $codeMap}} {{$encoders := MapKeysToString $testDetails.Encoders ", "}} {{$placeholders := MapKeysToString $testDetails.Placeholders ", "}}
{{$payload}}
{{$testDetails.TestCase}}
{{$encoders}}
{{$placeholders}}
{{$code}}
{{end}} {{end}}
{{end}} {{end}} {{if .TrueNegativeTests.UnresolvedRequestsNumber}}

{{.TrueNegativeTests.UnresolvedRequestsNumber}} true positive requests identified as unresolved

{{if .IncludePayloads}}
Payload
Test case
Encoder
Placeholder
Status
{{range $payload, $codeMap := .TrueNegativeTests.Unresolved}} {{range $code, $testDetails := $codeMap}} {{$encoders := MapKeysToString $testDetails.Encoders ", "}} {{$placeholders := MapKeysToString $testDetails.Placeholders ", "}}
{{$payload}}
{{$testDetails.TestCase}}
{{$encoders}}
{{$placeholders}}
{{$code}}
{{end}} {{end}}
{{end}} {{end}} {{if .TrueNegativeTests.FailedRequestsNumber}}

{{.TrueNegativeTests.FailedRequestsNumber}} true positive requests are failed

{{if .IncludePayloads}}
Payload
Test case
Encoder
Placeholder
{{range $row := .TrueNegativeTests.Failed}}
{{$row.Payload}}
{{$row.TestCase}}
{{$row.Encoder}}
{{$row.Placeholder}}
{{$length := len $row.Reason}}{{if ne $length 0}} {{$escapedReason := HTMLEscapeSlice $row.Reason}}
Reason: {{$reason := StringsJoin $escapedReason "
"}}{{script $reason}}
{{end}} {{end}}
{{end}} {{end}}

Bypasses in Details

{{.TruePositiveTests.BypassedRequestsNumber}} malicious requests have bypassed the security solution

{{if .IncludePayloads}} {{if .TruePositiveTests.BypassedRequestsNumber}}
Payload
Test case
Encoder
Placeholder
Status
{{range $paths, $pathMap := .TruePositiveTests.Bypassed}} {{$length := len $paths}} {{if ne $length 0}} {{$splitPaths := StringsSplit $paths "\n"}} {{$escapedSP := HTMLEscapeSlice $splitPaths}}
{{$path := StringsJoin $escapedSP "
"}}{{script $path}}
{{end}} {{range $payload, $codeMap := $pathMap}} {{range $code, $testDetails := $codeMap}} {{$encoders := MapKeysToString $testDetails.Encoders ", "}} {{$placeholders := MapKeysToString $testDetails.Placeholders ", "}}
{{$payload}}
{{$testDetails.TestCase}}
{{$encoders}}
{{$placeholders}}
{{$code}}
{{end}} {{end}} {{end}}
{{end}} {{end}} {{if .TruePositiveTests.UnresolvedRequestsNumber}}

Unresolved requests in Details

{{.TruePositiveTests.UnresolvedRequestsNumber}} requests identified as blocked and passed or as not-blocked and not-passed

{{if .IncludePayloads}}
Payload
Test case
Encoder
Placeholder
Status
{{range $payload, $codeMap := .TruePositiveTests.Unresolved}} {{range $code, $testDetails := $codeMap}} {{$encoders := MapKeysToString $testDetails.Encoders ", "}} {{$placeholders := MapKeysToString $testDetails.Placeholders ", "}}
{{$payload}}
{{$testDetails.TestCase}}
{{$encoders}}
{{$placeholders}}
{{$code}}
{{end}} {{end}}
{{end}} {{end}} {{if .TruePositiveTests.FailedRequestsNumber}}

Failed requests in Details

{{.TruePositiveTests.FailedRequestsNumber}} requests are failed

{{if .IncludePayloads}}
Payload
Test case
Encoder
Placeholder
{{range $row := .TruePositiveTests.Failed}}
{{$row.Payload}}
{{$row.TestCase}}
{{$row.Encoder}}
{{$row.Placeholder}}
{{$length := len $row.Reason}}{{if ne $length 0}} {{$escapedReason := HTMLEscapeSlice $row.Reason}}
Reason: {{$reason := StringsJoin $escapedReason "
"}}{{script $reason}}
{{end}} {{end}}
{{end}} {{end}}