slopticweb app slop checkersign in / up

Sloptic's checks

Sloptic runs 106 checks across 61 kinds of slop. Each check is a file in this GitHub repository..

How many?

45 of the 106 run on any app; the other 61 send test traffic and require ownership verification.

areakindsruns on any appneeds ownership prooftotal
security30174663
quality17131427
accessibility2303
performance1212113
all614561106

Scoring

Each check has a price. Checks can have fixed prices or vary depending on thresholds reached or frequency. How does Sloptic finds slop?

security

30 kinds of slop across 63 checks. Open to learn more: Most name the ASVS requirement they test.

access control 730 to 90
  • Protected route open without loginverified90sec-authbypass-001ASVS 5.0 8.2.1 (L1)
  • Rows readable by other signed-in usersverified30 to 85sec-backend-002ASVS 5.0 8.2.2 (L1)
  • Other users' records readable by IDverified30 to 85sec-idor-001ASVS 5.0 8.2.2 (L1)
  • Other accounts' objects readable through the APIverified30 to 85sec-idor-002ASVS 5.0 8.2.2 (L1)
  • Other users' profiles readableverified30 to 85sec-idor-003ASVS 5.0 8.2.2 (L1)
  • Other users' backend rows readableverified30 to 85sec-idor-004ASVS 5.0 8.2.2 (L1)
  • Other users' objects in private listsverified30 to 85sec-idor-005ASVS 5.0 8.2.2 (L1)

Thresholds that raise the price:

55
reads another user's record
68
record holds personal or secret data
78
reaches many users' records
85
changes another user's record

About access control

exposed files 74 to 98
  • .env file servedverified90sec-exposure-001closest ASVS 5.0 13.4.7 (L3)
  • .git/config servedverified55sec-exposure-002ASVS 5.0 13.4.1 (L1)
    • Same flaw as sec-exposure-003. Only the highest counts.
  • .git/HEAD servedverified55sec-exposure-003ASVS 5.0 13.4.1 (L1)
    • Same flaw as sec-exposure-002. Only the highest counts.
  • Deploy files served (state files, dumps, keys)verified90sec-exposure-004closest ASVS 5.0 13.4.7 (L3)
  • Source maps servedany URL15sec-exposure-006closest ASVS 5.0 13.4.7 (L3)
  • Credential files servedverified70 to 98sec-exposure-007closest ASVS 5.0 13.4.7 (L3)
    92
    the credential works
    98
    server key, database login or private key
  • Internal addresses in the bundleany URL4sec-exposure-009

About exposed files

security headers 72 to 8
  • Toothless CSPany URL5sec-csp-001ASVS 5.0 3.4.3 (L2)
    • Rises to 24 in a grade with cross-site scripting or scripting in the browser.
  • No nosniff headerany URL3sec-headers-001ASVS 5.0 3.4.4 (L2)
  • No CSPany URL8sec-headers-002ASVS 5.0 3.4.3 (L2)
    • Rises to 24 in a grade with cross-site scripting or scripting in the browser.
  • No HSTSany URL5sec-headers-003ASVS 5.0 3.4.1 (L1)
  • No clickjacking protectionany URL5sec-headers-004related ASVS 5.0 3.4.6 (L2)
    • ASVS asks for CSP frame-ancestors. This check also accepts X-Frame-Options.
  • No referrer policyany URL2sec-headers-005ASVS 5.0 3.4.5 (L2)
  • Server version advertisedany URL2sec-headers-006ASVS 5.0 13.4.6 (L3)

About security headers

session handling 512 to 28
  • Session cookie without HttpOnlyverified15sec-session-001ASVS 5.0 3.3.4 (L2)
    • Rises to 28 in a grade with cross-site scripting or scripting in the browser.
  • Session cookie without SameSiteverified12sec-session-002ASVS 5.0 3.3.2 (L2)
  • Session cookie without Secureverified12sec-session-003ASVS 5.0 3.3.1 (L1)
  • Session token in localStorageverified15sec-session-005stricter than ASVS, per OWASP HTML5 Security Cheat Sheet
    • Rises to 28 in a grade with cross-site scripting or scripting in the browser.
    • ASVS allows session tokens in browser storage. OWASP's HTML5 cheat sheet does not.
  • Session token in the URLverified28sec-session-006ASVS 5.0 14.2.1 (L1)

About session handling

sql injection 590 to 98
  • Login bypass with ' OR '1'='1' --verified90 to 98sec-sqli-001ASVS 5.0 1.2.4 (L1)
    • Same flaw as sec-sqli-002, sec-sqli-003 and sec-sqli-005. Only the highest counts.
  • Login bypass with ' OR 1=1 --verified90 to 98sec-sqli-002ASVS 5.0 1.2.4 (L1)
    • Same flaw as sec-sqli-001, sec-sqli-003 and sec-sqli-005. Only the highest counts.
  • Login bypass with ' OR 'a'='a' --verified90 to 98sec-sqli-003ASVS 5.0 1.2.4 (L1)
    • Same flaw as sec-sqli-001, sec-sqli-002 and sec-sqli-005. Only the highest counts.
  • SQL injection in an API parameterverified90 to 98sec-sqli-004ASVS 5.0 1.2.4 (L1)
  • Login bypass with ' OR '1'='1verified90 to 98sec-sqli-005ASVS 5.0 1.2.4 (L1)
    • Same flaw as sec-sqli-001, sec-sqli-002 and sec-sqli-003. Only the highest counts.

Thresholds that raise the price:

95
rows pulled out
98
data changed

About sql injection

managed backend rules 312 to 98
  • Database open to anonymous visitorsverified70 to 98sec-backend-001ASVS 5.0 8.2.2 (L1)
    • Same flaw as sec-backend-003. Only the highest counts.
  • Database schema exposedverified12sec-backend-003ASVS 5.0 16.5.1 (L2)
    • Same flaw as sec-backend-001. Only the highest counts.
  • Storage bucket listable by anyoneverified70 to 98sec-backend-004ASVS 5.0 8.2.2 (L1)

Thresholds that raise the price:

80
personal, financial or credential data
90
records readable in bulk
98
anyone can write to it

About managed backend rules

secrets in the code 370 to 98
  • Keys or tokens in shipped codeany URL70 to 98sec-secrets-001closest ASVS 5.0 13.3.1 (L2)
    • Same flaw as sec-secrets-002 and sec-secrets-003. Only the highest counts.
  • Server secrets in the bundleany URL70 to 98sec-secrets-002closest ASVS 5.0 13.3.1 (L2)
    • Same flaw as sec-secrets-001 and sec-secrets-003. Only the highest counts.
  • Live Gemini key in the bundleverified70 to 98sec-secrets-003closest ASVS 5.0 13.3.1 (L2)
    • Same flaw as sec-secrets-001 and sec-secrets-002. Only the highest counts.

Thresholds that raise the price:

92
the key works
98
server key, database login or private key

About secrets in the code

cross-site scripting 240 to 85
  • Reflected cross-site scriptingverified40 to 85sec-xss-001ASVS 5.0 1.2.1 (L1)
  • Stored cross-site scriptingverified40 to 85sec-xss-002ASVS 5.0 1.2.1 (L1)

Thresholds that raise the price:

61
the script runs
85
stored for all visitors

About cross-site scripting

exposed data 270 to 98
  • Credentials in responsesany URL70 to 98sec-exposure-005
    92
    the credential works
    98
    server key, database login or private key
  • Bulk records without loginverified70 to 98sec-exposure-008ASVS 5.0 8.2.2 (L1)
    80
    personal, financial or credential data
    90
    records readable in bulk
    98
    anyone can write data

About exposed data

file uploads 240 to 98
  • Uploads that run on the serververified90 to 98sec-upload-001ASVS 5.0 5.3.1 (L1)
    98
    the upload runs
  • Uploads served as live pagesverified40 to 85sec-upload-002ASVS 5.0 5.3.1 (L1)
    61
    the upload runs
    85
    stored for every visitor

About file uploads

command injection 190 to 98
  • Command injectionverified90 to 98sec-cmdi-001ASVS 5.0 1.2.5 (L1)
    98
    the command runs

About command injection

cross-origin sharing rules 145
  • Credentialed CORS for any originany URL45sec-cors-001ASVS 5.0 3.4.2 (L1)

About cross-origin sharing rules

cross-site request forgery 145
  • No CSRF protectionverified45sec-csrf-001ASVS 5.0 3.5.1 (L1)

About cross-site request forgery

debug mode left on 140 to 98
  • Debug mode in productionverified40 to 98sec-debug-001ASVS 5.0 13.4.2 (L2)
    98
    the debugger runs code

About debug mode left on

filter injection 175
  • Filter injectionverified75sec-filterinj-001ASVS 5.0 1.2.4 (L1)

About filter injection

host header handling 140
  • Host header injectionverified40sec-hosthdr-001

About host header handling

known-vulnerable dependencies 1measured
  • Libraries with known vulnerabilitiesany URLmeasuredsec-deps-001ASVS 5.0 15.2.1 (L1)
    • The worst CVE's CVSS score * 10.
    • ASVS sets the update deadline in the app's own docs. Sloptic checks for a known CVE.

About known-vulnerable dependencies

login rate limiting 130
  • No login rate limitverified30sec-ratelimit-001ASVS 5.0 6.3.1 (L1)
    • ASVS leaves the limit to the app's own docs. Sloptic checks for any throttling.

About login rate limiting

mixed content 110
  • Mixed contentany URL10sec-mixed-001closest ASVS 5.0 12.2.1 (L1)

About mixed content

open redirects 125 to 55
  • Open redirectverified25 to 55sec-redirect-001ASVS 5.0 3.7.2 (L2)
    40
    to an outside site
    55
    inside the login flow

About open redirects

oversized request handling 115
  • Unbounded decompression (zip bomb)verified15sec-dos-001ASVS 5.0 5.2.3 (L2)

About oversized request handling

path traversal 150 to 85
  • Path traversalverified50 to 85sec-lfi-001ASVS 5.0 5.3.2 (L1)
    75
    a system file read
    85
    source or secrets read

About path traversal

response splitting 145
  • Response splittingverified45sec-split-001

About response splitting

scripting in the browser 140 to 85
  • DOM-based cross-site scriptingverified40 to 85sec-domxss-001ASVS 5.0 3.2.2 (L1)
    61
    the script runs
    85
    stored for every visitor

About scripting in the browser

server-side request forgery 140 to 91
  • Server-side request forgeryverified40 to 91sec-ssrf-001ASVS 5.0 1.3.6 (L2)
    70
    the server makes the request
    91
    cloud metadata or secrets reached

About server-side request forgery

session lifetime 145
  • Guessable session IDsverified45sec-session-004ASVS 5.0 7.2.3 (L1)

About session lifetime

subresource integrity 110
  • CDN files without integrity hashesany URL10sec-sri-001ASVS 5.0 3.6.1 (L3)

About subresource integrity

template injection 190 to 98
  • Template injectionverified90 to 98sec-ssti-001ASVS 5.0 1.3.7 (L2)
    98
    the payload runs

About template injection

transport security 130
  • No HTTPSany URL30sec-tls-001ASVS 5.0 12.2.1 (L1)

About transport security

xml external entities 170 to 91
  • XML external entitiesverified70 to 91sec-xxe-001ASVS 5.0 1.5.1 (L1)
    82
    the server makes an outside request
    91
    a system file read

About xml external entities

quality

17 kinds of slop across 27 checks. Open to learn more:

honest navigation 525 to 45
  • Broken back buttonany URL25qa-backnav-001
  • Missing script bundleany URL45qa-chunk-001
  • Silent failed savesverified35qa-noerror-001
  • Stale view after a createverified38qa-staleui-001

About honest navigation

availability 30 to 85
  • Backend address set to localhostany URL0 to 85qa-deploy-001
    85
    visitors' browsers call it
    • Free until proven.
  • Endless redirect loopany URL50 to 80qa-deploy-002
    80
    the homepage itself loops
  • Sign-in redirect to localhostany URL55qa-deploy-003

About availability

data integrity 269
  • Saved values changed on the way backverified69qa-integrity-001
    • Same flaw as qa-integrity-002. Only the highest counts.
  • Created items never savedverified69qa-integrity-002
    • Same flaw as qa-integrity-001. Only the highest counts.

About data integrity

email verification 25 to 72
  • Late or missing signup emailverified5 to 72qa-email-001
    24
    over 30 seconds late
    36
    user let in but email never arrives
    72
    no email within a minute
  • Dead confirmation linkverified72qa-email-002

About email verification

input validation 230 to 72
  • Browser-only validationverified30qa-input-001
  • Broken international textverified32 to 72qa-input-002
    72
    the server crashes

About input validation

race conditions 250
  • Duplicate IDs from simultaneous createsverified50qa-race-001
    • Same flaw as qa-race-002. Only the highest counts.
  • Duplicate IDs from simultaneous API createsverified50qa-race-002
    • Same flaw as qa-race-001. Only the highest counts.

About race conditions

console errors 118 to 40
  • Errors thrown on loadany URL18 to 40qa-console-001
    40
    an error screen shows

About console errors

content types 118
  • Wrong Content-Typeany URL18qa-ctype-001

About content types

crash resistance 155
  • Crash on malformed inputverified55qa-crash-010

About crash resistance

dead controls 130 to 50
  • Buttons that do nothingverified30 to 50qa-deadctrl-001
    50
    the page's main action

About dead controls

development build left online 128
  • Development build in productionany URL28qa-devbuild-001

About development build left online

error handling 125 to 35
  • Leaked stack traces or database errorsverified25 to 35qa-errhyg-001
    35
    database details leaked

About error handling

http conformance 110
  • Missing charsetany URL10qa-http-002

About http conformance

leftover template text 112
  • Placeholder text on linked pagesany URL12qa-scaffold-001

About leftover template text

pages that fail quietly 1off-score
  • Soft 404sany URLoff-scoreqa-http-001
    • Shown on the report. Adds nothing to the score.

About pages that fail quietly

password reset 124 to 60
  • Broken password resetverified24 to 60qa-reset-001
    60
    no reset email within a minute

About password reset

accessibility

2 kinds of slop across 3 checks. Open to learn more:

accessibility 2measured
  • Accessibility barriers on the rendered pageany URLmeasuredqa-a11y-001
    • Each barrier costs its impact: critical 20, serious 12, moderate 7, minor 3. Low contrast costs its shortfall. Each extra barrier counts 60% of the one before.
    • Same flaw as qa-a11y-002. Only the highest counts.
  • Accessibility basics missing from the markupany URLmeasuredqa-a11y-002
    • The same prices read from the markup.
    • Same flaw as qa-a11y-001. Only the highest counts.

About accessibility

mobile viewport and description 110
  • No viewport or description meta tagany URL10qa-seo-001

About mobile viewport and description

performance

12 kinds of slop across 13 checks. Open to learn more:

core web vitals 2off-score
  • Slow first contentful paintany URLoff-scoreperf-cwv-001
    • Shown on the report. Adds nothing to the score.
  • Failing Core Web Vitalsany URLoff-scoreperf-cwv-002
    • Shown on the report. Adds nothing to the score.

About core web vitals

behavior under load 150 to 60
  • Server errors under a burst of trafficverified50 to 60perf-load-001
    60
    server errors under load

About behavior under load

caching 1off-score
  • Static files not cacheableany URLoff-scoreperf-cache-001
    • Shown on the report. Adds nothing to the score.

About caching

DOM size 1off-score
  • Oversized DOMany URLoff-scoreperf-dom-001
    • Shown on the report. Adds nothing to the score.

About DOM size

font loading 1off-score
  • Invisible text during font loadany URLoff-scoreperf-font-001
    • Shown on the report. Adds nothing to the score.

About font loading

largest contentful paint 1off-score
  • Largest image found lateany URLoff-scoreperf-lcp-001
    • Shown on the report. Adds nothing to the score.

About largest contentful paint

load time 1off-score
  • Slow Speed Indexany URLoff-scoreperf-loadtime-001
    • Shown on the report. Adds nothing to the score.

About load time

minification 1off-score
  • Unminified JavaScript or CSSany URLoff-scoreperf-minify-001
    • Shown on the report. Adds nothing to the score.

About minification

overall Lighthouse score 1measured
  • Lighthouse score below 90any URLmeasuredperf-lighthouse-001
    • 1 point per Lighthouse point below 90. For example, a score of 84 on Lighthouse nets 6 slop points.

About overall Lighthouse score

page weight 1off-score
  • Heavy pageany URLoff-scoreperf-weight-001
    • Shown on the report. Adds nothing to the score.

About page weight

request count 1off-score
  • Too many requestsany URLoff-scoreperf-requests-001
    • Shown on the report. Adds nothing to the score.

About request count

server response speed 1off-score
  • Slow server responseany URLoff-scoreperf-ttfb-001
    • Shown on the report. Adds nothing to the score.

About server response speed