{
  "_id": "6acd6d9aa14063b82c3ab682",
  "Package": "ssrfr",
  "Type": "Package",
  "Title": "Server-Side Request Forgery Guard for Outbound Requests",
  "Version": "0.0.0.9000",
  "Authors@R": "person(\"Bart\", \"Turczynski\", email = \"bartek@turczynski.pl\", role = c(\"aut\", \"cre\", \"cph\"),\ncomment = c(ORCID = \"0000-0002-8788-7980\"))",
  "Description": "Protects R applications that fetch URLs an attacker can\ninfluence from server-side request forgery. Each redirect hop\nis parsed once, resolved once, and every resolved address is\nclassified before the connection is pinned to a validated\naddress, so a hostname cannot be rebound between check and\nconnect. Refusals carry stable reason codes. Provides the\nguarded fetch of each hop of a redirect chain, a helper that\nfollows a whole chain, structural inspection of a URL without\nnetwork access, and resolved inspection of every address a name\nresolves to.",
  "License": "MIT + file LICENSE",
  "URL": "https://bart-turczynski.gitlab.io/ssrfr/,\nhttps://gitlab.com/bart-turczynski/ssrfr,\nhttps://bart-turczynski.r-universe.dev/ssrfr",
  "BugReports": "https://gitlab.com/bart-turczynski/ssrfr/-/issues",
  "Encoding": "UTF-8",
  "Language": "en-US",
  "Roxygen": "list(markdown = TRUE)",
  "SystemRequirements": "libcurl (>= 7.73.0)",
  "Config/testthat/edition": "3",
  "VignetteBuilder": "knitr",
  "Config/roxygen2/version": "8.0.0",
  "Config/pak/sysreqs": "libicu-dev libssl-dev",
  "Repository": "https://bart-turczynski.r-universe.dev",
  "Date/Publication": "2026-10-12 19:31:48 UTC",
  "RemoteUrl": "https://gitlab.com/bart-turczynski/ssrfr",
  "RemoteRef": "HEAD",
  "RemoteSha": "9933fe693b815312383c9c60accb3584fd02172b",
  "NeedsCompilation": "no",
  "Packaged": {
    "Date": "2026-10-12 23:14:26 UTC",
    "User": "root"
  },
  "Author": "Bart Turczynski [aut, cre, cph] (ORCID:\n<https://orcid.org/0000-0002-8788-7980>)",
  "Maintainer": "Bart Turczynski <bartek@turczynski.pl>",
  "_user": "bart-turczynski",
  "_type": "src",
  "_file": "ssrfr_0.0.0.9000.tar.gz",
  "_fileid": "https://r2.ropensci.org/83a9663a1d9ffa5c61914eaf519ddfca2773f479021ed9ff227980f18f9423ea",
  "_filesize": 385303,
  "_sha256": "83a9663a1d9ffa5c61914eaf519ddfca2773f479021ed9ff227980f18f9423ea",
  "_expires": "2027-01-20T23:30:33.000Z",
  "_created": "2026-10-12T23:14:26.000Z",
  "_published": "2026-10-12T23:30:34.623Z",
  "_buildurl": "https://github.com/r-universe/bart-turczynski/actions/runs/38320775959",
  "_status": "success",
  "_host": "GitHub-Actions",
  "_jobs": [
    {
      "job": 115049122645,
      "time": 285,
      "config": "linux-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "11778199919"
    },
    {
      "job": 115049122623,
      "time": 310,
      "config": "linux-release-x86_64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "11778264757"
    },
    {
      "job": 115049122629,
      "time": 261,
      "config": "macos-oldrel-arm64",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "11779173374"
    },
    {
      "job": 115049122666,
      "time": 299,
      "config": "macos-release-arm64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "11779581064"
    },
    {
      "job": 115048176799,
      "time": 194,
      "config": "source",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "11778148998"
    },
    {
      "job": 115049122586,
      "time": 96,
      "config": "wasm-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "11778547492"
    },
    {
      "job": 115049122686,
      "time": 362,
      "config": "windows-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "11779092620"
    },
    {
      "job": 115049122596,
      "time": 358,
      "config": "windows-oldrel-x86_64",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "11778244895"
    },
    {
      "job": 115049122618,
      "time": 357,
      "config": "windows-release-x86_64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "11778269916"
    }
  ],
  "_upstream": "https://gitlab.com/bart-turczynski/ssrfr",
  "_commit": {
    "id": "9933fe693b815312383c9c60accb3584fd02172b",
    "author": "Bart Turczynski <bartek@turczynski.pl>",
    "committer": "Bart Turczynski <bartek@turczynski.pl>",
    "message": "Merge branch 'chore/oss-scanner-enrollment' into 'main'\n\nchore(security): add OSS Scanner build and threat model\n\nSee merge request bart-turczynski/ssrfr!91",
    "time": 1791833508
  },
  "_maintainer": {
    "name": "Bart Turczynski",
    "email": "bartek@turczynski.pl",
    "login": "bart-turczynski",
    "linkedin": "in/bart-turczynski",
    "twitter": "@bart_turczynski",
    "description": "",
    "uuid": 142225707,
    "orcid": "0000-0002-8788-7980"
  },
  "_distro": "resolute",
  "_registered": true,
  "_dependencies": [
    {
      "package": "R",
      "version": ">= 4.1.0",
      "role": "Depends"
    },
    {
      "package": "curl",
      "version": ">= 7.0.0",
      "role": "Imports"
    },
    {
      "package": "raddr",
      "version": ">= 0.1.2",
      "role": "Imports"
    },
    {
      "package": "rurl",
      "version": ">= 3.1.0",
      "role": "Imports"
    },
    {
      "package": "callr",
      "role": "Suggests"
    },
    {
      "package": "httpuv",
      "role": "Suggests"
    },
    {
      "package": "knitr",
      "role": "Suggests"
    },
    {
      "package": "oysteR",
      "role": "Suggests"
    },
    {
      "package": "pkgload",
      "role": "Suggests"
    },
    {
      "package": "processx",
      "role": "Suggests"
    },
    {
      "package": "rmarkdown",
      "role": "Suggests"
    },
    {
      "package": "rosv",
      "role": "Suggests"
    },
    {
      "package": "testthat",
      "version": ">= 3.0.0",
      "role": "Suggests"
    },
    {
      "package": "webfakes",
      "version": ">= 1.4.0",
      "role": "Suggests"
    },
    {
      "package": "withr",
      "role": "Suggests"
    }
  ],
  "_owner": "gitlab-bart-turczynski",
  "_selfowned": true,
  "_usedby": 0,
  "_updates": [
    {
      "week": "2026-30",
      "n": 6
    },
    {
      "week": "2026-39",
      "n": 36
    },
    {
      "week": "2026-40",
      "n": 42
    },
    {
      "week": "2026-41",
      "n": 12
    },
    {
      "week": "2026-42",
      "n": 1
    }
  ],
  "_tags": [],
  "_topics": [
    "ssrf",
    "server-side-request-forgery",
    "url-validation",
    "ip-address",
    "dns-rebinding",
    "cloud-metadata",
    "redirects",
    "libcurl",
    "security"
  ],
  "_userbio": {
    "uuid": 142225707,
    "type": "user",
    "name": "Bart Turczynski",
    "followers": 4
  },
  "_downloads": {
    "count": 0,
    "source": "https://cranlogs.r-pkg.org/downloads/total/last-month/ssrfr"
  },
  "_devurl": "https://gitlab.com/bart-turczynski/ssrfr",
  "_pkgdown": "https://bart-turczynski.gitlab.io/ssrfr/",
  "_searchresults": 6,
  "_rbuild": "4.6.1",
  "_assets": [
    "extra/citation.cff",
    "extra/citation.html",
    "extra/citation.json",
    "extra/citation.txt",
    "extra/contents.json",
    "extra/manual.pdf",
    "extra/NEWS.html",
    "extra/NEWS.txt",
    "extra/readme.html",
    "extra/readme.md",
    "extra/ssrfr.html",
    "LICENSE"
  ],
  "_cranurl": false,
  "_exports": [
    "ssrf_fetch",
    "ssrf_fetch_chain",
    "ssrf_inspect_url",
    "ssrf_policy",
    "ssrf_prepare_hop",
    "ssrf_public_reason",
    "ssrf_vocabulary"
  ],
  "_help": [
    {
      "page": "ssrf_fetch",
      "title": "Fetch through a guarded binding",
      "topics": [
        "ssrf_fetch"
      ]
    },
    {
      "page": "ssrf_fetch_chain",
      "title": "Follow a redirect chain through the guard",
      "topics": [
        "ssrf_fetch_chain"
      ]
    },
    {
      "page": "ssrf_inspect_url",
      "title": "Inspect a URL without fetching it",
      "topics": [
        "ssrf_inspect_url"
      ]
    },
    {
      "page": "ssrf_policy",
      "title": "Build a guard policy",
      "topics": [
        "ssrf_policy"
      ]
    },
    {
      "page": "ssrf_prepare_hop",
      "title": "Prepare one guarded hop",
      "topics": [
        "ssrf_prepare_hop"
      ]
    },
    {
      "page": "ssrf_public_reason",
      "title": "Project a refusal or failure for an untrusted party",
      "topics": [
        "ssrf_public_reason"
      ]
    },
    {
      "page": "ssrf_vocabulary",
      "title": "List a closed vocabulary",
      "topics": [
        "ssrf_vocabulary"
      ]
    }
  ],
  "_pkglogo": "https://gitlab.com/bart-turczynski/ssrfr/raw/HEAD/man/figures/logo.svg",
  "_readme": "https://gitlab.com/bart-turczynski/ssrfr/raw/HEAD/README.md",
  "_rundeps": [
    "cli",
    "cpp11",
    "curl",
    "digest",
    "glue",
    "lifecycle",
    "pslr",
    "punycoder",
    "raddr",
    "Rcpp",
    "rlang",
    "rurl",
    "stringi",
    "vctrs"
  ],
  "_vignettes": [
    {
      "source": "introduction.Rmd",
      "filename": "introduction.html",
      "title": "Introduction to ssrfr",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Inspecting a URL",
        "Inspecting what a name resolves to",
        "Fetching through the guard",
        "Following redirects",
        "What the guard cannot protect",
        "Testing against a local server"
      ],
      "created": "2026-07-25 10:51:21",
      "modified": "2026-09-30 20:33:14",
      "commits": 9
    }
  ],
  "_score": 3.3979400086720375,
  "_indexed": true,
  "_nocasepkg": "ssrfr",
  "_universes": [
    "bart-turczynski",
    "gitlab-bart-turczynski"
  ],
  "_binaries": [
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "0.0.0.9000",
      "date": "2026-10-12T23:17:48.000Z",
      "distro": "resolute",
      "commit": "9933fe693b815312383c9c60accb3584fd02172b",
      "fileid": "https://r2.ropensci.org/be0fde4bfa59d084b277c24b58ac726962396a2771f0e1b52b9bb995a5b9b453",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/bart-turczynski/actions/runs/38320775959"
    },
    {
      "r": "4.6.1",
      "os": "linux",
      "version": "0.0.0.9000",
      "date": "2026-10-12T23:18:04.000Z",
      "distro": "resolute",
      "commit": "9933fe693b815312383c9c60accb3584fd02172b",
      "fileid": "https://r2.ropensci.org/0b711e0b64354c989f60347fd95c88d2c2fea6d1425841ce350de5392bfb9075",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/bart-turczynski/actions/runs/38320775959"
    },
    {
      "r": "4.5.3",
      "os": "mac",
      "version": "0.0.0.9000",
      "date": "2026-10-12T23:26:16.000Z",
      "commit": "9933fe693b815312383c9c60accb3584fd02172b",
      "fileid": "https://r2.ropensci.org/83d1aec05452e177f424e2aec12b37a65cd84153442099b547128cc424c30e01",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/bart-turczynski/actions/runs/38320775959"
    },
    {
      "r": "4.6.1",
      "os": "mac",
      "version": "0.0.0.9000",
      "date": "2026-10-12T23:26:47.000Z",
      "commit": "9933fe693b815312383c9c60accb3584fd02172b",
      "fileid": "https://r2.ropensci.org/8115e60ee2928b26256f6f98fad444e44452d6104ddbd40358de849ebf989d5f",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/bart-turczynski/actions/runs/38320775959"
    },
    {
      "r": "4.6.0",
      "os": "wasm",
      "version": "0.0.0.9000",
      "date": "2026-10-12T23:17:23.000Z",
      "commit": "9933fe693b815312383c9c60accb3584fd02172b",
      "fileid": "https://r2.ropensci.org/63212fcfa50cb8f3e814bfddeab5a1e8341df397f29fb38a6765c134757f1b5f",
      "status": "success",
      "buildurl": "https://github.com/r-universe/bart-turczynski/actions/runs/38320775959"
    },
    {
      "r": "4.7.0",
      "os": "win",
      "version": "0.0.0.9000",
      "date": "2026-10-12T23:16:44.000Z",
      "commit": "9933fe693b815312383c9c60accb3584fd02172b",
      "fileid": "https://r2.ropensci.org/4271290e17d57ddec6ea2be09f870630977f47145df9fc01f98a20cb0b92cbc6",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/bart-turczynski/actions/runs/38320775959"
    },
    {
      "r": "4.5.3",
      "os": "win",
      "version": "0.0.0.9000",
      "date": "2026-10-12T23:16:38.000Z",
      "commit": "9933fe693b815312383c9c60accb3584fd02172b",
      "fileid": "https://r2.ropensci.org/2d8ae848c06ac422e0789ce173db4dcba5b7b6c4d327524dfe765efbe91d66dd",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/bart-turczynski/actions/runs/38320775959"
    },
    {
      "r": "4.6.1",
      "os": "win",
      "version": "0.0.0.9000",
      "date": "2026-10-12T23:16:40.000Z",
      "commit": "9933fe693b815312383c9c60accb3584fd02172b",
      "fileid": "https://r2.ropensci.org/45a6284d572b128fcd4577aa2bf434d35ab78b9e1077357e474eb51132c803ae",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/bart-turczynski/actions/runs/38320775959"
    }
  ]
}