guest@websec ~ % man 01-introduction
01 · บทนำ
Rails ให้ค่าเริ่มต้นที่ปลอดภัยมา แต่ไม่มีเฟรมเวิร์กไหนทำให้แอปปลอดภัยได้เองทั้งหมด
ทำไม "เฟรมเวิร์กที่ปลอดภัย" ยังไม่พอ
เฟรมเวิร์กสมัยใหม่ escape HTML ใส่ CSRF token และ parameterize query ให้ ซึ่งกำจัดบั๊กได้ทั้งกลุ่ม แต่ยังไม่พอ ด้วยเหตุผล 3 ข้อ:
- คน SQL ดิบบรรทัดเดียว หรือ route admin ที่ลืมตรวจสิทธิ์ ก็ทำลายทุกอย่างได้ Rails เดาไม่ได้ว่าหน้าไหนควรเป็นส่วนตัว
- ทั้ง stack เซิร์ฟเวอร์ ฐานข้อมูล proxy CI บัญชีคลาวด์ ถ้ามีคนอ่าน
.envได้ เทมเพลตดีแค่ไหนก็ไม่ช่วย - เวลา การโจมตีและ CVE ใหม่ๆ มาทุกเดือน ความปลอดภัยคืองานดูแลต่อเนื่อง ไม่ใช่ทำครั้งเดียวจบ
bundler-audit สำหรับ CVE ของ gemการโจมตีเกิดขึ้นที่ไหนจริงๆ
การเจาะระบบจริงส่วนใหญ่ไม่ได้ถอดรหัสอะไร แต่เดินเข้ามาทางบั๊กธรรมดา: ลืมตรวจสิทธิ์ ไม่ตรวจ input คุกกี้ที่ส่งผ่าน HTTP
ผู้โจมตีเลือกทางที่ง่ายที่สุด ระบบแข็งแรงได้เท่าจุดที่อ่อนที่สุดเท่านั้น
เนื้อหาส่วนที่เหลือของคู่มือ
บทเรียนแบ่งเป็นห้าส่วน เรียงสำหรับทีมที่เพิ่งเริ่มเรื่องความปลอดภัย: injection มาก่อน (02–04 เริ่มจาก SQL injection ที่ทีมเราเคยโดน) ต่อด้วยบัญชีผู้ใช้และการควบคุมสิทธิ์ (05–09) ฝั่งเบราว์เซอร์ (10–12) ฝั่งเซิร์ฟเวอร์และ secret (13–17) และการดูแลระบบ (18–22) แบบทดสอบอยู่ท้ายสุด ให้อ่านตามลำดับ เพราะบทหลังๆ ต่อยอดจากบทก่อนหน้า