ตรงไปตรงมาเราพยายามไม่ให้ผ่าน codebase ของคุณเราพยายามเขียนเครื่องมือเพื่อทำสิ่งนั้นเพื่อเรา
ก่อนทฤษฎี การรักษาความปลอดภัยเป็นข้อกำหนดของระบบซอฟต์แวร์เช่นเดียวกับข้อกำหนดอื่น ๆ (ฟังก์ชั่นการใช้งานการเข้าถึงการทำงาน ฯลฯ ) มันควรได้รับการพิจารณาในทุกขั้นตอนของกระบวนการทางวิศวกรรมซอฟต์แวร์ตั้งแต่การรวบรวมข้อกำหนดไปจนถึงการปรับใช้และการบำรุงรักษา แน่นอนนี่เป็นไปได้และมีคำแนะนำเพื่อช่วยให้ทีมงานโครงการซอฟต์แวร์ทำเช่นนั้น แม้ว่าผมส่วนใหญ่ทำงานร่วมกับนักพัฒนา iOS ของคุณ, คำอธิบายที่ชื่นชอบของ "วงจรการพัฒนาระบบรักษาความปลอดภัย" จากไมโครซอฟท์กด
ในรุ่นนี้การรักษาความปลอดภัยของแอปพลิเคชั่นเริ่มต้นขึ้นเมื่อเราพยายามดึงความต้องการออกจากผู้ใช้ของเรา เราต้องค้นหาความปลอดภัยและความเป็นส่วนตัวของพวกเขาซึ่งไม่ใช่เรื่องง่ายเพราะเราเป็นผู้เชี่ยวชาญไม่ใช่ผู้ใช้และที่พวกเขาเข้าใจข้อกำหนดด้านความปลอดภัยของพวกเขาพวกเขาอาจพบว่ามันยากที่จะแสดง นอกจากนี้เรายังต้องค้นหาความเสี่ยงที่ซอฟต์แวร์จะถูกเปิดเผยในการปรับใช้และระดับความเสี่ยงที่ยอมรับได้
เราออกแบบแอปพลิเคชันของเราพร้อมตอบสนองความต้องการเหล่านั้นในใจ เราเขียนโค้ดด้วยตาเพื่อสนองความต้องการเหล่านั้นและหลีกเลี่ยงความเสี่ยงเพิ่มเติมที่เกี่ยวข้องกับข้อผิดพลาดด้านความปลอดภัยระดับรหัส เราทดสอบซอฟต์แวร์เพื่อให้แน่ใจว่ารูปแบบความปลอดภัยของเรานั้นสอดคล้องกับสิ่งที่เราสร้างขึ้นจริงจากนั้นเราปรับใช้ซอฟต์แวร์ในแบบที่ตรงกับสมมติฐานที่เราทำเกี่ยวกับสภาพแวดล้อมเมื่อเราออกแบบสิ่งนั้น ในที่สุดเราให้การสนับสนุนและการบำรุงรักษาที่ช่วยให้ผู้ใช้งานซอฟต์แวร์ในลักษณะที่สอดคล้องกับข้อกำหนดด้านความปลอดภัยของพวกเขาและซึ่งช่วยให้พวกเขา (และเรา) เพื่อตอบสนองต่อการเปลี่ยนแปลงใหม่ในความเสี่ยงที่นำเสนอ
ตกลงมากสำหรับทฤษฎี ในทางปฏิบัติสำหรับเหตุผลที่อธิบายได้ดีมาก (ถึงแม้ว่าจะไม่ใช่ในเชิงเทคนิค ) ในGeekonomicsและส่วนใหญ่เป็นเพราะพวกเขามีวิธีที่ บริษัท ซอฟต์แวร์มีแรงจูงใจสิ่งต่าง ๆ ข้างต้นส่วนใหญ่ไม่ได้เกิดขึ้น เราได้สิ่งนี้มาแทน นักพัฒนาจะ:
- จ้างคนรักษาความปลอดภัยหรือ gal เพื่อนำเสนอเมื่อพวกเขาประมูลสัญญาเพื่อแสดงว่าพวกเขา "ได้รับ" ความปลอดภัย
- เขียนซอฟต์แวร์
- จ้างพนักงานรักษาความปลอดภัยหรือ gal เพื่อตรวจสอบซอฟต์แวร์ก่อนเผยแพร่แก้ไขปัญหาต่าง ๆ ที่เกิดขึ้นในขั้นตอนที่ 2
- แก้ไขทุกอย่างอื่นหลังจากการปรับใช้
ดังนั้นสิ่งที่คนส่วนใหญ่การรักษาความปลอดภัยแอปมันทำตามที่คุณบอกว่าการหาข้อบกพร่อง นี่เป็นการตรวจสอบโค้ดที่น่ายกย่อง แต่เป็นการทบทวนโค้ดที่เพ่งความสนใจไปมากโดยผู้ที่มีความเชี่ยวชาญในข้อผิดพลาดหลายประเภทรีวิวนี้มองหาดังนั้นยังคงมีคุณค่าในการได้รับความช่วยเหลือจากภายนอกในการทำเช่นนั้น นั่นเป็นกฎทั่วไปของการกรีดแน่นอนให้คนอื่นมาทดสอบว่าใครไม่เกี่ยวข้องกับการทำสิ่งนั้น
ถ้าเรายอมรับข้างต้นว่าเป็นจริงแล้วมันก็เป็นไปตามที่คนตัดสินใจซื้อมีแนวโน้มที่จะถือเอา "คนรักษาความปลอดภัยที่มีความสามารถ" ด้วย "พบข้อบกพร่องมากมาย" ผู้ที่ทำให้คอมพิวเตอร์ทำงานให้พวกเขาจะพบข้อผิดพลาดมากกว่าผู้ที่ไม่ทำดังนั้นพวกเขาจึงต้องพึ่งพาเครื่องมือการวิเคราะห์แบบคงที่และจะใช้เวลามากขึ้นในการขยายเครื่องมือมากกว่าการเข้ารหัสสำหรับปัญหาเฉพาะสำหรับลูกค้าที่เฉพาะเจาะจง จากนั้นเราสรุปได้ว่าคนที่รักษาความปลอดภัยแอปมีแนวโน้มที่จะเขียนเครื่องมือในการอ่านรหัสมากกว่าที่จะอ่านรหัส
** คำเตือน: อะไรคือความเห็นส่วนตัวและการเก็งกำไร **
ความจริงแตกสลาย คุณจะสังเกตเห็นว่าทฤษฎีความปลอดภัยของซอฟต์แวร์นั้นเกี่ยวกับการระบุและการตอบสนองต่อความเสี่ยงของการพึ่งพาระบบซอฟต์แวร์ในขณะที่การฝึกฝนนั้นเกี่ยวกับการค้นหาข้อบกพร่องให้ได้มากที่สุด แน่นอนว่าจะยังคงลดความเสี่ยง แต่เป็นผลข้างเคียงเท่านั้น ประเด็นของเกมมีความสำคัญน้อยกว่า "การชนะ" เกมดังนั้นกฎจะเปลี่ยนเพื่อให้ง่ายต่อการชนะ
คุณในฐานะนักพัฒนาซอฟต์แวร์สามารถทำอะไรได้บ้าง เล่นเกมตามกฎดั้งเดิม ค้นหาใครบางคนในทีมของคุณ (โดยเฉพาะอย่างยิ่งในทีมของคุณมากกว่าผู้รับเหมาเพื่อให้พวกเขามีแรงจูงใจที่จะให้ผลลัพธ์ระยะยาวมากกว่าการชนะอย่างรวดเร็ว) ที่เข้าใจถึงความสำคัญของการรักษาความปลอดภัยและฝึกฝน bejeezus จากพวกเขา ให้ความรับผิดชอบแก่บุคคลนั้นในการกำหนดทีมงานในการจัดหาการรักษาความปลอดภัยแบบ end-to-end ตามที่อธิบายไว้ในตอนต้นของคำตอบของฉัน
นอกจากนี้ให้คนที่มีอำนาจที่จะปฏิบัติตามผ่าน หากการออกแบบไม่แสดงข้อกำหนดด้านความปลอดภัยจะต้องมีการแก้ไข หากการใช้งานไม่เป็นไปตามข้อกำหนดด้านความปลอดภัยจะต้องไม่นำออกใช้ ผู้รักษาความปลอดภัยของคุณสามารถทำการพิพากษาได้ แต่ต้องได้รับอนุญาตให้ดำเนินการตามคำตัดสินนั้น ฉันรู้ว่าสิ่งนี้อาจฟังดูเหมือนพนักงานรักษาความปลอดภัยที่พูดว่า "ความปลอดภัยของ OMFG เป็นสิ่งที่สำคัญที่สุด" แต่นั่นไม่ใช่สิ่งที่ฉันหมายถึง หากผลิตภัณฑ์ของคุณไม่ตรงตามฟังก์ชันการทำงานการใช้งานหรือข้อกำหนดด้านประสิทธิภาพคุณก็ไม่ควรปล่อยสิ่งนั้น
ทำไมคุณต้องการทำเช่นนั้น? มันควรจะถูกกว่า: เราทุกคนเห็นแล้ว (และอาจเสนอราคา +10 ตัวแทน) ตาราง Code Complete ซึ่งข้อบกพร่องมีราคาแพงกว่าในภายหลังที่คุณแก้ไขใช่ไหม? ข้อบกพร่องด้านความปลอดภัยที่ดีก็มีข้อบกพร่องเช่นกัน ฉันเป็นกฏของโลกแห่งความเป็นจริงของเกมส่วนใหญ่เป็นปัญหาในข้อกำหนดที่ได้รับการแก้ไขในการบำรุงรักษา มันถูกหรือเปล่า
ตกลงตอนนี้ฉันสามารถเป็นปืนรักษาความปลอดภัยสำหรับทำอะไรได้บ้าง ปรากฎว่าฉันสามารถปฏิเสธที่จะเล่นตามกฎที่แก้ไขเพิ่มเติมได้เช่นกัน ฉันสามารถบอกนักพัฒนาได้ว่ามันคือทั้งหมดที่เกี่ยวกับการลดความเสี่ยงซึ่งสามารถทำได้ทุกขั้นตอนจากนั้นฉันสามารถช่วยพวกเขาทำเช่นนั้นได้