Security
Kawalan Keselamatan Maklumat
Rekod OEI mengandungi bukti keselamatan makanan dan penilaian operasi. Kawalan di bawah ialah kawalan yang benar-benar dilaksanakan dalam sistem dan diuji dalam saluran pembinaan — bukan senarai hasrat. Di mana sesuatu belum diukur, belum wujud atau belum ditetapkan oleh pemilik, ia dinyatakan dengan jelas dalam §11.
1. Pengangkutan dan pengukuhan pelayar
- Semua trafik disajikan melalui HTTPS. HTTP Strict Transport Security ditetapkan pada 2 tahun termasuk subdomain.
- Content Security Policy mengehadkan sumber kepada origin sendiri: `object-src 'none'`, `frame-ancestors 'none'`, `base-uri 'self'`, `form-action 'self'` — halaman tidak boleh dibingkai atau menghantar borang ke destinasi luar.
- Header tambahan: nosniff, X-Frame-Options DENY, Referrer-Policy strict-origin-when-cross-origin, dan Permissions-Policy yang menutup kamera, mikrofon, geolokasi dan pembayaran kecuali di mana Runner memerlukannya.
- Respons API dihantar dengan `no-store` supaya tiada proksi perantaraan menyimpan data operasi.
2. Kredensial
- Kata laluan dan PIN 6 digit disimpan sebagai hash bcrypt sahaja. Nilai asal tidak boleh dibaca semula oleh sesiapa, termasuk pentadbir sistem.
- Kod OTP disimpan sebagai hash dengan tempoh sah pendek dan had percubaan.
- Token jemputan disimpan sebagai hash, sah untuk 72 jam, dan boleh digunakan sekali sahaja. Tamat tempoh dan penerbitan semula direkod dalam log audit.
- Pengesahan dua faktor berasaskan TOTP diwajibkan untuk peranan HQ (CEO/Admin, Operation Manager, QA); pendaftaran dipaksa sebelum akses diberikan.
- Rahsia tidak pernah diterima sebagai argumen baris arahan dan tidak pernah ditulis ke dalam log atau rekod audit.
3. Kawalan akses dan sesi
- Kawalan berasaskan peranan dengan skop cawangan dikuatkuasakan pada lapisan API dan pertanyaan pangkalan data, bukan hanya pada antara muka.
- Sesi tamat mengikut peranan — 8 hingga 24 jam — dan token yang tamat ditolak pada setiap permintaan.
- Pembatalan sesi disokong pada peringkat pangkalan data: menetapkan tanda masa pembatalan menolak semua token sedia ada dengan serta-merta, walaupun rahsia penandatanganan tidak berubah.
- Log masuk dan pengesahan OTP/PIN mempunyai had kadar dan lockout selepas percubaan gagal berulang.
- Peranti diikat kepada akaun. Peranti yang tidak dikenali disekat sehingga disahkan semula.
4. Pengasingan tugas
- Sistem menghalang pengguna yang sama daripada melaksanakan dan mengesahkan tindakan pembetulan bagi isu yang sama.
- Provisioning akaun memerlukan tiga individu berlainan: pemohon, pelulus dan pengaktif.
- Transisi status yang tidak sah ditolak di API dengan ralat, bukan sekadar disembunyikan daripada paparan.
5. Jejak audit
- Setiap penciptaan, perubahan dan penutupan direkod dengan pengguna, cap masa, nilai sebelum dan selepas, serta alamat IP.
- Log audit tidak boleh diubah atau dipadam melalui antara muka oleh mana-mana peranan, termasuk Admin.
- Skor menjadi tetap selepas penghantaran; pembetulan mencipta rekod pindaan berasingan dengan sebab dan pelulus.
- Baris pengguna tidak pernah dipadam — penamatan ialah penyahaktifan, supaya rantaian tanggungjawab kekal boleh dibaca bertahun-tahun kemudian.
6. Bukti foto
- Fail bukti tidak pernah disimpan dalam pangkalan data atau direktori keluaran. Ia berada dalam storan objek peribadi sahaja.
- Tiada URL awam dihasilkan. Satu-satunya cara membaca fail ialah rujukan bertandatangan yang tamat tempoh — lalai 15 minit.
- Apabila kredensial storan tiada, muat naik gagal dengan ralat yang jelas; sistem tidak pernah jatuh balik menulis ke cakera tempatan secara senyap.
- Metadata EXIF disimpan untuk mengesahkan masa penangkapan. Foto dengan cap masa di luar tetingkap inspeksi ditanda secara automatik untuk semakan.
7. Sandaran dan bukti pemulihan
- Sandaran pangkalan data bertimestamp diambil secara automatik sebelum setiap penempatan, dan boleh dijalankan pada bila-bila masa dengan satu arahan.
- Sandaran yang tidak diuji tidak dikira sebagai sandaran: prosedur bukti pemulihan mengambil sandaran baharu, memulihkannya ke dalam pangkalan data pakai buang, dan mengesahkan kiraan data master sebelum keputusan dilaporkan.
- Fail bukti berada dalam storan objek yang diuruskan oleh penyedia dengan versioning objek.
- Perkara yang belum ada: sasaran RPO/RTO yang diukur secara formal. Prosedur semasa membuktikan sandaran boleh dipulihkan, tetapi belum mengukur berapa lama pemulihan penuh ke produksi mengambil masa.
8. Saluran pembinaan dan pengurusan kelemahan
- Setiap tolakan kod menjalankan gate penuh terhadap MySQL 8 sebenar: semakan jenis, lint, ujian unit, sejarah migrasi dan smoke test hujung-ke-hujung.
- Pengimbas rahsia dijalankan ke atas pokok kerja dan seluruh sejarah git; ia melaporkan peraturan, fail dan baris sahaja — tidak pernah nilai yang dipadankan.
- Gate persekitaran gagal-tertutup menghalang aplikasi daripada boot jika tetapan pembangunan atau penyemaian demo dihidupkan dalam produksi.
- Enjin inspeksi mempunyai suis bunuh berasingan yang gagal-tertutup: ia dimatikan melainkan dihidupkan secara eksplisit dalam persekitaran.
- Kebergantungan disemak untuk kelemahan yang diketahui sebelum keluaran; tampalan kritikal dikenakan secepat mungkin selepas disahkan.
9. Tindak balas insiden
- Insiden keselamatan disiasat dan dibendung mengikut prosedur bertulis, dengan rekod insiden yang menyenaraikan nama rahsia, tarikh, tindakan dan hasil — tidak pernah nilai rahsia itu sendiri.
- Langkah pembendungan standard termasuk memutar rahsia yang terdedah dan membatalkan semua sesi sedia ada.
- Sofwah komited untuk memaklumkan individu yang terjejas dan Jabatan Perlindungan Data Peribadi (JPDP), Malaysia bagi pelanggaran data peribadi yang berisiko, secepat mungkin selepas ia disahkan.
10. Melaporkan kelemahan
- Saluran laporan kelemahan rasmi Belum ditetapkan. Sehingga pemilik menetapkan satu peti mel yang dipantau, laporkan melalui HQ Admin dalaman (saluran yang sama seperti Notis Privasi yang anda terima semasa mengaktifkan akaun), sertakan langkah untuk menghasilkan semula, dan tunggu pengesahan sebelum mendedahkannya kepada pihak lain.
- Kami tidak mengambil tindakan terhadap laporan yang dibuat dengan niat baik dan tanpa merosakkan data atau perkhidmatan.
11. Perkara yang kami TIDAK dakwa
- Kami tidak memegang pensijilan ISO 27001, SOC 2 atau pensijilan keselamatan pihak ketiga yang lain.
- Belum ada ujian penembusan bebas atau audit keselamatan luaran dijalankan ke atas sistem ini.
- Penyulitan data semasa rehat bergantung pada kawalan yang disediakan oleh penyedia hosting dan storan; ia bukan lapisan penyulitan tambahan yang dilaksanakan oleh aplikasi. Kredensial pengguna adalah pengecualian — ia sentiasa ter-hash.
- Kami tidak mendakwa sebarang tempoh simpanan data yang tetap. Tempoh simpanan Belum ditetapkan oleh pemilik sistem; yang boleh disahkan ialah rekod inspeksi, bukti dan log audit tidak mempunyai laluan pemadaman dalam aplikasi.
- Hubungan rasmi belum ditetapkan: alamat privasi, keselamatan dan undang-undang rasmi Belum ditetapkan. Kami tidak menyiarkan peti mel yang belum disahkan wujud dan dipantau, kerana peti mel yang tidak dibaca lebih buruk daripada ketiadaan alamat.
- Kami tidak mendakwa lokasi atau residensi data tertentu. Pernyataan residensi Belum ditetapkan; §10 Dasar Privasi menerangkan mekanisme sebenar dan menamakan pemproses rentas sempadan secara jujur.
- Polisi belum disahkan oleh pemilik. Sehingga pemilik menetapkan nilai yang tinggal dan merekodkan pengesahan, dokumen ini menerangkan mekanisme yang wujud dalam kod sahaja — ia bukan polisi korporat yang telah diluluskan.
Security · versi 2026-08-02 · Sofwah Arabic Grill Sdn. Bhd.