Cek keamanan website toko online tanpa meretas apa pun

Pemeriksaan keamanan pasif toko online: masa berlaku sertifikat TLS, HSTS, CSP, nosniff, flag cookie, mixed content, jQuery usang, security.txt, DMARC.

Tim Redaksi FixReports10 menit baca

Anda bisa memeriksa banyak aspek keamanan toko online dari luar, cukup dengan membaca apa yang sudah dikirim situs tersebut ke setiap pengunjung: sertifikat TLS, redirect, header respons HTTP, cookie, skrip yang dimuat, dan record DNS publiknya. Pemeriksaan pasif ini tidak mengirim lalu lintas serangan dan tidak memerlukan login, sehingga bebannya pada toko tidak lebih besar daripada kunjungan biasa. Pemeriksaan ini menemukan celah konfigurasi seperti sertifikat yang hampir kedaluwarsa, HSTS yang tidak ada, cookie yang tidak aman, mixed content, atau versi jQuery dengan kerentanan yang sudah diketahui. Pemeriksaan ini bukan uji penetrasi (penetration test) dan tidak bisa membuktikan bahwa sebuah toko aman.

Poin penting

  • Sertifikat TLS tepercaya publik yang diterbitkan sejak 15 Maret 2026 hanya boleh berlaku paling lama 200 hari, lalu turun menjadi 100 hari pada Maret 2027 dan 47 hari pada Maret 2029 (CA/Browser Forum (terbuka di tab baru)).
  • Browser mengabaikan header HSTS jika dikirim melalui HTTP biasa (MDN (terbuka di tab baru)).
  • Direktif CSP frame-ancestors tidak berfungsi di dalam tag <meta>; direktif ini harus dikirim sebagai header respons (MDN (terbuka di tab baru)).
  • Versi jQuery sebelum 3.5.0 terdampak dua kerentanan XSS, dan CISA memasukkan salah satunya, CVE-2020-11023, ke katalog Known Exploited Vulnerabilities pada 23 Januari 2025 (NVD (terbuka di tab baru)).
  • File security.txt harus berisi kolom Contact dan Expires dan ditempatkan di /.well-known/security.txt (RFC 9116 (terbuka di tab baru)).

Apa yang dimaksud dengan pemeriksaan keamanan pasif?

Pemeriksaan pasif hanya membaca apa yang dikembalikan situs atau DNS-nya untuk permintaan biasa.

Artinya, memuat halaman publik, membaca sertifikat dan header respons, mendaftar cookie dan skrip yang dipasang sebuah halaman, serta melakukan kueri record DNS publik. Pemeriksaan pasif tidak menebak kata sandi, tidak mengirim payload injeksi, tidak mencoba-coba URL admin, dan tidak memindai port. Semua yang dijelaskan di bawah ini bisa dilakukan dengan browser, curl, openssl, dan dig.

Bagaimana cara memeriksa sertifikat TLS dan masa berlakunya?

Baca langsung tanggal dan nama yang tercantum di sertifikat, dan pastikan perpanjangannya berjalan otomatis.

echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null \
  | openssl x509 -noout -subject -issuer -dates

Pastikan notAfter masih cukup jauh di masa depan, sertifikat mencakup example.com dan www.example.com jika Anda memakai keduanya (penampil sertifikat di browser mencantumkan nama-nama tersebut), dan browser tidak menampilkan peringatan apa pun. Masa berlaku sertifikat makin pendek berdasarkan CA/Browser Forum Baseline Requirements (bagian 6.3.2, versi 2.3.1 per Oktober 2026), menyusul Ballot SC-081v3 (terbuka di tab baru) yang diadopsi pada 11 April 2025:

Sertifikat diterbitkanMasa berlaku maksimum
Sebelum 15 Maret 2026398 hari
15 Maret 2026 hingga 14 Maret 2027200 hari
15 Maret 2027 hingga 14 Maret 2029100 hari
Mulai 15 Maret 202947 hari

Masa berlaku yang pendek membuat perpanjangan manual berisiko, jadi pastikan layanan hosting atau alat sertifikat Anda memperpanjangnya secara otomatis. Pastikan juga HTTP biasa dialihkan ke HTTPS:

curl -sI http://example.com/ | grep -i -E "^HTTP|^location"

Yang Anda harapkan adalah respons 301 (atau 308) dengan header location yang diawali https://.

Header keamanan apa saja yang sebaiknya dikirim toko online?

Sekumpulan kecil header respons bisa memblokir serangan umum di sisi browser dengan biaya yang hampir nol.

HeaderFungsinyaNilai umumSumber
Strict-Transport-SecurityMemberi tahu browser untuk hanya menggunakan HTTPS dan mencegah pengguna mengabaikan error sertifikatmax-age=31536000; includeSubDomainsMDN (terbuka di tab baru)
Content-Security-Policy: frame-ancestorsMengatur situs mana yang boleh menyematkan halaman Anda, sehingga melindungi dari clickjackingframe-ancestors 'self'MDN (terbuka di tab baru)
X-Frame-OptionsKontrol framing versi lama; menurut OWASP, frame-ancestors membuatnya usang di browser yang mendukungDENY atau SAMEORIGINOWASP (terbuka di tab baru)
X-Content-Type-OptionsMencegah MIME sniffing dan memblokir skrip serta stylesheet yang dikirim dengan tipe yang salahnosniffMDN (terbuka di tab baru)
Referrer-PolicyMembatasi seberapa banyak bagian URL Anda yang dikirim ke situs lainstrict-origin-when-cross-originOWASP
X-XSS-ProtectionHeader filter XSS browser; menurut OWASP, header ini justru bisa menimbulkan kerentanan XSS di situs yang sebenarnya amanJangan dipasang, atau 0OWASP

Periksa apa yang dikirim toko Anda:

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

Ada dua hal yang perlu diperhatikan. includeSubDomains memblokir subdomain mana pun yang hanya berfungsi lewat HTTP, jadi periksa subdomain Anda terlebih dahulu. Preloading HSTS mewajibkan max-age minimal 31536000 dan includeSubDomains, jadi tambahkan preload hanya jika setiap subdomain sudah siap untuk HTTPS. CSP lengkap yang membatasi skrip layak dimiliki, tetapi OWASP mencatat bahwa CSP rumit untuk dikonfigurasi dan dipelihara, dan toko yang memakai banyak aplikasi perlu mengujinya dengan cermat.

Cookie sesi dan keranjang sebaiknya memiliki ketiga atribut tersebut, dan Anda bisa melihatnya di header respons Set-Cookie.

AtributEfeknya (menurut MDN (terbuka di tab baru))Kapan penting
SecureHanya dikirim melalui HTTPS; situs yang memakai HTTP biasa tidak bisa memasangnyaSetiap cookie di toko yang memakai HTTPS
HttpOnlyJavaScript tidak bisa membacanya melalui document.cookie, sehingga membantu melindungi dari XSSSesi login dan keranjang
SameSite=Lax atau StrictMembatasi kapan cookie dikirim pada permintaan lintas situsSesi; Strict cocok untuk cookie autentikasi dan keranjang
SameSite=NoneDikirim pada permintaan lintas situs; harus dikombinasikan dengan SecureHanya fitur pihak ketiga tersemat yang memerlukannya

Jika atribut SameSite tidak diatur, browser memperlakukan cookie sebagai Lax. Cookie yang perlu dibaca oleh skrip Anda sendiri tidak bisa diberi HttpOnly, jadi fokuslah pada cookie yang mengidentifikasi pelanggan yang sedang login atau admin.

curl -sI https://example.com/ | grep -i "^set-cookie"

Developer tools di browser menampilkan informasi yang sama, termasuk cookie yang dipasang oleh skrip setelah halaman dimuat.

Bagaimana cara menemukan mixed content?

Mixed content adalah resource apa pun yang dimuat melalui HTTP di halaman yang disajikan melalui HTTPS, dan konsol browser mencantumkannya.

MDN (terbuka di tab baru) membaginya menjadi dua kelompok. Gambar, audio, dan video termasuk "upgradable": browser secara otomatis memintanya melalui HTTPS. Skrip, stylesheet, iframe, font, dan permintaan fetch() termasuk "blockable": browser memblokirnya, sehingga apa pun yang bergantung padanya akan rusak. Permintaan yang di-upgrade ke alamat IP langsung juga diblokir.

Untuk menemukannya, buka konsol di template utama Anda (beranda, koleksi, produk, keranjang) dan cari http:// di kode tema, konten halaman, dan pengaturan aplikasi. Pusat bantuan Shopify menyatakan bahwa setiap halaman toko yang memiliki aset yang tidak dikirim melalui HTTPS dianggap tidak aman (terbuka di tab baru), dan menyarankan agar aset di-hosting di Shopify atau disajikan melalui HTTPS. Di WooCommerce, periksa konten postingan lama dan opsi tema jika situs Anda pernah berjalan di http://.

Bagaimana cara mendeteksi library JavaScript usang dengan CVE yang sudah diketahui?

Buat daftar library yang dimuat setiap halaman, baca versinya, dan bandingkan dengan National Vulnerability Database.

Mulailah dari jQuery. Di konsol browser, $.fn.jquery mengembalikan versi yang dimuat (jQuery API (terbuka di tab baru)). Versi yang perlu ditandai:

CVEVersi yang terdampakMasalahSkor NVD (v3.1)
CVE-2020-11022 (terbuka di tab baru)1.12.0 hingga sebelum 3.5.0Meneruskan HTML yang tidak tepercaya ke method seperti .html() atau .append() bisa menjalankan kode6,1 Medium
CVE-2020-11023 (terbuka di tab baru)1.0.3 hingga sebelum 3.5.0Sama, untuk HTML yang berisi elemen <option>; masuk katalog KEV milik CISA sejak 23 Januari 20256,1 Medium
CVE-2019-11358 (terbuka di tab baru)Sebelum 3.4.0Prototype pollution melalui jQuery.extend(true, ...)6,1 Medium

Kedua masalah tahun 2020 tersebut sudah diperbaiki di jQuery 3.5.0. Versi yang rentan berarti kode yang bermasalah ada di situs Anda; apakah kode itu bisa dieksploitasi bergantung pada cara situs meneruskan data ke kode tersebut. WordPress sudah menyertakan jQuery 3.5.1 sejak versi 5.6 (terbuka di tab baru), jadi jQuery versi lama di toko WooCommerce menandakan WordPress yang belum diperbarui atau tema maupun plugin yang memuat salinan jQuery-nya sendiri. Di Shopify, periksa file tema Anda dan aplikasi yang menyisipkan skrip.

Apa itu security.txt dan apakah toko Anda memerlukannya?

security.txt adalah file teks biasa yang memberi tahu peneliti keamanan cara melaporkan kerentanan kepada Anda.

RFC 9116 (terbuka di tab baru) (April 2022, sebuah RFC berstatus Informational, jadi mengikutinya bersifat sukarela) menyatakan bahwa file ini harus disajikan melalui HTTPS di /.well-known/security.txt sebagai text/plain. Contact dan Expires wajib ada, dan RFC tersebut menyarankan tanggal Expires kurang dari satu tahun ke depan.

Contact: mailto:security@example.com
Expires: 2027-09-30T23:00:00.000Z
Preferred-Languages: en
Policy: https://example.com/security-policy

Di WooCommerce, Anda bisa menaruh file ini di server Anda. Di platform yang di-hosting, periksa apakah Anda bisa memublikasikan file di path tersebut; jika tidak bisa, kontak keamanan yang diberi label jelas di halaman kontak Anda tetap membantu.

Bagaimana DMARC melindungi toko Anda dari spoofing email?

DMARC memungkinkan Anda meminta penyedia layanan email untuk mengarantina atau menolak email yang memakai domain Anda di alamat From tanpa lolos SPF atau DKIM yang selaras.

Record dengan p=none hanya mengumpulkan laporan; record itu tidak menghentikan email palsu. Pelanggan mengharapkan konfirmasi pesanan dan reset kata sandi dari domain Anda, jadi email phishing yang menampilkan domain Anda persis sama layak diblokir. Periksa kebijakan Anda dengan dig +short TXT _dmarc.example.com, dan lihat RFC 9989 (terbuka di tab baru) untuk spesifikasinya. DMARC tidak mencakup domain tiruan yang mirip (lookalike domain), hanya domain yang memublikasikan record tersebut.

Apa yang dikelola Shopify, dan apa yang Anda kendalikan di WooCommerce?

Shopify menjalankan server di balik storefront-nya, sedangkan toko WooCommerce yang di-hosting sendiri menyerahkan pengaturan server kepada Anda dan penyedia hosting Anda.

PemeriksaanShopifyWooCommerce (di-hosting sendiri)
Sertifikat TLSGratis untuk semua domain yang ditambahkan ke Shopify (terbuka di tab baru); bisa memakan waktu hingga 48 jam untuk domain pihak ketigaPenyedia hosting Anda atau pengaturan Anda sendiri
Redirect HTTP ke HTTPSPlatformPengaturan web server, CDN, atau hosting
Header keamananDikirim oleh server ShopifyWeb server, CDN, atau plugin
Flag cookieCookie milik Shopify diatur oleh platform; cookie dari aplikasi dan tema menjadi tanggung jawab AndaWordPress core, plugin, dan server
Mixed content dan library JSTema, konten, dan aplikasi AndaTema, konten, dan plugin Anda
security.txt dan DMARCDomain dan DNS AndaDomain dan DNS Anda

Saat kami memeriksa beberapa storefront yang di-hosting Shopify pada Oktober 2026, responsnya menyertakan HSTS dengan max-age sekitar 91 hari, X-Content-Type-Options: nosniff, dan CSP dengan upgrade-insecure-requests, sementara frame-ancestors berbeda-beda antartoko. Shopify menyatakan bahwa mereka tersertifikasi patuh PCI DSS Level 1 (terbuka di tab baru). Tema dan aplikasi yang Anda pasang tetap menjadi tanggung jawab Anda.

Untuk WooCommerce, panduan hardening (terbuka di tab baru) WordPress menyarankan agar WordPress dan plugin selalu diperbarui, plugin yang tidak dipakai dihapus, dan Anda menanyakan langkah pengamanan apa saja yang diterapkan penyedia hosting Anda.

Mengapa ini bukan uji penetrasi?

Uji penetrasi secara aktif mencoba melakukan serangan; pemeriksaan pasif hanya mengamati.

NIST SP 800-115 mendefinisikan uji penetrasi sebagai pengujian keamanan di mana penguji meniru serangan dunia nyata untuk menemukan cara menembus fitur keamanan sebuah sistem (glosarium NIST (terbuka di tab baru)). Pemeriksaan pasif tidak bisa melihat celah di sisi server pada plugin, kata sandi admin yang lemah atau dipakai ulang, autentikasi dua faktor yang tidak diaktifkan, kontrol akses yang rusak, atau kode rentan yang tidak pernah muncul di sumber halaman. Gunakan pemeriksaan pasif sebagai acuan dasar yang bisa Anda ulangi kapan saja. Untuk jaminan yang lebih mendalam, pesanlah uji penetrasi dengan cakupan tertulis, pada sistem yang Anda miliki atau yang Anda berwenang untuk diuji.

Pemindaian gratis menjalankan pemeriksaan awal pada toko Anda. Laporan Keamanan Website mencakup pemeriksaan pasif dalam artikel ini, mulai dari TLS dan redirect hingga header, cookie, mixed content, library usang, security.txt, dan DMARC, lengkap dengan perbaikan untuk setiap temuan. Seperti tinjauan pasif lainnya, laporan ini tidak bisa menjamin bahwa sebuah toko aman.

Pertanyaan yang sering diajukan

Apakah pemeriksaan keamanan pasif membahayakan toko saya?

Tidak lebih dari kunjungan biasa. Pemeriksaan ini meminta halaman publik dan record DNS yang sama seperti yang diminta browser atau server email mana pun, dan tidak mencoba login atau mengirim payload serangan.

Bisakah saya menambahkan header keamanan di Shopify?

Header respons storefront berasal dari server Shopify, jadi hubungi Shopify Support jika ada header yang Anda butuhkan tetapi belum tersedia. Tag <meta> CSP di tema Anda bisa menambahkan beberapa direktif, tetapi MDN mencatat bahwa frame-ancestors tidak didukung di <meta>.

Apakah versi jQuery yang lama berarti toko saya sudah diretas?

Tidak. Itu berarti kode dengan kerentanan yang sudah diketahui sedang dimuat, sehingga risikonya meningkat jika situs meneruskan HTML yang tidak tepercaya ke method yang terdampak. Perbarui jQuery, atau hapus tema atau plugin yang memuatnya.

Berapa lama sertifikat TLS bisa berlaku sekarang?

Sertifikat tepercaya publik yang diterbitkan mulai 15 Maret 2026 hanya boleh berlaku paling lama 200 hari. Batas ini turun menjadi 100 hari mulai 15 Maret 2027 dan 47 hari mulai 15 Maret 2029.

Apakah file security.txt wajib ada?

RFC 9116 adalah RFC berstatus Informational, jadi memublikasikan file ini bersifat sukarela menurut standar tersebut. Biayanya murah dan file ini memberi peneliti cara yang jelas untuk menghubungi Anda.

Apakah hasil pemindaian pasif yang bersih berarti toko saya aman?

Tidak. Hasil itu menunjukkan bahwa konfigurasi publik Anda terlihat benar. Kerentanan di sisi server, keamanan akun, dan celah logika bisnis memerlukan pengujian lain.

Sumber