ประเด็นสำคัญ
- ข้อมูลของแต่ละร้านถูกแยกภายในตัวฐานข้อมูลเอง ไม่ใช่เฉพาะในแอป
- รหัสผ่านถูกแฮชด้วย scrypt หากล้มเหลวซ้ำหลายครั้ง บัญชีจะถูกล็อกเป็นเวลา 15 นาที
- เซสชันหมุนเวียนทุกครั้งที่รีเฟรช และหากมีการใช้เซสชันเดิมซ้ำ ห่วงโซ่การเข้าสู่ระบบทั้งหมดจะสิ้นสุดลง
- บันทึกออเดอร์ เงินสด คะแนน และการตรวจสอบเพิ่มได้อย่างเดียว
ทุกร้านมีพื้นที่ของตนเอง
ทุกร้านทำงานบนแพลตฟอร์มเดียว แต่ฐานข้อมูลเป็นผู้บังคับการแยกข้อมูล ทุกตารางของร้านเปิดใช้และบังคับใช้ความปลอดภัยระดับแถว (row-level security) และทุกคำขอทำงานในทรานแซกชันที่กำหนดไว้สำหรับร้านเดียว บัญชีที่แอปพลิเคชันใช้ไม่สามารถข้ามกฎเหล่านั้นได้
มีบทบาทภายในเพียง 2 บทบาทที่ได้รับอนุญาตให้ข้ามกฎดังกล่าวสำหรับงานเฉพาะ ได้แก่ งานเบื้องหลัง ซึ่งทำได้เพียงดูรายชื่อร้านที่ใช้งานอยู่ก่อนจะทำงานทีละร้าน และศูนย์ควบคุมของทีม SCALE ซึ่งไม่มีสิทธิ์เข้าถึงที่อยู่ของลูกค้า ตำแหน่งของออเดอร์ ค่าแฮชของรหัสผ่าน หรือบันทึกการตรวจสอบของร้านอาหารเอง
การเข้าสู่ระบบและรหัสผ่าน
- รหัสผ่านมีความยาว 8 ถึง 128 อักขระ และจัดเก็บเป็นค่าแฮชแบบ scrypt พร้อมค่า salt แบบสุ่ม และเปรียบเทียบด้วยเวลาคงที่
- ใส่รหัสผ่านผิด 5 ครั้งจะล็อกบัญชีเป็นเวลา 15 นาที การเข้าสู่ระบบด้วยบัญชีที่ไม่มีอยู่ใช้เวลาเท่ากัน จึงไม่เปิดเผยว่ามีบัญชีใดอยู่บ้าง
- จำนวนครั้งที่พยายามเข้าสู่ระบบยังถูกจำกัดต่อที่อยู่ในช่วง 15 นาที ได้แก่ 10 ครั้งสำหรับพนักงาน 60 ครั้งสำหรับลูกค้า และการลงทะเบียนลูกค้าใหม่ 5 ครั้ง ทุกเซิร์ฟเวอร์ใช้ตัวนับร่วมกัน
- รหัสยืนยันมี 6 หลัก หมดอายุหลังจาก 10 นาที และลองได้จำนวนครั้งจำกัด
- เปิดใช้การป้องกันบอตของ Cloudflare สำหรับการเข้าสู่ระบบและการสั่งออเดอร์ได้
เซสชันที่นำกลับมาใช้ซ้ำไม่ได้
การเข้าสู่ระบบจะได้รับโทเค็นการเข้าถึงอายุสั้น (ค่าเริ่มต้น 15 นาที) และโทเค็นรีเฟรช ทุกการรีเฟรชจะแทนที่โทเค็นรีเฟรชด้วยโทเค็นใหม่ หากมีการนำโทเค็นเก่ากลับมาใช้อีก ห่วงโซ่เซสชันทั้งหมดจะสิ้นสุดลง ซึ่งป้องกันไม่ให้โทเค็นที่ถูกขโมยถูกใช้ได้นาน
ทุกคำขอยังตรวจสอบว่าเซสชันยังใช้งานอยู่ การนำพนักงานออก การเปลี่ยนรหัสผ่าน หรือการลดบทบาทจึงทำให้พนักงานคนนั้นออกจากระบบทุกอุปกรณ์ทันที สคริปต์ในหน้าเว็บอ่านคุกกี้ของคอนโซลไม่ได้ และเว็บไซต์อื่นไม่สามารถส่งคุกกี้เหล่านี้ได้
บทบาทที่ให้สิทธิ์เท่าที่จำเป็น
สิทธิ์การเข้าถึงประกอบขึ้นจากสิทธิ์ 29 รายการ ตั้งแต่การอ่านออเดอร์ไปจนถึงการยืนยันเงินสดหรือการจัดการพนักงาน เจ้าของร้านสร้างบทบาทจากสิทธิ์เหล่านี้ได้ทุกรูปแบบ และจำกัดพนักงานให้อยู่ในสาขาเดียวได้ ไม่มีใครให้สิทธิ์ที่ตนเองไม่มีได้ บทบาทในตัวแก้ไขไม่ได้ และเจ้าของร้านที่ใช้งานอยู่คนสุดท้ายจะถูกนำออกไม่ได้
คอนโซลซ่อนสิ่งที่บทบาทนั้นใช้ไม่ได้ แต่เป็นเพียงเพื่อความชัดเจนเท่านั้น เซิร์ฟเวอร์ตรวจสอบสิทธิ์ สาขา และการเป็นสมาชิกในทุกการดำเนินการ
บันทึกที่เขียนทับไม่ได้
การเปลี่ยนสถานะออเดอร์ สมุดบัญชีคะแนน การเคลื่อนไหวของสต็อก ประวัติราคา และบันทึกการตรวจสอบ เพิ่มได้อย่างเดียว ฐานข้อมูลปฏิเสธการแก้ไขหรือการลบทุกกรณี การแก้ไขข้อผิดพลาดจึงทำโดยเพิ่มรายการใหม่ที่มองเห็นได้
เคารพข้อมูลของลูกค้า
- ระบบเก็บตำแหน่งของออเดอร์เฉพาะขณะที่เปิดแอปอยู่และได้รับความยินยอม และจะลบหลังจาก 180 วัน
- ลูกค้าลบบัญชีของตนได้จากเว็บไซต์หรือแอป เมื่อลบแล้ว ที่อยู่ ตำแหน่ง อุปกรณ์ การแจ้งเตือน และรหัสผ่านจะถูกลบออก และโปรไฟล์จะถูกทำให้เป็นข้อมูลนิรนาม
- เพื่อป้องกันไม่ให้บุคคลเดิมใช้สิทธิ์ข้อเสนอสำหรับลูกค้าใหม่ซ้ำอีก ระบบจะเก็บไว้เพียงลายนิ้วมือดิจิทัลที่ได้รับการปกป้องของหมายเลขโทรศัพท์และอีเมลเท่านั้น