Apa yang melindungi seorang penyewa, dinyatakan terus terang.
Tiada persijilan yang kami tidak pegang, tiada kata sifat yang menggantikan kawalan. Inilah yang dikuatkuasakan, di mana ia dikuatkuasakan, dan apa yang masih tiada.
Pengasingan bersifat struktur, bukan hasil pengawasan.
Setiap pertanyaan atas data milik sesebuah ruang kerja membawa id ruang kerja itu dalam syaratnya. Tiada laluan capaian tanpa skop yang boleh terlupa digunakan.
Kegagalan yang dihapuskan reka bentuk ini ialah yang paling biasa: sebuah sistem yang betul, dengan satu endpoint baharu yang ditulis tergesa-gesa lalu tertinggal klausa WHERE. Jika lapisan data enggan menjawab soalan yang tidak menamakan ruang kerja, endpoint itu tidak terkompil menjadi satu kebocoran — ia langsung tidak terkompil.
Ujian kebocoran bergaya penyerang memaku sifat ini dan bukannya mempercayai kebiasaan, kerana sesuatu kebiasaan hanya sebaik orang terakhir yang membaca fail itu.
internal/tenancy · migrations/0002
Sifat hanya-boleh-tambah log audit ada dalam pangkalan data, bukan dalam aplikasi.
Satu pencetus membangkitkan ralat pada setiap kemas kini atau padaman. Aplikasi yang memutuskan untuk tidak menulis semula sejarah ialah satu dasar; pangkalan data yang enggan menulis semula ialah satu kawalan.
Inilah perbezaan yang ditanya juruaudit dan lazimnya tidak dapat dijawab vendor. Jika satu-satunya yang menghalang suntingan ke belakang ialah “tiada laluan kod yang melakukannya”, maka satu skrip sokongan, satu migrasi, atau seorang pengendali dengan konsol boleh melakukannya, dan log tidak akan tahu.
internal/tenancy · migrations/0002 audit_log_immutable()
Kunci ditukar tanpa gangguan. Log masuk tahan pancingan data.
Penukaran kunci yang memerlukan tetingkap penyelenggaraan ialah penukaran yang tidak pernah berlaku.
- 01
Id kunci dengan tempoh sah bertindih
Kunci API dan kunci tandatangan webhook setiap ruang kerja membawa satu id kunci. Semasa penukaran, kedua-duanya sah, jadi anda beralih mengikut jadual sendiri dan membatalkan yang lama selepas itu.internal/tenancy · internal/outbox/sign.go
- 02
Passkey untuk ahli dan untuk pengendali
WebAuthn dengan pengesahan pengguna dan kelayakan boleh ditemui sebagai kewajipan — bukan pilihan, kerana token ini berdiri betul-betul di hadapan aliran wang. Log masuk boleh ditemui mencari akaun daripada kelayakan itu sendiri, jadi tiada apa yang ditaip dan tiada apa yang boleh dipancing.internal/passkey
- 03
Dua faktor melalui aplikasi pengesah, disimpan dengan betul
Rahsia TOTP tidak boleh dicincang — pengesahan perlu mengira semula kod daripadanya — jadi rahsia ahli dimeterai dengan AES-256-GCM di bawah subkunci khusus konteks, bukan disimpan terdedah. Pembilang bagi kod yang diterima ditulis semula, jadi satu kod tidak boleh digunakan semula dalam tempoh sahnya.internal/membertotp · internal/secretbox
- 04
Cincang jika boleh, meterai jika tidak
Kata laluan atau kod pemulihan dicincang, kerana platform hanya perlu menjawab “inikah dia?”. Rahsia yang perlu dibaca semula oleh platform pula dimeterai, dan simpanan yang wujud sebelum binaan itu sedang dipindahkan ke sana, bukan dibiarkan seperti asal.internal/secretbox
Tiada apa yang bocor melalui URL yang anda konfigurasi.
Destinasi sesuatu webhook, dari segi binaannya, ialah input yang dipengaruhi penyerang — ia URL yang ditaip penyewa, dan platform kemudiannya memanggilnya dari dalam rangkaiannya sendiri.
Penghantar menjalankan pengawal trafik keluar sebelum permintaan dihantar dan bukannya mempercayai nama hos; hanya susunan itu yang membantu: semakan selepas peleraian nama, atau semakan pada teksnya dan bukan pada alamat sebenar, ialah semakan yang memang direka untuk dilepasi oleh serangan DNS rebinding. Destinasi loopback dan rangkaian persendirian hanya dibenarkan dalam sandbox dan ujian hujung ke hujung, dan pelonggaran itu ialah bendera yang dinyatakan secara jelas, bukan tekaan persekitaran.
internal/outbox/ssrf.go · internal/outbox/dispatcher.go
Kami bukan pemegang amanah aset, dan kodnya enggan menjadi begitu.
Tiada dana ahli. Tiada kunci persendirian. Tiada kelayakan platform di dalam saluran bayaran seorang penyewa.
Ahli membayar kepada anda
internal/rails
Konfigurasi menolak milik kami
internal/rails
Tuntutan mengarah, tidak pernah memindahkan
internal/claims
Pengesahan tanpa menyimpan dokumen.
Sesi pembekal berjalan pada akaun anda sendiri. Yang kembali ialah satu keputusan dan satu pemegang yang tidak boleh dipatah balik.
Pemegang itu cukup untuk menguatkuasakan seorang satu kedudukan, dan tidak lebih. Ia tidak cukup untuk membina semula sesuatu identiti, dan itulah intinya: cara paling selamat menyimpan imbasan pasport ialah dengan tidak menyimpannya, dan satu kebocoran tidak boleh mendedahkan data yang memang tidak pernah disimpan.
internal/verification
Perkara yang tidak kami dakwa.
Jika anda sedang mengisi borang penilaian vendor, inilah baris yang kami akan gagal. Lebih baik tahu di sini daripada pada bulan keempat.
See /contact#security
Hantar borang penilaian, atau ambil sandbox dan lihat sendiri.
Kedua-duanya baik. Salah satunya lebih pantas.