Skip to content

Commit 7c1fb12

Browse files
committed
Plain scan metadata include all headers and cookies
1 parent 10f642a commit 7c1fb12

File tree

3 files changed

+20
-30
lines changed

3 files changed

+20
-30
lines changed

plain-scan/plain/scan/cli.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,9 +63,9 @@ def format_verbose_metadata(metadata: dict) -> str:
6363

6464
lines.append("")
6565

66-
# Security headers
66+
# Headers
6767
if metadata.get("headers"):
68-
lines.append(click.style("Security Headers:", bold=True))
68+
lines.append(click.style("Headers:", bold=True))
6969
lines.append("")
7070
for header, value in metadata["headers"].items():
7171
# Truncate long headers for readability

plain-scan/plain/scan/results.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ def to_markdown(self) -> str:
143143

144144
headers = self.metadata.get("headers")
145145
if headers:
146-
lines.append("\n**Security Headers:**\n")
146+
lines.append("\n**Headers:**\n")
147147
for header, value in headers.items():
148148
lines.append(f"- **{header}:** `{value}`\n")
149149

plain-scan/plain/scan/scanner.py

Lines changed: 17 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -99,25 +99,8 @@ def scan(self) -> ScanResult:
9999
{"url": r.url, "status_code": r.status_code}
100100
for r in response.history
101101
],
102-
"headers": {
103-
"content-security-policy": response.headers.get(
104-
"Content-Security-Policy"
105-
),
106-
"content-security-policy-report-only": response.headers.get(
107-
"Content-Security-Policy-Report-Only"
108-
),
109-
"strict-transport-security": response.headers.get(
110-
"Strict-Transport-Security"
111-
),
112-
"frame-options": response.headers.get("X-Frame-Options"),
113-
"content-type-options": response.headers.get(
114-
"X-Content-Type-Options"
115-
),
116-
"referrer-policy": response.headers.get("Referrer-Policy"),
117-
},
102+
"headers": dict(response.headers),
118103
}
119-
# Remove None values from headers
120-
metadata["headers"] = {k: v for k, v in metadata["headers"].items() if v}
121104

122105
# Add cookies information if present
123106
if response.cookies:
@@ -131,15 +114,22 @@ def scan(self) -> ScanResult:
131114
samesite = cookie._rest[key]
132115
break
133116

134-
cookies.append(
135-
{
136-
"name": cookie.name,
137-
"secure": cookie.secure,
138-
"httponly": hasattr(cookie, "_rest")
139-
and "HttpOnly" in cookie._rest,
140-
"samesite": samesite,
141-
}
142-
)
117+
cookie_data = {
118+
"name": cookie.name,
119+
"value": cookie.value,
120+
"domain": cookie.domain,
121+
"path": cookie.path,
122+
"secure": cookie.secure,
123+
"httponly": hasattr(cookie, "_rest")
124+
and "HttpOnly" in cookie._rest,
125+
"samesite": samesite,
126+
}
127+
128+
# Add expires if present (may be None)
129+
if cookie.expires:
130+
cookie_data["expires"] = cookie.expires
131+
132+
cookies.append(cookie_data)
143133
metadata["cookies"] = cookies
144134

145135
# Run each audit

0 commit comments

Comments
 (0)