1
0
mirror of https://git.sr.ht/~cadence/bibliogram synced 2024-11-22 16:17:29 +00:00

Add some security headers

This commit is contained in:
Cadence Ember 2020-05-30 23:07:32 +12:00
parent ea81b945ce
commit d3c6598e50
No known key found for this signature in database
GPG Key ID: 128B99B1B74A6412
5 changed files with 24 additions and 8 deletions

3
.gitignore vendored
View File

@ -4,10 +4,13 @@ node_modules
# Personalisation stuff # Personalisation stuff
/src/site/pug/privacy.pug /src/site/pug/privacy.pug
/src/site/pug/announcements
# Database stuff # Database stuff
db/**/*.db* db/**/*.db*
users_export.json users_export.json
*.log
*.csv
# Test stuff # Test stuff
/coverage /coverage

View File

@ -0,0 +1,6 @@
const params = new URLSearchParams(window.location.search)
if (params.has("status")) {
params.delete("status")
params.delete("message")
history.replaceState(null, "", "?" + params.toString())
}

View File

@ -51,14 +51,14 @@ html
ul ul
- -
const links = [ const links = [
["https://github.com/cloudrac3r/bibliogram", "GitHub repository"], ["https://github.com/cloudrac3r/bibliogram", "GitHub repository", "noopener"],
["https://matrix.to/#/#bibliogram:matrix.org", "Discussion room on Matrix"], ["https://matrix.to/#/#bibliogram:matrix.org", "Discussion room on Matrix"],
["https://github.com/cloudrac3r/bibliogram/wiki/Instances", "Other Bibliogram instances"], ["https://github.com/cloudrac3r/bibliogram/wiki/Instances", "Other Bibliogram instances", "noopener"],
["https://github.com/cloudrac3r/bibliogram/projects/1?fullscreen=true", "Project roadmap"], ["https://github.com/cloudrac3r/bibliogram/projects/1?fullscreen=true", "Project roadmap"],
["https://cadence.moe/about/contact", "Contact the developer"] ["https://cadence.moe/about/contact", "Contact the developer"]
] ]
each entry in links each entry in links
li: a(href!=entry[0] target="_blank" rel="noopener noreferrer")= entry[1] li: a(href!=entry[0] target="_blank" rel=(entry[2] || "noopener noreferrer"))= entry[1]
if constants.featured_profiles.length if constants.featured_profiles.length
.featured-profiles#featured-profiles .featured-profiles#featured-profiles

View File

@ -33,11 +33,7 @@ html
body.settings-page body.settings-page
if status && message if status && message
.status-notice(class=status)= message .status-notice(class=status)= message
script. script(src=getStaticURL("html", "/static/js/settings_message.js") type="module")
const params = new URLSearchParams(window.location.search)
params.delete("status")
params.delete("message")
history.replaceState(null, "", "?" + params.toString())
main.settings main.settings
form(action=returnAction method="post" enctype="application/x-www-form-urlencoded") form(action=returnAction method="post" enctype="application/x-www-form-urlencoded")
input(type="hidden" name="csrf" value=csrf) input(type="hidden" name="csrf" value=csrf)

View File

@ -4,6 +4,11 @@ const constants = require("../lib/constants")
const passthrough = require("./passthrough") const passthrough = require("./passthrough")
const deniedFeatures = [
"accelerometer", "ambient-light-sensor", "battery", "camera", "display-capture", "document-domain", "geolocation", "gyroscope",
"magnetometer", "microphone", "midi", "payment", "publickey-credentials-get", "sync-xhr", "usb", "xr-spatial-tracking"
]
const pinski = new Pinski({ const pinski = new Pinski({
port: +process.env.PORT || constants.port, port: +process.env.PORT || constants.port,
ip: constants.bind_ip, ip: constants.bind_ip,
@ -12,6 +17,12 @@ const pinski = new Pinski({
exts: ["ttf", "woff2", "png", "jpg", "jpeg", "svg", "gif", "webmanifest", "ico"], exts: ["ttf", "woff2", "png", "jpg", "jpeg", "svg", "gif", "webmanifest", "ico"],
seconds: 604800 seconds: 604800
}, },
globalHeaders: {
"Content-Security-Policy": "default-src 'self'; frame-ancestors 'none'; block-all-mixed-content",
"Feature-Policy": deniedFeatures.map(feature => `${feature} 'none'`).join("; "),
"Referrer-Policy": "origin",
"X-Content-Type-Options": "nosniff"
}
}) })
subdirs("pug", async (err, dirs) => { subdirs("pug", async (err, dirs) => {