Sikkerhetssjekker du kan kjøre på nettstedet uten å hacke noe
Passive sikkerhetssjekker for nettbutikker: utløp av TLS-sertifikat, HSTS, CSP, nosniff, cookie-flagg, blandet innhold, gammel jQuery, security.txt og DMARC.
FixReports-redaksjonen10 min lesing
Du kan sjekke mye av sikkerhetsoppsettet til en nettbutikk utenfra ved å lese det nettstedet allerede sender til alle besøkende: TLS-sertifikatet, omdirigeringer, HTTP-svarheadere, informasjonskapsler (cookies), skriptene som lastes inn, og de offentlige DNS-postene. Disse passive kontrollene sender ingen angrepstrafikk og krever ingen innlogging, så de belaster butikken ikke mer enn et vanlig besøk. De fanger opp hull i konfigurasjonen, som et sertifikat som snart utløper, manglende HSTS, usikre informasjonskapsler, blandet innhold eller en jQuery-versjon med kjente sårbarheter. De er ikke en penetrasjonstest og kan ikke bevise at en butikk er sikker.
Hovedpunkter
- Offentlig klarerte TLS-sertifikater som er utstedt fra og med 15. mars 2026, kan maksimalt være gyldige i 200 dager. Grensen synker til 100 dager i mars 2027 og til 47 dager i mars 2029 (CA/Browser Forum (åpnes i en ny fane)).
- Nettlesere ignorerer HSTS-headeren når den sendes over vanlig HTTP (MDN (åpnes i en ny fane)).
- CSP-direktivet
frame-ancestorsfungerer ikke i en<meta>-tagg; det må sendes som en svarheader (MDN (åpnes i en ny fane)). - jQuery-versjoner før 3.5.0 er berørt av to XSS-sårbarheter, og CISA la 23. januar 2025 en av dem, CVE-2020-11023, til i katalogen Known Exploited Vulnerabilities (NVD (åpnes i en ny fane)).
- En
security.txt-fil må inneholde felteneContactogExpiresog ligge på/.well-known/security.txt(RFC 9116 (åpnes i en ny fane)).
Hva regnes som en passiv sikkerhetssjekk?
En passiv sjekk leser bare det nettstedet eller DNS-en returnerer på en vanlig forespørsel.
Det betyr å laste inn offentlige sider, lese sertifikatet og svarheaderne, liste opp informasjonskapslene og skriptene en side setter og laster inn, og slå opp offentlige DNS-poster. En passiv sjekk gjetter ikke passord, sender ikke injeksjonsdata (payloads), sonderer ikke administrasjons-URL-er og skanner ikke porter. Alt nedenfor kan gjøres med en nettleser, curl, openssl og dig.
Hvordan sjekker du TLS-sertifikatet og når det utløper?
Les datoene og navnene i sertifikatet direkte, og sørg for at fornyelsen er automatisert.
echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null \
| openssl x509 -noout -subject -issuer -dates
Sjekk at notAfter ligger god tid frem i tid, at sertifikatet dekker både example.com og www.example.com hvis du bruker begge (sertifikatvisningen i nettleseren viser navnene), og at nettleseren ikke viser noen advarsler. Levetiden for sertifikater blir kortere etter CA/Browser Forums Baseline Requirements (avsnitt 6.3.2, versjon 2.3.1 per oktober 2026), som følge av Ballot SC-081v3 (åpnes i en ny fane), vedtatt 11. april 2025:
| Sertifikatet er utstedt | Maksimal gyldighet |
|---|---|
| Før 15. mars 2026 | 398 dager |
| 15. mars 2026 til 14. mars 2027 | 200 dager |
| 15. mars 2027 til 14. mars 2029 | 100 dager |
| Fra og med 15. mars 2029 | 47 dager |
Kort levetid gjør manuell fornyelse risikabelt, så bekreft at webhotellet eller sertifikatverktøyet ditt fornyer automatisk. Bekreft også at vanlig HTTP omdirigeres til HTTPS:
curl -sI http://example.com/ | grep -i -E "^HTTP|^location"
Du vil ha et 301-svar (eller 308) med en location-header som starter med https://.
Hvilke sikkerhetsheadere bør en nettbutikk sende?
Et lite sett med svarheadere blokkerer vanlige angrep i nettleseren nesten uten kostnad.
| Header | Hva den gjør | Typisk verdi | Kilde |
|---|---|---|---|
Strict-Transport-Security | Ber nettlesere om bare å bruke HTTPS og hindrer brukere i å klikke seg forbi sertifikatfeil | max-age=31536000; includeSubDomains | MDN (åpnes i en ny fane) |
Content-Security-Policy: frame-ancestors | Styrer hvilke nettsteder som kan bygge inn sidene dine, noe som beskytter mot clickjacking | frame-ancestors 'self' | MDN (åpnes i en ny fane) |
X-Frame-Options | Eldre kontroll av innramming; OWASP sier at frame-ancestors gjør den overflødig i nettlesere som støtter det | DENY eller SAMEORIGIN | OWASP (åpnes i en ny fane) |
X-Content-Type-Options | Stopper MIME-sniffing og blokkerer skript og stilark som serveres med feil type | nosniff | MDN (åpnes i en ny fane) |
Referrer-Policy | Begrenser hvor mye av URL-ene dine som sendes til andre nettsteder | strict-origin-when-cross-origin | OWASP |
X-XSS-Protection | Header for nettleserens XSS-filter; OWASP sier at den kan skape XSS-sårbarheter på nettsteder som ellers er trygge | Ikke sett den, eller bruk 0 | OWASP |
Sjekk hva butikken din sender:
curl -sI https://example.com/
Strict-Transport-Security: max-age=31536000; includeSubDomains
Content-Security-Policy: frame-ancestors 'self'
X-Content-Type-Options: nosniff
Referrer-Policy: strict-origin-when-cross-origin
To ting å være obs på. includeSubDomains blokkerer alle underdomener som bare fungerer over HTTP, så sjekk underdomenene først. HSTS-forhåndslasting (preload) krever max-age på minst 31536000 og includeSubDomains, så legg bare til preload når alle underdomener er klare for HTTPS. En fullstendig CSP som begrenser skript, er verdt å ha, men OWASP påpeker at den er krevende å sette opp og vedlikeholde, og butikker med mange apper må teste den nøye.
Er informasjonskapslene dine satt med Secure, HttpOnly og SameSite?
Informasjonskapsler for økter og handlekurv bør ha alle tre attributtene, og du ser dem i Set-Cookie-headerne i svaret.
| Attributt | Effekt (ifølge MDN (åpnes i en ny fane)) | Hvor det er viktig |
|---|---|---|
Secure | Sendes bare over HTTPS; nettsteder på vanlig HTTP kan ikke sette attributtet | Alle informasjonskapsler i en HTTPS-butikk |
HttpOnly | JavaScript kan ikke lese informasjonskapselen via document.cookie, noe som hjelper mot XSS | Innloggingsøkter og handlekurver |
SameSite=Lax eller Strict | Begrenser når informasjonskapselen sendes ved forespørsler på tvers av nettsteder | Økter; Strict passer for informasjonskapsler for autentisering og handlekurv |
SameSite=None | Sendes ved forespørsler på tvers av nettsteder; må kombineres med Secure | Bare innebygde tredjepartsfunksjoner som trenger det |
Hvis ingen SameSite-attributt er satt, behandler nettlesere informasjonskapselen som Lax. Informasjonskapsler som dine egne skript må kunne lese, kan ikke være HttpOnly, så konsentrer deg om dem som identifiserer en innlogget kunde eller en administrator.
curl -sI https://example.com/ | grep -i "^set-cookie"
Utviklerverktøyene i nettleseren viser den samme informasjonen, inkludert informasjonskapsler som settes av skript etter at siden er lastet inn.
Hvordan finner du blandet innhold?
Blandet innhold (mixed content) er alle ressurser som lastes over HTTP på en side som serveres over HTTPS, og nettleserkonsollen viser dem.
MDN (åpnes i en ny fane) deler det inn i to grupper. Bilder, lyd og video kan «oppgraderes» (upgradable): Nettlesere ber automatisk om dem over HTTPS. Skript, stilark, iframes, skrifter og fetch()-forespørsler kan «blokkeres» (blockable): Nettlesere blokkerer dem, og det som var avhengig av dem, slutter å fungere. Oppgraderte forespørsler til en ren IP-adresse blokkeres også.
For å finne det åpner du konsollen på de viktigste malene (forside, kolleksjon, produkt, handlekurv) og søker etter http:// i temakoden, sideinnholdet og app-innstillingene. Shopifys hjelpesenter sier at alle butikksider med en ressurs som ikke leveres over HTTPS, regnes som usikre (åpnes i en ny fane), og anbefaler å lagre ressursene hos Shopify eller servere dem over HTTPS. I WooCommerce bør du sjekke gammelt innhold i innlegg og temaalternativer hvis nettstedet en gang kjørte på http://.
Hvordan oppdager du utdaterte JavaScript-biblioteker med kjente CVE-er?
List opp bibliotekene hver side laster inn, les versjonene og sammenlign dem med National Vulnerability Database (NVD).
Start med jQuery. I nettleserkonsollen returnerer $.fn.jquery versjonen som er lastet inn (jQuery API (åpnes i en ny fane)). Versjoner du bør flagge:
| CVE | Berørte versjoner | Problem | NVD-score (v3.1) |
|---|---|---|---|
| CVE-2020-11022 (åpnes i en ny fane) | 1.12.0 til før 3.5.0 | Hvis upålitelig HTML sendes til metoder som .html() eller .append(), kan kode bli kjørt | 6,1 (Medium) |
| CVE-2020-11023 (åpnes i en ny fane) | 1.0.3 til før 3.5.0 | Det samme, for HTML som inneholder <option>-elementer; i CISAs KEV-katalog siden 23. januar 2025 | 6,1 (Medium) |
| CVE-2019-11358 (åpnes i en ny fane) | Før 3.4.0 | Prototype pollution via jQuery.extend(true, ...) | 6,1 (Medium) |
Begge sårbarhetene fra 2020 er rettet i jQuery 3.5.0. En sårbar versjon betyr at den feilaktige koden er til stede. Om den kan utnyttes, avhenger av hvordan nettstedet sender data til den. WordPress har levert jQuery 3.5.1 siden versjon 5.6 (åpnes i en ny fane), så en gammel jQuery i en WooCommerce-butikk tyder på en utdatert WordPress-installasjon eller på et tema eller en utvidelse som laster sin egen kopi. I Shopify bør du sjekke temafilene og appene som legger inn skript.
Hva er security.txt, og trenger butikken din en?
Det er en ren tekstfil som forteller sikkerhetsforskere hvordan de kan melde fra til deg om en sårbarhet.
RFC 9116 (åpnes i en ny fane) (april 2022, en RFC av typen Informational, så det er frivillig å følge den) sier at filen må serveres over HTTPS på /.well-known/security.txt som text/plain. Contact og Expires er påkrevd, og RFC-en anbefaler en Expires-dato mindre enn ett år frem i tid.
Contact: mailto:security@example.com
Expires: 2027-09-30T23:00:00.000Z
Preferred-Languages: en
Policy: https://example.com/security-policy
I WooCommerce kan du legge filen på serveren din. På en driftet plattform må du sjekke om du kan publisere en fil på den stien. Hvis ikke, hjelper det likevel med en tydelig merket sikkerhetskontakt på kontaktsiden din.
Hvordan beskytter DMARC butikken din mot forfalsket e-post?
Med DMARC kan du be e-postleverandører om å sette i karantene eller avvise e-post som bruker domenet ditt i From-adressen uten å bestå samsvarende SPF eller DKIM.
En post med p=none samler bare inn rapporter; den stopper ikke forfalsket e-post. Kundene forventer ordrebekreftelser og e-post om tilbakestilling av passord fra domenet ditt, så en phishing-melding som viser nøyaktig ditt domene, er verdt å blokkere. Sjekk policyen din med dig +short TXT _dmarc.example.com, og se RFC 9989 (åpnes i en ny fane) for spesifikasjonen. DMARC dekker ikke domener som ligner på ditt, bare domenet som publiserer posten.
Hva administrerer Shopify, og hva styrer du selv i WooCommerce?
Shopify drifter serverne bak butikkfrontene sine, mens en egendriftet WooCommerce-butikk overlater serverinnstillingene til deg og webhotellet ditt.
| Kontroll | Shopify | WooCommerce (egendriftet) |
|---|---|---|
| TLS-sertifikat | Gratis for alle domener som er lagt til i Shopify (åpnes i en ny fane); kan ta opptil 48 timer for tredjepartsdomener | Webhotellet ditt eller ditt eget oppsett |
| Omdirigering fra HTTP til HTTPS | Plattformen | Innstillinger for webserver, CDN eller webhotell |
| Sikkerhetsheadere | Sendes av Shopifys servere | Webserver, CDN eller en utvidelse |
| Cookie-flagg | Shopifys egne informasjonskapsler settes av plattformen; informasjonskapsler fra apper og temaer er ditt ansvar | WordPress-kjernen, utvidelser og serveren |
| Blandet innhold og JS-biblioteker | Temaet, innholdet og appene dine | Temaet, innholdet og utvidelsene dine |
| security.txt og DMARC | Domenet og DNS-en din | Domenet og DNS-en din |
Da vi sjekket flere butikkfronter driftet av Shopify i oktober 2026, inneholdt svarene HSTS med en max-age på rundt 91 dager, X-Content-Type-Options: nosniff og en CSP med upgrade-insecure-requests, mens frame-ancestors varierte fra butikk til butikk. Shopify sier at selskapet er sertifisert som Level 1 PCI DSS-kompatibelt (åpnes i en ny fane). Temaet og appene du har installert, er fortsatt ditt ansvar.
For WooCommerce sier WordPress’ veiledning for herding (åpnes i en ny fane) at du bør holde WordPress og utvidelsene oppdatert, slette utvidelser du ikke bruker, og spørre webhotellet ditt hvilke sikkerhetstiltak de har.
Hvorfor er dette ikke en penetrasjonstest?
En penetrasjonstest prøver aktivt å gjennomføre angrep. Passive sjekker bare observerer.
NIST SP 800-115 definerer penetrasjonstesting som sikkerhetstesting der testerne etterligner reelle angrep for å finne måter å omgå sikkerhetsfunksjonene i et system på (NIST-ordlisten (åpnes i en ny fane)). Passive sjekker kan ikke se feil på serversiden i utvidelser, svake eller gjenbrukte administratorpassord, manglende tofaktorautentisering, svikt i tilgangskontrollen eller sårbar kode som aldri vises i kildekoden til siden. Bruk dem som et utgangspunkt du kan gjenta når som helst. For en grundigere vurdering bør du bestille en penetrasjonstest med skriftlig avgrensning, på systemer du eier eller har tillatelse til å teste.
En gratis skanning gjør en første gjennomgang av butikken din. Vår Sikkerhetsrapport for nettstedet dekker de passive sjekkene i denne artikkelen, fra TLS og omdirigeringer til headere, informasjonskapsler, blandet innhold, utdaterte biblioteker, security.txt og DMARC, med løsninger for hvert funn. Som enhver passiv gjennomgang kan den ikke garantere at en butikk er sikker.
Ofte stilte spørsmål
Setter passive sikkerhetssjekker butikken min i fare?
Ikke mer enn et vanlig besøk. De ber om de samme offentlige sidene og DNS-postene som en hvilken som helst nettleser eller e-postserver ville gjort, og de prøver ikke å logge inn eller sende angrepsdata.
Kan jeg legge til sikkerhetsheadere i Shopify?
Svarheaderne for butikkfronten kommer fra Shopifys servere, så kontakt Shopify Support hvis en header du trenger, mangler. En CSP-tagg av typen <meta> i temaet kan legge til noen direktiver, men MDN påpeker at frame-ancestors ikke støttes i <meta>.
Betyr en gammel jQuery-versjon at butikken min er hacket?
Nei. Det betyr at kode med kjente sårbarheter lastes inn, noe som øker risikoen hvis nettstedet sender upålitelig HTML til de berørte metodene. Oppdater jQuery, eller fjern temaet eller utvidelsen som laster den.
Hvor lenge kan et TLS-sertifikat være gyldig nå?
Offentlig klarerte sertifikater som er utstedt fra og med 15. mars 2026, kan maksimalt være gyldige i 200 dager. Grensen synker til 100 dager fra 15. mars 2027 og til 47 dager fra 15. mars 2029.
Er en security.txt-fil påkrevd?
RFC 9116 er en RFC av typen Informational, så etter standarden er det frivillig å publisere filen. Det koster lite å publisere den, og den gir forskere en tydelig måte å nå deg på.
Betyr en passiv skanning uten funn at butikken min er sikker?
Nei. Den viser at den offentlige konfigurasjonen ser riktig ut. Sårbarheter på serversiden, kontosikkerhet og feil i forretningslogikken krever andre typer testing.
Kilder
- Baseline Requirements for the Issuance and Management of Publicly-Trusted TLS Server Certificates, version 2.3.1 (åpnes i en ny fane), CA/Browser Forum, 4. oktober 2026
- Ballot SC-081v3: Introduce Schedule of Reducing Validity and Data Reuse Periods (åpnes i en ny fane), CA/Browser Forum, 11. april 2025
- Strict-Transport-Security (åpnes i en ny fane), MDN Web Docs, sist endret 11. september 2026
- CSP: frame-ancestors (åpnes i en ny fane), MDN Web Docs, sist endret 27. august 2026
- X-Content-Type-Options (åpnes i en ny fane), MDN Web Docs, sist endret 17. mars 2026
- Using HTTP cookies (åpnes i en ny fane), MDN Web Docs, sist endret 17. september 2026
- Mixed content (åpnes i en ny fane), MDN Web Docs, sist endret 15. august 2026
- HTTP Security Response Headers Cheat Sheet (åpnes i en ny fane), OWASP Cheat Sheet Series, hentet 22. oktober 2026
- CVE-2020-11022 (åpnes i en ny fane), NIST National Vulnerability Database, publisert 29. april 2020
- CVE-2020-11023 (åpnes i en ny fane), NIST National Vulnerability Database, publisert 29. april 2020
- CVE-2019-11358 (åpnes i en ny fane), NIST National Vulnerability Database, publisert 20. april 2019
- .jquery (åpnes i en ny fane), jQuery API Documentation, hentet 22. oktober 2026
- Updating core jQuery to version 3, part 2 (åpnes i en ny fane), Make WordPress Core, 5. november 2020
- RFC 9116: A File Format to Aid in Security Vulnerability Disclosure (åpnes i en ny fane), IETF, april 2022
- RFC 9989: Domain-Based Message Authentication, Reporting, and Conformance (DMARC) (åpnes i en ny fane), IETF, mai 2026
- Enabling secure connections to your Shopify store (åpnes i en ny fane), Shopify Help Center, hentet 22. oktober 2026
- Security (åpnes i en ny fane), Shopify, hentet 22. oktober 2026
- Hardening WordPress (åpnes i en ny fane), WordPress Developer Resources, hentet 22. oktober 2026
- Penetration testing (glossary) (åpnes i en ny fane), NIST Computer Security Resource Center, med henvisning til NIST SP 800-115 (september 2008), hentet 22. oktober 2026
Alle veiledninger
- Core Web Vitals for nettbutikker: LCP, INP og CLS forklartHva LCP, INP og CLS måler, grensene for god og dårlig ved 75-persentilen, labdata mot feltdata og de vanlige rettelsene i Shopify- og WooCommerce-butikker.
- Fått et ADA-kravbrev om nettstedet? Dette bør du sjekke førstHva et ADA-kravbrev om nettstedet ofte hevder, WCAGs rolle, hva du bør samle inn, hvorfor overlegg ikke retter koden og når du bør ringe advokat. Ikke juridisk råd.
- Sjekkliste for produktsider: dette stopper kundene fra å kjøpeSjekkliste for produktsiden basert på Baymard og WebAIM: pris, frakt og retur, bilder, anmeldelser, kjøpsknapp på mobil, popup-vinduer, søk og tastaturbruk.